superlance:为superuser增加状态监控

一、superlance介绍

1、superlance功能

    superlance是基于supervisor的事件机制实现的一系列命令行的工具集,它实现了许多supervisor本身没有实现的实用的进程监控和管理的特性,包括内存监控,http接口监控,邮件和短信通知机制等。同样的,superlance本身也是使用python编写的。

2、superlance命令

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

  • httpok

    通过定时对一个HTTP接口进行GET请求,根据请求是否成功来判定一个进程是否处于正常状态,如果不正常则对进程进行重启。

     $ httpok [-p processname] [-a] [-g] [-t timeout] [-c status_code]   [-b inbody] [-m mail_address] [-s sendmail] URL
    
  • crashmail
    当一个进程意外退出时,发送邮件告警。

    $ crashmail [-p processname] [-a] [-o string] [-m mail_address]  [-s sendmail]
    
  • memmon
    当一个进程的内存占用超过了设定阈值时,发送邮件告警。

    $ memmon [-c] [-p processname=byte_size] [-g groupname=byte_size]  [-a byte_size] [-s sendmail] [-m email_address]  [-u email_uptime_limit] [-n memmon_name]
    
  • crashmailbatch
    类似于crashmail的告警,但是一段时间内的邮件将会被合成起来发送,以避免邮件轰炸。

    $ crashmailbatch --toEmail= --fromEmail=  [--interval=] [--subject=]  [--tickEvent=]
    
  • fatalmailbatch
    当一个进程没有成功启动多次后会进入FATAL状态,此时发送邮件告警。与crashmailbatch一样会进行合成报警。

    $ fatalmailbatch --toEmail= --fromEmail=  [--interval=] [--subject=]
    
  • crashsms
    当一个进程意外退出时发送短信告警,这个短信也是通过email网关来发送的。

    $ crashsms --toEmail= --fromEmail=  [--interval=] [--subject=]  [--tickEvent=]
    

二、superlance插件使用

1、模块安装
# 安装superlance
$ pip install superlance
# 安装发送邮件模块(Centos)
$ yum -y install sendmail
$ yum -y install mailx
2、supervisor配置
[program:uwsgi]
command=uwsgi --ini /xxx/uwsgi.ini
directory=/xxx/
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/web.log
stopsignal=QUIT

[eventlistener:uwsgi-monitor]
command=crashmail -p uwsgi -m [email protected]
events=PROCESS_STATE_EXITED
redirect_stderr=true
3、触发异常
  • 使用ps aux|grep uwsgi查看进程,并kill -9 结束进程,测试是否收到异常报警邮件

  • 如果邮件发送异常,查看邮件发送日志

$ tail -f /var/log/maillog

    
邮件发送日志

    (1)如果发现有失败提示:"Connection refused by [127.0.0.1]",需要检查sendmail是否启动:

# 启动sendmial服务
$ chkconfig --levels 235 sendmail on
$ service sendmail restart

    (2)错误提示:"readcf: option RunAsUser: unknown user smmsp",sendmail没有发送邮件的用户,需要新增smmsp用户和组:

# 错误提示
$ mail -s "邮件主题" [email protected] < ./邮件内容.txt
/etc/mail/submit.cf: line 432: readcf: option RunAsUser: unknown user smmsp
/etc/mail/submit.cf: line 452: readcf: option TrustedUser: unknown user smmsp
Mail submission program must have RunAsUser set to non root user
# 解决方法
$ chattr -i /etc/shadow /etc/passwd /etc/gshadow /etc/group
$ groupadd smmsp
$ useradd smmsp -g smmsp -d /var/spool/clientmqueue -m -s /sbin/nologin
$ chown -R smmsp:smmsp /var/spool/clientmqueue
$ chmod -R 770 /var/spool/clientmqueue
$ chattr +i /etc/shadow /etc/passwd /etc/gshadow /etc/group

参考资料:

crashmail Documentation:https://superlance.readthedocs.io/en/latest/crashmail.html

使用superlance插件增强supervisor的监控能力:https://blog.csdn.net/baidu_zhongce/article/details/49151385

你可能感兴趣的:(superlance:为superuser增加状态监控)