Supervisor这个监控告警功能你用过吗?

Supervisor概要

Supervisor是用合作开发的两套通用型的民主化管理工作程序,能将两个一般的配置文件民主化转变成前台daemon,并监视民主化状况,极度优先选择退出并能手动重新启动。它是透过fork/exec的形式把这些被管理工作的民主化当做supervisor的子民主化来开启,这样如果在supervisor的配置文件中,把要管理工作的民主化的DLL的方向雷西县方可。也同时实现连交厝民主化读出来的这时候,父民主化能精确以获取子民主化读出来的重要信息的,能优先选择与否自己开启和报案。supervisor还提供更多了两个机能,能为supervisord或是每一子民主化,增设两个非root的user,那个user就能管理工作它相关联的民主化

那时没错的不是supervisor,有关supervisor的采用,腾讯一堆,这儿不多约勒,那时重点项目没错的是supervisor该事件监视

Event & Listener

Event 是在 Supervisor 3.0 导入的两个高阶优点,假如只单纯采用 Supervisor 管理工作民主化,则不须要介绍 Event

但假如期望监视 Supervisor 管理工作的民主化的各式各样状况(如: 开启、优先选择退出、失利、优先选择退出状况码 …)并全力支持监视系统,才须要介绍Event

Supervisor 非官方对其 Event 监督机制的叙述是:两个民主化的监视/通告架构

具体内容实用性同时实现实用性该事件H55N

顾问该事件侦听器是透过 配置文件中的[eventlistener:x]选定的。有关Supervisor [eventlistener:x] 在实用性中容许的键各方面,基本上与supervisor [program:x]全然那样,而已Supervisor不遵从该事件侦听器民主化的捕捉商业模式输入(即该事件侦听器不能是 PROCESS_COMMUNICATIONS_EVENT该事件计算机程序)。因此,在该事件侦听器的实用性中选定stdout_capture_maxbytes或 stderr_capture_maxbytes是严重错误的。能放进配置文件的该事件侦听器部份的数目没有数人管制

vim /etc/supervisord.d/eventlistener.ini

[eventlistener:mylistener]

command=/opt/my_custom_listener.py ; 自订的监视程序

events=PROCESS_STATE_EXITED,PROCESS_STATE_FATAL,TICK_60 ; 监视该事件

; 下面的实用性和`[program:x]`全然那样

autostart=true

autorestart=true

log_stdout=true

log_stderr=true

stdout_logfile=/opt/supervisor_event_exited-stdout.log

stdout_logfile_maxbytes=50MB

stdout_logfile_backups=3

buffer_size=10

stderr_logfile=/opt/supervisor_event_exited-stderr.log

stderr_logfile_maxbytes=50MB

stderr_logfile_backups=3

实用性H55N脚本vim /opt/my_custom_listener.py

!/usr/bin/env python

-*- coding: utf-8 -*-

importsys

fromsupervisorimportchildutils

defwrite_stdout(s):

only eventlistener protocol messages may be sent to stdout

sys.stdout.write(s)

sys.stdout.flush

defwrite_stderr(s):

sys.stderr.write(s)

sys.stderr.flush

defmain:

while1:

transition from ACKNOWLEDGED to READY

write_stdout(READY\n)

read header line and print it to stderr

line = sys.stdin.readline

write_stderr(line)

read event payload and print it to stderr

headers = dict([ x.split(:)forxinline.split ])

data = sys.stdin.read(int(headers[len]))

write_stderr(data)

transition from READY to ACKNOWLEDGED

write_stdout(RESULT 2\nOK)

采用supervisor的childutils解析

headers, payload = childutils.listener.wait(sys.stdin, sys.stdout)

pheaders, pdata = childutils.eventdata(payload +\n)

当 program 的优先选择退出码为相关联实用性中的 exitcodes 值时, expected=1; 否则为0

ifint(pheaders.get(expected,1)):

childutils.listener.ok(sys.stdout)

continue

else:0, 极度优先选择退出,根据 pheaders 的值发送报案处理

pass你的自定制发送报案逻辑

withopen(/opt/sup.log,a)asf:这儿写入文件作为报案单纯模拟

f.write(str(pheaders))

f.write(str(pdata))

f.write(\n)

向 stdout 写入”RESULT\nOK”,并进入下一次循环

childutils.listener.ok(sys.stdout)

if__name__ ==__main__:

main

这儿监视系统的形式能自己定义,能邮件,也能透过webhook调用im接口监视系统

实际上supervisor自带有监视利器——superlance

superlance

superlance是基于supervisor的该事件监督机制同时实现的一系列配置文件的工具集,它同时实现了许多supervisor本身没有同时实现的实用的民主化监视和管理工作的优点,包括内存监视,http接口监视,邮件和短信通告监督机制等。同样的,superlance本身也是采用python编写的

安装

由于superlance是两个python包,安装起来十分单纯,透过easy_install或是pip就能单纯的安装:

easy_install superlance

pip install superlance

当然也能到github上获得最新的源码(https://github.com/Supervisor/superlance)并安装

python setup.py install

安装后执行以下httpok命令,假如该命令存在,则说明superlance已经正常安装了

superlance组件

superlance是一系列配置文件工具的集合,其包括以下这些命令:

httpok 透过定时对两个HTTP接口进行GET请求,根据请求与否成功来判定两个民主化与否处于正常状况,假如不正常则对民主化进行重新启动。

crashmail 当两个民主化意外优先选择退出时,发送邮件监视系统。

memmon 当两个民主化的内存占用超过了设定阈值时,发送邮件监视系统。

crashmailbatch 类似于crashmail的监视系统,但是一段时间内的邮件将会被合成起来发送,以避免邮件轰炸。

fatalmailbatch 当两个民主化没有成功开启多次后会进入FATAL状况,此时发送邮件监视系统。与crashmailbatch那样会进行合成报案。

crashsms 当两个民主化意外优先选择退出时发送短信监视系统,那个短信也是透过email网关来发送的

邮件监视系统

superlance是采用sendmail来发送邮件的,所以须要安装sendmail

apt install sendmail

安装完成后实用性superlance

cat /etc/supervisor/conf.d/redis.conf

[program:redis]

command=/usr/local/redis/bin/redis-server /home/redis/etc/redis.conf

directory=/usr/local/redis/bin/

user=redis

autostart =true

autorestart =true

startsecs = 30

stopwaitsecs = 1

stopsignal = TERM

redirect_stderr =true

[eventlistener:redis_monitor]

command=crashmail -p redis -m xxx@qq.com

events=PROCESS_STATE_EXITED

redirect_stderr=false

首先实用性了redis民主化开启项目,接着实用性了两个名为redis_monitor的该事件H55N,它接受来自supervisor的PROCESS_STATE_EXITED该事件,并且会触发crashmail的配置文件调用。

PROCESS_STATE_EXITED是在两个supervisor的监视项相关联的民主化意外优先选择退出时会触发的该事件,这就使得两个民主化出现意外优先选择退出的情况下会通告到crashmail。

command参数中-p参数实用性了crashmail只会对名为redis的监视项作出响应,而-m参数中则实用性了崩溃邮件会被发送到的地址

灵活利用superlance,能完成各式各样监视系统需求,同时实现各式各样民主化监视

END

image.png

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1936152778@qq.com举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.caopanquan.cn/2369.html