1. 程式人生 > 實用技巧 >prometheus程序監控

prometheus程序監控

外掛地址:https://github.com/ncabatoff/process-exporter

1、安裝部署

cd /usr/local
wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.2/process-exporter-0.7.2.linux-amd64.tar.gz
tar -zxvf process-exporter-0.7.2.linux-amd64.tar.gz
mv process-exporter-0.7.2.linux-amd process-exporter

2、建立啟動指令碼

vi /usr/lib/systemd/system/process-exporter.service
[Unit]
Description
=redis_exporter Documentation=https://github.com/ncabatoff/process-exporter After=network.target [Service] Type=simple User=prometheus ExecStart=/usr/local/process-exporter/process-exporter -config.path /usr/local/process-exporter/process-exporter.yml Restart=on-failure [Install] WantedBy=multi-user.target

啟動服務

systemctl daemon-reload
systemctl start redis_exporter
systemctl status redis_exporter
systemctl enable redis_exporter
ss -tulnp | grep 9256

編寫配置檔案

process_names:

- matcher1
- matcher2

例如:監控所有的服務程序

 process_names:
   - name: "{{.Comm}}"
     cmdline:
       - '.+'

監控程序名為test程式

    process_names:
      
- name: "{{.Matches}}" cmdline: - 'test'

配置模板選項如下:

{{.Comm}} 包含原始可執行檔案的basename,/proc//stat 中的換句話說,2nd 欄位

{{.ExeBase}} 包含可執行檔案的basename

{{.ExeFull}} 包含可執行檔案的完全限定路徑

{{.Username}} 包含有效使用者的使用者名稱

{{.Matches}} 對映包含應用命令列tlb所產生的所有匹配項

process_names中的每個專案都必須包含一個或多個選擇器(comm,exe或cmdline), 如果存在多個選擇器,則它們必須全部匹配。 每個選擇器都是一個字串列表,用於與程序的comm,argv [0]匹配;對於cmdline,則是一個適用於命令列的正則表示式。 cmdline regexp使用Go語法。

對於comm和exe,字串列表是一個OR,這意味著與任何字串匹配的任何程序都將新增到該專案的組中。

對於cmdline,正則表示式列表為AND,表示它們都必須匹配。 正則表示式中的任何捕獲組都必須使用?P <name>選項為捕獲分配一個名稱,該名稱用於填充.Matches。

驗證

curl localhost:9256/metrics

例如:>ps -ef | grep redis

redis 771 1 0 Jun05 ? 00:45:49 /usr/bin/redis-server *:6379

{{.Comm}} groupname="redis-server" exe或者sh檔名稱
{{.ExeBase}} groupname="redis-server *:6379" /
{{.ExeFull}} groupname="redis-server *:6379" ps中程序完成資訊
{{.Username}} groupname="redis" 使用程序所屬的使用者進行分組
{{.Matches}} groupname="map[:redis]" 表示匹配到關鍵字"redis"

Grafana圖表顯示:

process-exporter對應的dashboard為:https://grafana.com/grafana/dashboards/249