如何使用Sensu监控Python脚本?

2024-05-16 10:49:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用sensucore来监视python脚本,但我很困惑如何去做。在

根据Sensu文档,这需要Sensu Checks。在提供的示例中,ruby脚本检查chef客户端是否正在运行:

#!/usr/bin/env ruby

# get the current list of processes
processes = `ps aux`

# determine if the chef-client process is running
running = processes.lines.detect do |process|
  process.include?('chef-client')
end

# return appropriate check output and exit status code
if running
  puts 'OK - Chef client process is running'
  exit 0
else
  puts 'WARNING - Chef client process is NOT running'
  exit 1
end

如何对特定的脚本而不是应用程序实现这样的检查?也就是说,我将如何监视一个特定的python脚本(例如。测试.py)而不是一般的python?在


Tags: the脚本clientifisexitprocessrunning
3条回答

更一般地说,上面的脚本在运行的进程中搜索字符串chef-client。您可以将其替换为任何其他字符串,如test.py,它将检测运行的程序是否在其名称中包含test.py。(可能需要匹配子字符串test.py如果用python test.py运行程序,我不知道ruby。)

我建议您使用Sensu process check plugin作为一个更通用的函数,它包含更多的定制。再看看另一个sensu plugins。在

为什么不监视脚本的预期结果或操作而不是进程本身呢。通常,我们将设置检查来监视一个端点(在web应用程序的情况下)或观察到的行为(如数据库中的消息),以确定应用程序是否正在运行。在

有时进程在技术上是运行的,但不是由于错误条件或资源问题而运行的。监视预期结果比监视进程要好得多。在

因此,我已经在sensu中为我的AWS Linux客户机成功地运行了一些python脚本,这是我的check定义的一个很好的例子:

{
 "checks": {
"check-rds-limit": {
  "interval": 86400, 
  "command": "/etc/sensu/plugins/rds-limit-check.py",
  "contacts": [
    "cloud-ops"
  ],
  "occurrences": 1,   
  "subscribers": [
    "cloud-ops-subscription"
  ], 
  "handlers": [
    "email",
    "slack"
  ]
}
  }
}

python插件可以从定义shebang路径开始:

^{pr2}$

相关问题 更多 >