From 2b0b9aad131d92ff4b7f7e42a8c6ba87b42dd81c Mon Sep 17 00:00:00 2001
From: Temur Maisuradze <temur@grena.ge>
Date: Thu, 10 Dec 2020 13:24:26 +0400
Subject: [PATCH] logging and supervisord for cassandra and zookeeper

---
 inventories/filebeat                          |  3 +-
 roles/build/files/cassandrasupervisord.conf   | 32 +++++++++++++++++++
 roles/build/files/zookeepersupervisord.conf   | 30 +++++++++++++++++
 roles/build/templates/cassandra/Dockerfile.j2 |  5 +--
 roles/build/templates/zookeeper/Dockerfile.j2 |  8 +++--
 roles/cassandra/tasks/main.yml                |  8 +++--
 roles/docker/tasks/cassandra.yml              |  1 -
 7 files changed, 78 insertions(+), 9 deletions(-)
 create mode 100644 roles/build/files/cassandrasupervisord.conf
 create mode 100644 roles/build/files/zookeepersupervisord.conf

diff --git a/inventories/filebeat b/inventories/filebeat
index 81047ba..067871d 100644
--- a/inventories/filebeat
+++ b/inventories/filebeat
@@ -9,6 +9,7 @@ dsoclab-kibana ansible_connection=docker FILEBEAT_FILES='["/usr/share/kibana/kbl
 dsoclab-keycloak ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="keycloak" FILEBEAT_LOG_FORMAT="text"
 dsoclab-mysql ansible_connection=docker FILEBEAT_FILES='["/var/opt/rh/rh-mariadb103/log/mariadb/mariadb.log"]' FILEBEAT_LOG_TYPE="mysql" FILEBEAT_LOG_FORMAT="text"
 dsoclab-haproxy ansible_connection=docker FILEBEAT_SYSLOG_PORT=9000 FILEBEAT_LOG_TYPE="haproxy" FILEBEAT_LOG_FORMAT="text"
-#dsoclab-zookeeper ansible_connection=docker FILEBEAT_FILES='[""]'
+dsoclab-zookeeper ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="zookeeper" FILEBEAT_LOG_FORMAT="text"
 dsoclab-cortex ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="cortex" FILEBEAT_LOG_FORMAT="text"
 dsoclab-thehive ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="thehive" FILEBEAT_LOG_FORMAT="text"
+dsoclab-cassandra ansible_connection=docker FILEBEAT_FILES='["/var/log/supervisor/*.log"]' FILEBEAT_LOG_TYPE="cassandra" FILEBEAT_LOG_FORMAT="text"
diff --git a/roles/build/files/cassandrasupervisord.conf b/roles/build/files/cassandrasupervisord.conf
new file mode 100644
index 0000000..fd57452
--- /dev/null
+++ b/roles/build/files/cassandrasupervisord.conf
@@ -0,0 +1,32 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:cassandra]
+directory=/usr/share/cassandra
+user=cassandra
+group=cassandra
+environment = CASSANDRA_HOME="/usr/share/cassandra",CASSANDRA_CONF="/usr/share/cassandra/conf",CASSANDRA_INCLUDE="/usr/share/cassandra/cassandra.in.sh"
+command=/bin/bash -c '/usr/sbin/cassandra -f'
+autostart=false
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/cassandra_stderr.log
+stdout_logfile = /var/log/supervisor/cassandra_stdout.log
+
diff --git a/roles/build/files/zookeepersupervisord.conf b/roles/build/files/zookeepersupervisord.conf
new file mode 100644
index 0000000..3a407c8
--- /dev/null
+++ b/roles/build/files/zookeepersupervisord.conf
@@ -0,0 +1,30 @@
+[unix_http_server]
+file=/tmp/supervisor.sock
+
+[supervisord]
+pidfile=/tmp/supervisord.pid
+nodaemon=true
+logfile=/var/log/supervisor/supervisord.log
+logfile_maxbytes=10MB
+logfile_backups=10
+loglevel=info
+childlogdir=/var/log/supervisor/
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///tmp/supervisor.sock
+
+[program:zookeeper]
+directory=/opt/zookeeper
+user=root
+group=root
+command=/bin/bash -c '/opt/zookeeper/bin/zkServer.sh start-foreground'
+autostart=true
+autorestart=true
+logfile_maxbytes=10MB
+stdout_logfile_backups = 0
+stderr_logfile_backups = 0
+stderr_logfile = /var/log/supervisor/zookeeper_stderr.log
+stdout_logfile = /var/log/supervisor/zookeeper_stdout.log
diff --git a/roles/build/templates/cassandra/Dockerfile.j2 b/roles/build/templates/cassandra/Dockerfile.j2
index 94b0ca0..052cbd1 100644
--- a/roles/build/templates/cassandra/Dockerfile.j2
+++ b/roles/build/templates/cassandra/Dockerfile.j2
@@ -29,7 +29,8 @@ RUN echo "[cassandra]" > /etc/yum.repos.d/cassandra.repo && \
     sed -i -e 's,/etc/cassandra,/usr/share/cassandra,g' /usr/share/cassandra/cassandra.in.sh && \
     chmod a+x /start.sh && \
     yum -y clean all
+COPY cassandrasupervisord.conf /etc/supervisord.conf
 EXPOSE 7000 9042
-#ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
-USER cassandra
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
+#USER cassandra
 # ENTRYPOINT ["/start.sh"]
diff --git a/roles/build/templates/zookeeper/Dockerfile.j2 b/roles/build/templates/zookeeper/Dockerfile.j2
index 209069c..1ac8a58 100644
--- a/roles/build/templates/zookeeper/Dockerfile.j2
+++ b/roles/build/templates/zookeeper/Dockerfile.j2
@@ -29,6 +29,8 @@ EXPOSE 2181 2888 3888
 
 WORKDIR ${ZOOKEEPER_BASE_DIR}/zookeeper
 
-ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
-CMD ["start-foreground"]
-
+#ENTRYPOINT ["/opt/zookeeper/bin/zkServer.sh"]
+#CMD ["start-foreground"]
+RUN yum install supervisor -y
+COPY zookeepersupervisord.conf /etc/supervisord.conf
+ENTRYPOINT ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
diff --git a/roles/cassandra/tasks/main.yml b/roles/cassandra/tasks/main.yml
index 7912910..b5dfeb4 100644
--- a/roles/cassandra/tasks/main.yml
+++ b/roles/cassandra/tasks/main.yml
@@ -1,6 +1,7 @@
 ---
 
 - name: Configure Cassandra
+  remote_user: cassandra
   template:
     src: cassandra.yaml.j2
     dest: /usr/share/cassandra/conf/cassandra.yaml
@@ -8,11 +9,13 @@
     - start
 
 - name: Start Cassandra
-  command: "/start.sh"
+  remote_user: root
+  command: "supervisorctl start cassandra"
   tags:
     - start
 
 - name: Wait for Cassandra
+  remote_user: root
   wait_for:
     host: "{{groups['cassandra'][0]}}"
     port: 9042
@@ -22,7 +25,8 @@
     - start
 
 - name: Stop Cassandra
-  command: "pkill -SIGTERM -F /var/run/cassandra/cassandra.pid"
+  remote_user: root
+  command: "supervisorctl stop cassandra"
   tags:
     - stop
 
diff --git a/roles/docker/tasks/cassandra.yml b/roles/docker/tasks/cassandra.yml
index a26bd28..b913425 100644
--- a/roles/docker/tasks/cassandra.yml
+++ b/roles/docker/tasks/cassandra.yml
@@ -10,7 +10,6 @@
     networks_cli_compatible: yes
     volumes:
       - "{{cassandra_name}}:/var/lib/cassandra"
-    entrypoint: "/bin/bash"
     interactive: "yes"
   with_items: "{{ groups['cassandra'] }}"
   tags:
-- 
GitLab