prometheus程序監控
阿新 • • 發佈:2020-09-01
外掛地址: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