1、变更原因
部署安装supervisor进行filebeat守护及后面的各种服务进程守护可以用
2、变更内容
增加supervisor服务
3、变量时间:6月2号-6月3号
4、变更风险评估:无风险
4.1技术风险:无风险
4.2业务风险:无风险
4.3操作风险:人工操作风险
4.4其他风险:无风险
5、变更步骤
5.1 、安装python的setuptools模块
cd /data/download
wget https://bootstrap.pypa.io/ez_setup.py
python ez_setup.py
5.2、下载工具包meld
tar -zxvf meld3-1.0.2.tar.gz
cd meld3-1.0.2
python setup.py install
5.3、下载工具包supervisor
wget https://pypi.python.org/packages/31/7e/788fc6566211e77c395ea272058eb71299c65cc5e55b6214d479c6c2ec9a/supervisor-3.3.3.tar.gz#md5=0fe86dfec4e5c5d98324d24c4cf944bd
tar -zxvf supervisor-3.3.3.tar.gz
cd supervisor-3.3.3
python setup.py install
运行echo_supervisord_conf 看看是否安装正常
#如果有问题的话自行检查,一般情况下不可能有问题
5.4、复制配置文件
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件/etc/supervisord.conf
nodaemon=false 改成true
5.5、在etc目录下创建自启服务文件
touch supervisord.service
5.6、然后在supervisord.service文件里面增加配置
[Unit]
Description=Supervisor daemon
[Service]
ExecStart=/usr/bin/supervisord
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
5.7、复制至服务启动目录 cp supervisord.service /usr/lib/systemd/system/
5.8、systemctl enable supervisord 设置开机自启动
5.9、systemctl is-enabled supervisord 检查状态(打印enable为成功)
5.10、修改配置文件supervisord.conf
具体配置文件视具体filebeat情况而定,没有具体的配置文件的,配置解释如下:
- command:启动程序使用的命令,可以是绝对路径或者相对路径 - process_name:一个python字符串表达式,用来表示supervisor进程启动的这个的名称,默认值是%(program_name)s - numprocs:Supervisor启动这个程序的多个实例,如果numprocs>1,则process_name的表达式必须包含%(process_num)s,默认是1 - numprocs_start:一个int偏移值,当启动实例的时候用来计算numprocs的值 - priority:权重,可以控制程序启动和关闭时的顺序,权重越低:越早启动,越晚关闭。默认值是999 - autostart:如果设置为true,当supervisord启动的时候,进程会自动重启。 - autorestart:值可以是false、true、unexpected。false:进程不会自动重启,unexpected:当程序退出时的退出码不是exitcodes中定义的时,进程会重启,true:进程会无条件重启当退出的时候。 - startsecs:程序启动后等待多长时间后才认为程序启动成功 - startretries:supervisord尝试启动一个程序时尝试的次数。默认是3 - exitcodes:一个预期的退出返回码,默认是0,2。 - stopsignal:当收到stop请求的时候,发送信号给程序,默认是TERM信号,也可以是 HUP, INT, QUIT, KILL, USR1, or USR2。 - stopwaitsecs:在操作系统给supervisord发送SIGCHILD信号时等待的时间 - stopasgroup:如果设置为true,则会使supervisor发送停止信号到整个进程组 - killasgroup:如果设置为true,则在给程序发送SIGKILL信号的时候,会发送到整个进程组,它的子进程也会受到影响。 - user:如果supervisord以root运行,则会使用这个设置用户启动子程序 - redirect_stderr:如果设置为true,进程则会把标准错误输出到supervisord后台的标准输出文件描述符。 - stdout_logfile:把进程的标准输出写入文件中,如果stdout_logfile没有设置或者设置为AUTO,则supervisor会自动选择一个文件位置。 - stdout_logfile_maxbytes:标准输出log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小 - stdout_logfile_backups:标准输出日志轮转备份的数量,默认是10,如果设置为0,则不备份 - stdout_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB - stdout_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发 - stderr_logfile:把进程的错误日志输出一个文件中,除非redirect_stderr参数被设置为true - stderr_logfile_maxbytes:错误log文件达到多少后自动进行轮转,单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小 - stderr_logfile_backups:错误日志轮转备份的数量,默认是10,如果设置为0,则不备份 - stderr_capture_maxbytes:当进程处于stderr capture mode模式的时候,写入FIFO队列的最大bytes值,单位可以是KB、MB、GB - stderr_events_enabled:如果设置为true,当进程在写它的stderr到文件描述符的时候,PROCESS_LOG_STDERR事件会被触发 - environment:一个k/v对的list列表 - directory:supervisord在生成子进程的时候会切换到该目录 - umask:设置进程的umask - serverurl:是否允许子进程和内部的HTTP服务通讯,如果设置为AUTO,supervisor会自动的构造一个url
具体配置例子如下:
[program:filebeat_oracle]
command=/data/services/filebeat/filebeat -c /data/services/filebeat/filebeat_oracle.yml
process_name=%(program_name)s
directory=/data/services/filebeat
autostart=true
autorestart=true
startsecs=10
startretries=6
user=root
stderr_logfile=/data/services/filebeat/filebeat_oracle_err.log
stdout_logfile=/data/services/filebeat/filebeat_oracle.log
5.11、可以部署多个,比如2个就写2个
5.12、需要创建相对应的日志文件,在/data/services/filebeat/目录下创建filebeat_oracle_err.log、filebeat_oracle.log,若没有的话启动会报错
6、重启supervisor、filebeat服务是否正常运行,然后kill掉服务,查看是否会正常拉起服务,若没问题则大功告成了
7、变更通知到相关人:重点是产品经理(部门经理)、开发组长、业务测试