现在 Command 是二进制进程路径上的部分匹配,直到第一个空格分隔符。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 文件中使用的名称匹配的位置下。