1

我想使用 Sensu Core 来监控 python 脚本,但我很困惑如何去做。

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

#!/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脚本(例如test.py)而不是一般的python?

4

3 回答 3

2

所以,我已经成功地为我的 AWS Linux 客户端运行了一些 python 脚本,这是我检查定义的一个很好的例子:

{
 "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 路径开始:

#!/usr/bin/env python
import sys
...
...
//<code condition for warning>
sys.exit(1)
//<code condition for critical>
sys.exit(2)
//<code condition where everything is fine>
sys.exit(0)
于 2016-05-02T14:41:18.210 回答
0

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

我建议您使用Sensu 进程检查插件以获得更通用的功能,其中包括更多自定义。也看看其他sensu 插件

于 2016-03-22T15:45:22.950 回答
0

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

有时该过程在技术上正在运行,但由于错误条件或资源问题而没有任何运行。监视预期结果是比监视过程更好的选择。

于 2016-04-28T11:18:52.007 回答