Supervisor Event Listener 任务监控与告警

[toc]

Event

Event 是在 Supervisor 3.0 引入的一个高级特性,如果只简单使用 Supervisor 管理进程,则不需要了解 Event。

但如果希望监控 Supervisor 管理的进程的各种状态(如: 启动、退出、失败、退出状态码 ...)并支持告警,才需要学习 Event。

事件监听与事件通知

  • Event Listeners and Event Notifications

Supervisor 提供了一种基于订阅消息的通知机制,称为 event listener(事件监听者)。 用于订阅并处理事件通知消息。

Supervisor 在工作时,其下管理的进程发生任何的状态变化都会产生事件通知消息,这些消息被分为成了各种类型,在没有配置 event listener 时,这些消息将不会得到处理。当配置了event listener 可以在配置中指定订阅某一类型的事件通知消息,那么当指定类型的消息产生时 event listener 就会收到,以便进行下一步处理。

事件通知协议基于子进程的 stdin 和 stdout,Supervisor 会发送指定格式的消息数据给 event listener 进程的 stdin ,并期望从 event listener 的 stdout 返回一个指定格式的输出。 event listener 程序需要自己写代码实现,可以使用任何语言,不过在 Python 中有提供一个库 supervisor.childutils 专门用于快速开发 event listener ,因此用 python 开发是最简便的。

Event Types

Event Types 由 Supervisor 官方定义,覆盖了进程运行生命周期的各种状态。

  • 下面翻译一些常用的类型
Event 解释
PROCESS_STATE 进程状态发生改变
PROCESS_STATE_STARTING 进程状态从其他状态转换为正在启动(Supervisord的配置项中有startsecs配置项,是指程序启动时需要程序至少稳定运行x秒才认为程序运行正常,在这x秒中程序状态为正在启动)
PROCESS_STATE_RUNNING 进程从正在启动状态转换为正在运行状态
PROCESS_STATE_BACKOFF 进程从正在启动状态转换为启动失败状态,Supervisor 正在重启该进程
PROCESS_STATE_STOPPING 进程从正在运行状态或正在启动状态转换为正在停止状态
PROCESS_STATE_EXITED 进程从正在运行状态转换为退出状态,expected 退出码,如果是 0 表示进程异常退出,1 表示进程正常退出。
PROCESS_STATE_STOPPED 进程从正在停止状态转换为已停止状态
PROCESS_STATE_FATAL 进程从启动失败状态(BACKOFF)转换为失败状态(FATAL). 意味着 startretries 尝试次数已达上限,Supervisor 已放弃重启该进程。
PROCESS_LOG 进程产生日志输出,被管理的进程需配置,stdout_events_enabled=true or stderr_events_enabled=true 这个事件通知才会生效。
PROCESS_LOG_STDOUT 进程产生标准输出,被管理的进程需配置,stdout_events_enabled=true
PROCESS_LOG_STDERR 进程产生错误输出,被管理的进程需配置
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值