如果进程是 运行,则将 scollector 配置为记录
Configure scollector to log if a process is running
我正在尝试使用 Bosun 来确定某些进程是否 运行,然后最终在它们是启动还是关闭时发出警报。我可能误解了文档,但我无法弄清楚。
Bosun运行很好。我在 Ubuntu 14 LTS 上安装了 scollector 运行 并正确使用了我的配置文件。
这是我 scollector.toml 中的内容:
host="blah:8070"
hostname="cass01"
[[Process]]
command = "^.*(java).*(CassandraDaemon)$"
name = "Cassandra"
然后我希望在我的主机 cass01 下的 bosun 中的某处看到一个公制标题 "cassandra",但它无处可见。还有其他指标。
现在命令是二进制进程路径的部分匹配,直到第一个 space 定界符。 Args 参数是一个正则表达式,用于区分进程的多个实例。因此,对于 java 过程,您可以使用类似的东西:
[[Process]]
Command = "java"
Name = "Cassandra"
Args = "CassandraDaemon$"
这将匹配如下命令行:
/usr/bin/java /usr/bin/CassandraDaemon
这假定该进程的 /proc/<pid>/cmdline
在 CassandraDaemon 中结束。如果它不以该字符串结尾,您需要将 Args 更改为仅 "CassandraDaemon",这将匹配包含该字符串的任何 java 进程。
还有一些进程将 cmdline 更改为 nul 分隔字符串以外的内容。在这些情况下,需要使用 Command 参数来匹配,因为 Args 需要 nul 分隔符。示例:
cat /proc/80156/cmdline | hexdump -C
00000000 2f 75 73 72 2f 62 69 6e 2f 72 65 64 69 73 2d 73 |/usr/bin/redis-s|
00000010 65 72 76 65 72 20 2a 3a 36 33 37 39 00 00 00 00 |erver *:6379....|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 |.|
00000031
#Example for cmdline without NUL (00) delimiters between args
[[Process]]
Command = "redis-server *:6379"
Name = "redis-core"
一旦这些与正确的匹配值就位,您应该会在 linux.proc.*
下看到指标,其中名称标签将与 TOML 文件中使用的名称相匹配。
我正在尝试使用 Bosun 来确定某些进程是否 运行,然后最终在它们是启动还是关闭时发出警报。我可能误解了文档,但我无法弄清楚。
Bosun运行很好。我在 Ubuntu 14 LTS 上安装了 scollector 运行 并正确使用了我的配置文件。
这是我 scollector.toml 中的内容:
host="blah:8070"
hostname="cass01"
[[Process]]
command = "^.*(java).*(CassandraDaemon)$"
name = "Cassandra"
然后我希望在我的主机 cass01 下的 bosun 中的某处看到一个公制标题 "cassandra",但它无处可见。还有其他指标。
现在命令是二进制进程路径的部分匹配,直到第一个 space 定界符。 Args 参数是一个正则表达式,用于区分进程的多个实例。因此,对于 java 过程,您可以使用类似的东西:
[[Process]]
Command = "java"
Name = "Cassandra"
Args = "CassandraDaemon$"
这将匹配如下命令行:
/usr/bin/java /usr/bin/CassandraDaemon
这假定该进程的 /proc/<pid>/cmdline
在 CassandraDaemon 中结束。如果它不以该字符串结尾,您需要将 Args 更改为仅 "CassandraDaemon",这将匹配包含该字符串的任何 java 进程。
还有一些进程将 cmdline 更改为 nul 分隔字符串以外的内容。在这些情况下,需要使用 Command 参数来匹配,因为 Args 需要 nul 分隔符。示例:
cat /proc/80156/cmdline | hexdump -C
00000000 2f 75 73 72 2f 62 69 6e 2f 72 65 64 69 73 2d 73 |/usr/bin/redis-s|
00000010 65 72 76 65 72 20 2a 3a 36 33 37 39 00 00 00 00 |erver *:6379....|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 |.|
00000031
#Example for cmdline without NUL (00) delimiters between args
[[Process]]
Command = "redis-server *:6379"
Name = "redis-core"
一旦这些与正确的匹配值就位,您应该会在 linux.proc.*
下看到指标,其中名称标签将与 TOML 文件中使用的名称相匹配。