Node Exporter部署
在Prometheus的架構設計中,Prometheus Server並不直接服務監控特定的目標,其主要任務負責數據的收集,存儲並且對外提供數據查詢支持。因此為了能夠監控到某些東西,如主機的cpu使用率,我們需要使用到Exporter。Prometheus周期性的從Exporter暴露的HTTP服務地址(通常時metrics)拉取監控樣本數據。
Node Exporter可以采集到系統相關的信息,例如CPU、內存、硬盤等系統信息。Node Exporter采用Golang編寫,並且不存在任何的第三方依賴,只需要下載,解壓即可運行。
1、下載部署:
[root@localhost ~]# wget
https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
[root@localhost ~]# tar zxf node_exporter-0.18.1.linux-amd64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# mv node_exporter-0.18.1.linux-amd64 node_exporter
2、添加服務到systemctl
[root@localhost ~]# vim /etc/systemd/system/node_exporter.service
[Unit]
Description=node exporter
Documentation=node exporter
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
[root@localhost local]# systemctl start node_exporter
[root@localhost local]# systemctl enable node_exporter
[root@localhost local]# ss -tunlp|grep node_exporter
tcp LISTEN 0 128 [::]:9100 [::]:* users:(("node_exporter",pid=20063,fd=3))
3、訪問web界面查看以下,監控狀態:
http://192.168.10.121:9100/metrics


在web界面上我們可以看到很多相關的系統指標,從指標中我們可以獲得類似相關參數指標信息:
node_boot_time:系統啟動時間
node_cpu:系統CPU使用量
nodedisk:磁盤IO
nodefilesystem:文件系統用量
node_load1:系統負載
nodememeory:內存使用量
nodenetwork:網絡帶寬
nodetime:當前系統時間
go:node exporter中go相關指標
process_:node exporter自身進程相關運行指標
4、docker啟動方法:
docker run -d -p 9100:9100 quay.io/prometheus/node-exporter
5、修gapprometheus配置文件
[root@localhost ~]# vim /usr/local/prometheus/prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'linux'
static_configs:
- targets: ['192.168.10.121']
[root@localhost ~]# systemctl restart prometheus
瀏覽器查看




#1:表示任務正常,0:表示異常
總結:
Prometheus server和采集系統相關資源指標的node exporter已經安裝完成,並且已經成功拉取到了數據存儲在服務端。
在構建一個完整的監控的時候,我們還需要用儀表展示和告警規則、郵件、微信告警媒介,就可以完成大致的流程
6、node-exporter常用指標類型:
node_cpu:系統CPU使用量
node_disk*:磁盤IO
node_filesystem*:文件系統用量
node_load1:系統負載
node_memeory*:內存使用量
node_network*:網絡帶寬
node_time:當前系統時間
go_*:node exporter中go相關指標
process_*:node exporter自身進程相關運行指標
7、進程監控:Process-exporter
由於我們常用的node_exporter並不能覆蓋所有進程細化監控項,這里我們使用Process-exporter對進程進行監控。
7.1 Process-exporter下載安裝
[root@localhost ~]# wget
https://github.com/ncabatoff/process-exporter/releases/download/v0.5.0/process-exporter-0.5.0.linux-amd64.tar.gz
[root@localhost ~]# tar zxf process-exporter-0.5.0.linux-amd64.tar.gz
[root@localhost ~]# mv process-exporter-0.5.0.linux-amd64 /usr/local/process-exporter
7.2 添加服務到啟動中並啟動
[root@localhost ~]# vim /etc/systemd/system/process-exporter.service
[Unit]
Description=node exporter
Documentation=node exporter
[Service]
ExecStart=/usr/local/process-exporter/process-exporter -config.path /usr/local/process-exporter/process-name.yaml
[Install]
WantedBy=multi-user.target
7.3配置文件匹配規則
配置文件根據變量名匹配到配置文件:
{{.Comm}} 包含原始可執行文件的basename,/proc//stat 中的換句話說,2nd 字段
{{.ExeBase}} 包含可執行文件的basename
{{.ExeFull}} 包含可執行文件的完全限定路徑
{{.Matches}} 映射包含應用命令行tlb所產生的所有匹配項
8 監控nginx示例:
Process-exporter 可以進程名字匹配進程,獲取進程信息。匹配規則由name對應的模板變量決定,以下表示監控進程名字為nginx (前提是我們已經安裝了nginx服務,並且已經啟動)
[root@localhost ~]# yum -y install nginx
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl enable nginx
[root@localhost ~]# netstat -tunlp|grep nginx
配置nginx的配置文件
[root@localhost ~]# vim /usr/local/process-exporter/process-name.yaml
process_names:
- name: "{{.Matches}}"
cmdline:
- 'nginx'
[root@localhost ~]# systemctl start process-exporter.service
[root@localhost ~]# systemctl enable process-exporter.service
[root@localhost ~]# vim /usr/local/prometheus/prometheus.yml
- job_name: 'process'
static_configs:
- targets: ['192.168.10.121:9256']
[root@localhost ~]# systemctl restart prometheus
[root@localhost ~]# systemctl status prometheus
#查看新加入的指標監控狀態


查看相關監控項


統計有多少個進程數:sum(namedprocess_namegroup_states)


統計有多少個僵屍進程:sum(namedprocess_namegroup_states{state="Zombie"})


9、Node-exporter自定義Key:
前面我們已經添加了操作系統監控,進程監控,那么一款優秀的開源軟件,在自定義key方面應該時非常強大的,例如zabbix的自定義key。在prometheus里面其實也是一樣的,在后期我們可以使用client SDK通過程序生成數據。
9.1 node-exporter自定義key原理
實際上node-exporter讀取自定義key定時從指定的目錄里面讀取相關的key值、文件名稱以*.prom來查看,定時讀取相關參數,下面時以一個用戶登錄數為例: