Skip to content

Instantly share code, notes, and snippets.

@jkkitakita
Last active December 31, 2017 18:51
Show Gist options
  • Save jkkitakita/3daa648f79486926880cb62930548fa0 to your computer and use it in GitHub Desktop.
Save jkkitakita/3daa648f79486926880cb62930548fa0 to your computer and use it in GitHub Desktop.
consul-template & supervisorでプロセスの可視化 ref: https://qiita.com/jkkitakita/items/2ecfb3b134b2638ecd55
[program:cesi]
command=python /var/www/cesi/web.py
user=root
group=root
autostart=true
autorestart=true
redirect_stdout=true
redirect_stderr=true
stopasgroup=true
stopsignal=QUIT
stdout_logfile=/root/cesi.stdout.log
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=10
stderr_logfile=/root/cesi.stderr.log
stderr_logfile_maxbytes=20MB
stderr_logfile_backups=10
{{range service "supervisord"}}
[node:{{.Node}}]
username = hogehoge
password = fugafuga
host = {{.Address}}
port = 9001
{{end}}
[cesi]
database = /path/to/cesi-userinfo.db
activity_log = /path/to/cesi-activity.log
host = 0.0.0.0
{
"datacenter": "dc1",
"data_dir": "/home/consul/consul_1.0.1/data",
"encrypt": "xxxxxxxxxxxxxxx", // server側と同じencrypt
"log_level": "info",
"enable_syslog": true,
"enable_debug": true,
"node_name": "agent01",
"leave_on_terminate": false,
"skip_leave_on_interrupt": true,
"enable_script_checks": true,
"rejoin_after_leave": true,
"retry_join": ["provider=aws tag_key=Service tag_value=consulserver region=us-west-2 access_key_id=xxxxxxxxxxxxxx secret_access_key=xxxxxxxxxxxxxxx"
// retry joinでserver側と接続。serverのcluster化も考慮して、provider=awsで、tag_keyを指定。
]
}
{
"client_addr": "0.0.0.0",
"bind_addr": "xxx.xxx.xxx.xxx", // 自身のprivate ip
"ports": {
"http": 8500,
"server": 8300
}
}
consul = "127.0.0.1:8500"
wait = "10s"
template {
source = "/home/consul/consul-template/templates/cesi.conf.tmpl"
destination = "/etc/cesi.conf"
command = "supervisorctl restart cesi"
command_timeout = "60s"
}
[program:consul-template]
command=/home/consul/consul-template/bin/consul-template -config /home/consul/consul-template/config/consul-template.cfg
user=root
group=root
autostart=true
autorestart=true
redirect_stdout=true
redirect_stderr=true
stdout_logfile=/home/consul/consul-template/logs/stdout.log
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=10
stderr_logfile=/home/consul/consul-template/logs/stderr.log
stderr_logfile_maxbytes=20MB
stderr_logfile_backups=10
[program:consul]
command=/home/consul/consul_1.0.1/bin/consul agent -config-dir=/home/consul/consul_1.0.1/consul.d // -uiは不要
user=consul
group=consul
autostart=true
autorestart=true
redirect_stdout=true
redirect_stderr=true
stdout_logfile=/home/consul/consul_1.0.1/logs/consul.stdout.log
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=10
stderr_logfile=/home/consul/consul_1.0.1/logs/consul.stderr.log
stderr_logfile_maxbytes=20MB
stderr_logfile_backups=10
[group:daemon]
programs=<daemon-name>
priority=999
[program:<daemon-name>]
command=sudo -u ec2-user -i /bin/bash -c 'cd /opt/<service> && <実行コマンド>'
user=ec2-user
group=ec2-user
directory=/opt/<service>
autostart=true
autorestart=true
redirect_stdout=true
redirect_stderr=true
stopasgroup=true
stopsignal=QUIT
stdout_logfile=/var/log/<service>/daemon.stdout.log
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=10
stderr_logfile=/var/log/<service>/daemon.stderr.log
stderr_logfile_maxbytes=20MB
stderr_logfile_backups=10
[eventlistener:slack_notifier]
command=/usr/bin/process_state_event_listener.py
events=PROCESS_STATE
redirect_stderr=false
stopasgroup=true
stopsignal=QUIT
stdout_logfile=/var/log/<service>/event_listener.stdout.log
stdout_logfile_maxbytes=2MB
stdout_logfile_backups=10
stderr_logfile=/var/log/<service>/event_listener.stderr.log
stderr_logfile_maxbytes=2MB
stderr_logfile_backups=10
environment=SLACK_WEB_HOOK_URL="xxxxxxx"
{
"services": [
{
"id": "<daemon-name>-agent01",
"name": "<daemon-name>",
"tags" : [ "daemon" ],
"checks": [{
"script": "supervisorctl status daemon:<daemon-name> | grep RUNNING",
"interval": "10s"
}]
}
]
}
[root@agent01 config]# ll
total 8
-rwxr-xr-x 1 root root 220 Dec 4 05:16 consul-template.cfg
[root@test02 ~]# supervisorctl status
daemon:<daemon-name> RUNNING pid 31513, uptime 13:19:20
slack_notifier RUNNING pid 31511, uptime 13:19:20
[root@server01 consul_1.0.1]# pwd
/home/consul/consul_1.0.1
[root@server01 consul_1.0.1]# ll
total 16
drwxr-xr-x 2 consul consul 4096 Dec 3 04:49 bin
drwxr-xr-x 2 consul consul 4096 Dec 3 06:06 consul.d
drwxr-xr-x 4 consul consul 4096 Dec 3 04:50 data
drwxr-xr-x 2 consul consul 4096 Dec 3 04:50 logs
[root@server01 consul.d]# pwd
/home/consul/consul_1.0.1/consul.d
[root@server01 consul.d]# ll
total 16
-rw-r--r-- 1 consul consul 382 Dec 3 06:06 common.json
-rw-r--r-- 1 consul consul 117 Dec 3 04:49 connection.json
-rw-r--r-- 1 consul consul 84 Dec 3 04:49 server.json
-rw-r--r-- 1 consul consul 259 Dec 3 04:49 supervisord.json
{
"server": true, // server側なので、true
"server_name": "server01",
"bootstrap_expect": 1 // とりあえず、serverは1台クラスタにした
}
クライアント側と同様
{
"services": [
{
"id": "supervisord-agent01",
"name": "supervisord",
"tags" : [ "common" ],
"checks": [{
"script": "/etc/init.d/supervisord status | grep running",
"interval": "10s"
}]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment