如何使用 Sensu 监控 Python 脚本?
How to monitor Python scripts using Sensu?
我想使用 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?
更一般地说,上面的脚本在 运行ning 进程中搜索字符串 chef-client
。您可以将其替换为任何其他字符串,例如 test.py
,它将检测任何程序 运行ning 的名称中是否包含 test.py
。 (如果你运行程序有python test.py
,你可能需要匹配子字符串test.py
,我不知道ruby。)
我建议你也使用 Sensu process check plugin for a more general function which includes more customization. Look at the other sensu plugins。
为什么不监视脚本的预期结果或操作而不是进程本身。通常,我们将设置检查以监视端点,在 Web 应用程序的情况下,或观察到的行为(例如数据库中的消息),以确定应用程序是否 运行。
有时 进程 在技术上是 运行 但由于错误条件或资源问题而不是任何东西。监控预期结果是比观察过程更好的选择。
所以,我已经 运行 为我的 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)
我想使用 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?
更一般地说,上面的脚本在 运行ning 进程中搜索字符串 chef-client
。您可以将其替换为任何其他字符串,例如 test.py
,它将检测任何程序 运行ning 的名称中是否包含 test.py
。 (如果你运行程序有python test.py
,你可能需要匹配子字符串test.py
,我不知道ruby。)
我建议你也使用 Sensu process check plugin for a more general function which includes more customization. Look at the other sensu plugins。
为什么不监视脚本的预期结果或操作而不是进程本身。通常,我们将设置检查以监视端点,在 Web 应用程序的情况下,或观察到的行为(例如数据库中的消息),以确定应用程序是否 运行。
有时 进程 在技术上是 运行 但由于错误条件或资源问题而不是任何东西。监控预期结果是比观察过程更好的选择。
所以,我已经 运行 为我的 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)