当前位置: 首页 > news >正文

supervisor 监控工具-superlance

介绍

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

同样的,superlance本身也是使用python编写的

安装

pipinstallsuperlance

自带命令

superlance安装后,自带了一批命令

这批命令默认在python可执行目录下/usr/local/python3/bin

  • httpok
    通过定时对一个HTTP接口进行GET请求,根据请求是否成功来判定一个进程是否处于正常状态,如果不正常则对进程进行重启。
  • crashmail
    当一个进程意外退出时,发送邮件告警。
  • memmon
    当一个进程的内存占用超过了设定阈值时,发送邮件告警。
  • crashmailbatch
    类似于crashmail的告警,但是一段时间内的邮件将会被合成起来发送,以避免邮件轰炸。
  • fatalmailbatch
    当一个进程没有成功启动多次后会进入FATAL状态,此时发送邮件告警。与crashmailbatch一样会进行合成报警。
  • crashsms
    当一个进程意外退出时发送短信告警,这个短信也是通过email网关来发送的

Supervisord支持的监控事件-Event

  • PROCESS_STATE 进程状态发生改变
  • PROCESS_STATE_STARTING 进程状态从其他状态转换为正在启动(Supervisord的配置项中有startsecs配置项, 是指程序启动时需要程序至少稳定运行x秒才认为程序运行正常,在这x秒中程序状态为正在启动)
  • PROCESS_STATE_RUNNING 进程状态由正在启动转换为正在运行
  • PROCESS_STATE_BACKOFF 进程状态由正在启动转换为失败
  • PROCESS_STATE_STOPPING 进程状态由正在运行转换为正在停止
  • PROCESS_STATE_EXITED 进程状态由正在运行转换为退出
  • PROCESS_STATE_STOPPED 进程状态由正在停止转换为已经停止(exited和stopped的区别是exited是程序自行退出,而stopped为人为控制其退出)
  • PROCESS_STATE_FATAL 进程状态由正在运行转换为失败
  • PROCESS_STATE_UNKNOWN 未知的进程状态
  • REMOTE_COMMUNICATION 使用Supervisord的RPC接口与Supervisord进行通信
  • PROCESS_LOG 进程产生日志输出,包括标准输出和标准错误输出
  • PROCESS_LOG_STDOUT 进程产生标准输出
  • PROCESS_LOG_STDERR 进程产生标准错误输出
  • PROCESS_COMMUNICATION 进程的日志输出包含 和
  • PROCESS_COMMUNICATION_STDOUT 进程的标准输出包含 和
  • PROCESS_COMMUNICATION_STDERR 进程的标准错误输出包含 和
  • SUPERVISOR_STATE_CHANGE_RUNNING Supervisord 启动
  • SUPERVISOR_STATE_CHANGE_STOPPING Supervisord 停止
  • TICK_5 每隔5秒触发
  • TICK_60 每隔60秒触发
  • TICK_3600 每隔3600触发
  • PROCESS_GROUP Supervisord的进程组发生变化
  • PROCESS_GROUP_ADDED 新增了Supervisord的进程组
  • PROCESS_GROUP_REMOVED 删除了Supervisord的进程组

示例

进程挂了时,发邮件通知

# 使用crashmailbatch会更不错# supervisor配置文件中新增[eventlistener:crashmail]command=/usr/local/python3/bin/crashmail-a-s "mail-s 'Process is 挂了' 398344850@qq.com"-m 398344850@qq.com events=PROCESS_STATE_EXITED redirect_stderr=false

http://www.cnnetsun.cn/news/1452451.html

相关文章:

  • Flutter GetX实战:5分钟搞定跨页面交互与状态管理
  • 别再只做静态页面了!用Three.js+GIS给你的旅游网站加点‘黑科技’
  • FPGA温度监测实战:手把手教你用SYSMONE4获取Ultrascale芯片温度(附计算公式)
  • 避坑指南:华为HCIA考试中最容易混淆的5个网络概念(含MAC地址查询技巧)
  • CLIP-GmP-ViT-L-14图文匹配工具参数详解:图像/文本编码器输出维度与logits归一化
  • 告别VSCode远程开发:用Xshell+ProxyJump打造轻量级服务器连接方案
  • 从CVE-2024-1086漏洞复现失败到成功:一次内核安全实践的技术复盘
  • NxNandManager完全指南:Nintendo Switch NAND管理从入门到精通(含避坑手册)
  • AI大模型落地系列:一文读懂 Eino 的 ChatModel 和 Message
  • BotMan缓存与存储完全指南:ArrayCache、RedisCache、FileStorage终极配置教程
  • DeepSeek-OCR-WEBUI功能体验:图像描述/查找定位实测
  • DeepSeek-OCR-2开源大模型实操:自定义微调适配行业专用术语词典
  • FlutterBoost终极路由指南:5分钟掌握混合开发核心技巧
  • 终极指南:使用Symfony Translation组件实现PHP多语言支持的10个步骤
  • Lovefield外键约束终极指南:如何通过CASCADE和RESTRICT维护数据完整性
  • 数据污染战术:00后反监控革命中的社交噪音武器化
  • PRMLT实战指南:10个真实世界机器学习问题终极解决方案 [特殊字符]
  • 闻达社区资源完全指南:如何充分利用开源生态加速AI开发
  • AI 不该等你说话才干活——OpenClaw 定时系统设计哲学
  • Swift Algorithms笛卡尔积:10个product方法在组合问题中的终极应用指南
  • 快速上手Python3.11:Miniconda镜像5分钟搭建完整开发环境
  • PHP终端代码高亮神器:快速提升开发效率的终极指南
  • 程序:滚动轴承载荷分布静力学解析解,用于与动力学模型对比验证
  • Unsloth效果实测:对比传统方法,训练时间节省50%以上
  • 用Sequencer+Control Rig玩转UE5角色动画:从动捕数据到电影级运镜全流程
  • 终极指南:如何用Just.js函数式编程工具提升代码质量
  • 10个Unison调试技巧:快速定位和解决代码问题的完整指南
  • Simple Binary Encoding与Aeron集成:构建低延迟金融交易系统的完整方案
  • 视频字幕提取工具:本地OCR技术如何高效解决硬字幕识别难题
  • xiaozhi-esp32-server:10分钟快速搭建智能硬件后端的终极指南