prometheus 监控之 进程监控(process-exporter)

prometheus 监控之 进程监控(process-exporter)http://www.github.com/ncabatoff/process-exporter
exporter下载:https://github.com/ncabatoff/process-exporter/releases/download/v0.4.0/process-exporter-0.4.0.linux-amd64.tar.gz
  1. <span class="pun">[<span class="pln">xxx@trade1 <span class="pun">~]<span class="pln">$ process<span class="pun">-<span class="pln">exporter <span class="pun">--<span class="pln">help</span></span></span></span></span></span></span></span>
  2. <span class="typ">Usage<span class="pln"> of process<span class="pun">-<span class="pln">exporter<span class="pun">:</span></span></span></span></span>
  3. <span class="pln"> <span class="pun">-<span class="pln">children</span></span></span>
  4. <span class="pln"> <span class="kwd">if<span class="pln"> a proc <span class="kwd">is<span class="pln"> tracked<span class="pun">,<span class="pln"> track <span class="kwd">with<span class="pln"> it any children that aren<span class="str">'t part of their own group (default true) -config.path string path to YAML config file -debug log debugging information to stdout -man print manual -namemapping string comma-seperated list, alternating process name and capturing regex to apply to cmdline -once-to-stdout-delay duration Don'<span class="pln">t bind<span class="pun">,<span class="pln"> just wait <span class="kwd">this<span class="pln"> much time<span class="pun">,<span class="pln"> <span class="kwd">print<span class="pln"> the metrics once to stdout<span class="pun">,<span class="pln"> <span class="kwd">and<span class="pln"> <span class="kwd">exit</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
  5. <span class="pln"> <span class="pun">-<span class="pln">procfs <span class="kwd">string</span></span></span></span>
  6. <span class="pln"> path to read proc data <span class="kwd">from<span class="pln"> <span class="pun">(<span class="kwd">default<span class="pln"> <span class="str">"/proc"<span class="pun">)</span></span></span></span></span></span></span></span>
  7. <span class="pln"> <span class="pun">-<span class="pln">procnames <span class="kwd">string</span></span></span></span>
  8. <span class="pln"> comma<span class="pun">-<span class="pln">seperated list of process names to monitor</span></span></span>
  9. <span class="pln"> <span class="pun">-<span class="pln">recheck</span></span></span>
  10. <span class="pln"> recheck process names on each scrape</span>
  11. <span class="pln"> <span class="pun">-<span class="pln">web<span class="pun">.<span class="pln">listen<span class="pun">-<span class="pln">address <span class="kwd">string</span></span></span></span></span></span></span></span>
  12. <span class="pln"> <span class="typ">Address<span class="pln"> on which to expose metrics <span class="kwd">and<span class="pln"> web <span class="kwd">interface<span class="pun">.<span class="pln"> <span class="pun">(<span class="kwd">default<span class="pln"> <span class="str">":9256"<span class="pun">)</span></span></span></span></span></span></span></span></span></span></span></span></span>
  13. <span class="pln"> <span class="pun">-<span class="pln">web<span class="pun">.<span class="pln">telemetry<span class="pun">-<span class="pln">path <span class="kwd">string</span></span></span></span></span></span></span></span>
  14. <span class="pln"> <span class="typ">Path<span class="pln"> under which to expose metrics<span class="pun">.<span class="pln"> <span class="pun">(<span class="kwd">default<span class="pln"> <span class="str">"/metrics"<span class="pun">)</span></span></span></span></span></span></span></span></span></span>
配置

选择要监视的进程并将它的分组,提供命令行参数或者使用YAML配置文件。

为了避免与命令行YAML元素混淆,我们将 /proc//cmdline的空分隔内容引用为 array argv[] 。

process_names 中的每个项目都提供了识别和命名过程的诀窍。 可选 name 标记定义用于命名匹配进程的模板;如果没有指定,name 默认为 { {.ExeBase}} 。

可用的模板变量:

{ {.Comm}} 包含原始可执行文件的basename,/proc//stat 中的换句话说,2nd 字段
{ {.ExeBase}} 包含可执行文件的basename
{ {.ExeFull}} 包含可执行文件的完全限定路径
{ {.Matches}} 映射包含应用命令行tlb所产生的所有匹配项
process_names 中的每个项必须包含一个或者多个选择器( 。comm,exe 或者 cmdline ) ;如果存在多个选择器,则它们都必须匹配。 每个选择器都是符合进程。argv[0] 或者 cmdline的comm的一个字符串列表,用于应用于 命令行的正则表达式。

对于 comm 和 exe,字符串列表是 an,表示任何匹配任何字符串的进程都将被添加到项的组中。

对于 cmdline,regex的列表是一个,也就是说它们都必须匹配。 regexp中的任何捕获组都必须使用 ?P 选项为捕获指定名称,该名称用于填充 .Matches 。

进程只能属于一个组: 即使多个项目匹配,文件中列出的第一个也会胜出。

其他性能提示:在cmdline子句中添加exe或者comm子句,这样在执行名不匹配时避免执行 regexp 。

以下配置是监控所有的进程
  1. <span class="pun">[<span class="pln">xxx@trade1 bin<span class="pun">]<span class="pln">$ cat config<span class="pun">.<span class="pln">yml </span></span></span></span></span></span>
  2. <span class="pln">process_names<span class="pun">:</span></span>
  3. <span class="pln"> <span class="pun">-<span class="pln"> name<span class="pun">:<span class="pln"> <span class="str">"{ {.Comm}}"</span></span></span></span></span></span>
  4. <span class="pln"> cmdline<span class="pun">:</span></span>
  5. <span class="pln"> <span class="pun">-<span class="pln"> <span class="str">'.+'</span></span></span></span>

启动process-exporter:

  1. <span class="pln">process<span class="pun">-<span class="pln">exporter <span class="pun">-<span class="pln">config<span class="pun">.<span class="pln">path config<span class="pun">.<span class="pln">yml</span></span></span></span></span></span></span></span></span>
  2. <span class="pun">[<span class="pln">root@trade1 bin<span class="pun">]#<span class="pln"> curl <span class="lit">10.100<span class="pun">.<span class="lit">20.143<span class="pun">:<span class="lit">9256<span class="pun">/<span class="pln">metrics <span class="pun">|<span class="pln">grep JSL </span></span></span></span></span></span></span></span></span></span></span></span></span>
  3. <span class="pln">namedprocess_namegroup_context_switches_total<span class="pun">{<span class="pln"> ctxswitchtype<span class="pun">=<span class="str">"nonvoluntary"<span class="pun">,<span class="pln">groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span></span></span></span></span>
  4. <span class="pln">namedprocess_namegroup_context_switches_total<span class="pun">{<span class="pln"> ctxswitchtype<span class="pun">=<span class="str">"voluntary"<span class="pun">,<span class="pln">groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">627</span></span></span></span></span></span></span></span></span></span></span></span>
  5. <span class="pln">namedprocess_namegroup_cpu_system_seconds_total<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">0.020000000000000018</span></span></span></span></span></span></span></span>
  6. <span class="pln">namedprocess_namegroup_cpu_user_seconds_total<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">0.040000000000000036</span></span></span></span></span></span></span></span>
  7. <span class="pln">namedprocess_namegroup_major_page_faults_total<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span>
  8. <span class="pln">namedprocess_namegroup_memory_bytes<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">memtype<span class="pun">=<span class="str">"resident"<span class="pun">}<span class="pln"> <span class="lit">3.444736e+06</span></span></span></span></span></span></span></span></span></span></span></span>
  9. <span class="pln">namedprocess_namegroup_memory_bytes<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">memtype<span class="pun">=<span class="str">"swapped"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span></span></span></span></span>
  10. <span class="pln">namedprocess_namegroup_memory_bytes<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">memtype<span class="pun">=<span class="str">"virtual"<span class="pun">}<span class="pln"> <span class="lit">3.487744e+07</span></span></span></span></span></span></span></span></span></span></span></span>
  11. <span class="pln">namedprocess_namegroup_minor_page_faults_total<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span>
  12. <span class="pln">namedprocess_namegroup_num_procs<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">1</span></span></span></span></span></span></span></span>
  13. <span class="pln">namedprocess_namegroup_num_threads<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">1</span></span></span></span></span></span></span></span>
  14. <span class="pln">namedprocess_namegroup_oldest_start_time_seconds<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">1.54755489e+09</span></span></span></span></span></span></span></span>
  15. <span class="pln">namedprocess_namegroup_open_filedesc<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">7</span></span></span></span></span></span></span></span>
  16. <span class="pln">namedprocess_namegroup_read_bytes_total<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span>
  17. <span class="pln">namedprocess_namegroup_states<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">state<span class="pun">=<span class="str">"Other"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span></span></span></span></span>
  18. <span class="pln">namedprocess_namegroup_states<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">state<span class="pun">=<span class="str">"Running"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span></span></span></span></span>
  19. <span class="pln">namedprocess_namegroup_states<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">state<span class="pun">=<span class="str">"Sleeping"<span class="pun">}<span class="pln"> <span class="lit">1</span></span></span></span></span></span></span></span></span></span></span></span>
  20. <span class="pln">namedprocess_namegroup_states<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">state<span class="pun">=<span class="str">"Waiting"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span></span></span></span></span>
  21. <span class="pln">namedprocess_namegroup_states<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">state<span class="pun">=<span class="str">"Zombie"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span></span></span></span></span>
  22. <span class="pln">namedprocess_namegroup_threads_wchan<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">,<span class="pln">wchan<span class="pun">=<span class="str">"do_msgrcv"<span class="pun">}<span class="pln"> <span class="lit">1</span></span></span></span></span></span></span></span></span></span></span></span>
  23. <span class="pln">namedprocess_namegroup_worst_fd_ratio<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">6.8359375e-06</span></span></span></span></span></span></span></span>
  24. <span class="pln">namedprocess_namegroup_write_bytes_total<span class="pun">{<span class="pln"> groupname<span class="pun">=<span class="str">"JSL"<span class="pun">}<span class="pln"> <span class="lit">0</span></span></span></span></span></span></span></span>

可以看到我的进程已经在监控状态了。

Grafana 画图

https://grafana.com/dashboards/249

Original: https://www.cnblogs.com/cheyunhua/p/16527619.html
Author: 技术颜良
Title: prometheus 监控之 进程监控(process-exporter)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551393/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球