技术导语: 还在困惑不知道如何进行有效的进程监控么?初学prometheus不好理解process-exporter的配置规则么?好不容易上线使用了,总有些莫名其妙的问题费解得摸不着头脑?本文一一为你解答。
配置模板变量
vi process_name.yml
{{.Comm}} 包含原始可执行文件的基本名称,即第二个字段 /proc/<pid>/stat
{{.ExeBase}} 包含可执行文件的基名
{{.ExeFull}} 包含可执行文件的完全限定路径
{{.Username}} 包含有效用户的用户名
{{.Matches}} map包含应用cmdline regexps产生的所有匹配项
配置案例
上述配置模板的五个变量或许看起来很费解,那么接下来通过mysql进程监控实例来加深理解。
一、展示{{.Matches}}的效果
mysql进程信息如图:
process配置案例如下:
process_names:
- name: "{{.Matches}}"
cmdline:
- 'mysqld'
process_names:
- name: "{{.Matches}}"
cmdline:
- 'mysql'
总结: {{.Matches}}是基于ps进程的显示信息进行关键字匹配,最终显示的分组名称(groupname)也是和关键字一致。
二、展示{{.Comm}}的效果
proc文件内容如下:
cat /proc/1928/stat
process配置案例如下:
process_names:
- name: "{{.Comm}}"
cmdline:
- 'mysqld'
process_names:
- name: "{{.Comm}}"
cmdline:
- 'mysql'
总结: {{.Comm}}是基于/proc/1928/stat文件中的第二个字段信息进行关键字匹配,最终显示的分组名称(groupname)也是和/proc/1928/stat文件中的第二个字段一致。所以表现出来的效果无论关键字是mysql还是mysqld,最终显示的分组(groupname)始终为匹配到的第二个字段:mysqld。
三、展示{{.ExeBase}}的效果
mysql进程信息如图:
process配置案例如下:
process_names:
- name: "{{.ExeBase}}"
cmdline:
- 'mysqld'
process_names:
- name: "{{.ExeBase}}"
cmdline:
- 'mysql'
总结: {{.ExeBase}}是基于进程对应的可执行二进制文件名进行关键字匹配,最终显示的分组名称(groupname)也是和可执行的二进制文件名一致。所以表现出来的效果无论关键字是mysql还是mysqld,最终显示的分组(groupname)始终为匹配到的可执行二进制文件名:mysqld。
四、展示{{.ExeFull}}的效果
mysql进程信息如图:
process配置案例如下:
process_names:
- name: "{{.ExeFull}}"
cmdline:
- 'mysqld'
process_names:
- name: "{{.ExeFull}}"
cmdline:
- 'mysql'
总结: {{.ExeFull}}是基于可执行文件的完全路径进行关键字匹配,最终显示的分组名称(groupname)也是和完全路径一致。所以表现出来的效果无论关键字是mysql还是mysqld,最终显示的分组(groupname)始终为匹配到的完全路径:/usr/sbin/mysqld。
五、展示{{.Username}}的效果
mysql进程信息如图:
process配置案例如下:
process_names:
- name: "{{.Username}}"
cmdline:
- 'mysql'
总结: {{.Username}}是基于启动进程的用户名进行关键字匹配,最终显示的分组名称(groupname)也是和用户名一致,始终为匹配到的用户名:mysql。
知识点
1、配置文件支持多条件匹配
【配置文件】:
process_names:
- name: "{{.ExeFull}}"
cmdline:
- 'mysql'
- 'bin'
【匹配结果】:
2、配置文件满足多个匹配项时,仅匹配第一个。
【配置文件】:
process_names:
- name: "{{.ExeFull}}"
cmdline:
- 'mysql'
- 'bin'
process_names:
- name: "{{.ExeBase}}"
cmdline:
- 'mysql'
【匹配结果】:
【配置文件】:
process_names:
- name: "{{.ExeBase}}"
cmdline:
- 'mysql'
process_names:
- name: "{{.ExeFull}}"
cmdline:
- 'mysql'
- 'bin'
【匹配结果】:
如果您喜欢我的文章,请点击关注哦,后续有更多的干货分享。