簡介
目前有許許多多的lib、應用可以將已經廣泛使用的通用組件對應的指標轉換成Prometheus指定的指標格式(普通的文本),來幫助使用者利用Prometheus來監控這些組件,例如Kafka、mysql、HAProxy等。這些lib、應用被稱為exporter。本章節我們通過Prometheus官方維護的node-exporter(用來監控Linux系統指標)來進一步學習Prometheus
node-exporter安裝
node-exporter采用go語言開發,專門用來收集*NIX系統中硬件、系統指標。既可以用二進制安裝部署,也可以通過容器形式部署
二進制安裝
-
進入下載頁,獲取相應版本的下載鏈接
-
以0.18.1版本為例
$ mkdir /opt/k8s/prometheus & cd /opt/k8s/prometheus $ wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz $ tar -xzvf node_exporter-0.18.1.linux-amd64.tar.gz $ cd node_exporter-0.18.1.linux-amd64 $ls -al 總用量 16508 drwxr-xr-x 2 3434 3434 4096 6月 5 2019 . drwxr-xr-x 4 root root 4096 3月 19 09:18 .. -rw-r--r-- 1 3434 3434 11357 6月 5 2019 LICENSE -rwxr-xr-x 1 3434 3434 16878582 6月 5 2019 node_exporter -rw-r--r-- 1 3434 3434 463 6月 5 2019 NOTICE
- node_exporter 安裝包極其簡單,只有一個二進制啟動文件
-
啟動node_exporter
$ cd /opt/k8s/prometheus/node_exporter-0.18.1.linux-amd64 $ ./node_exporter
-
執行./node_exporter -h 命令查看node_exporter的配置項,如監聽端口,收集指標類型
-
node_exporter監聽端口9100,通過--web.listen-address參數修改
-
node_exporter默認采用http協議,如果需要用https形式啟動,通過./node_exporter --web.config="web-config.yml"指定,web-config.yml文件格式如下:
tlsConfig : # Certificate and key files for server to use to authenticate to client tlsCertPath : <filename> tlsKeyPath : <filename>
-
-
將node_exporter配置成系統服務,隨系統啟動
-
編輯啟動文件
$ cat > /etc/systemd/system/node_exporter.service<< EOF [Unit] Description=Prometheus Server Documentation=https://prometheus.io/docs/introduction/overview/ After=network.target [Service] Restart=on-failure WorkingDirectory=/opt/k8s/prometheus/node_exporter-0.18.1.linux-amd64 ExecStart=/opt/k8s/prometheus/node_exporter-0.18.1.linux-amd64/node_exporter \ [Install] WantedBy=multi-user.target EOF
-
通過systemctl啟動node_exporter
$ systemctl daemon-reload $ systemctl start node_exporter $ systemctl enable node_exporter
-
docker 容器形式啟動
因為node_exporter是用來監控主機指標的,一般情況下不太推薦用容器方式啟動,但是在k8s、swarm等環境中,為了保持組件部署的一致性我們還是期望能用容器形式啟動。另外在k8s中以daemonset,在swarm中將service的replicate設置成all,這樣我們當系統中有新節點進來時,node_exporter容器會自動在新節點上啟動,不需要人工干預。
由於需要監控宿主機指標,所以需要使用宿主機的process、文件系統、網絡等信息,因為需要把宿主機的信息掛載進去
docker run -d \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
quay.io/prometheus/node-exporter \
--path.rootfs=/host
配置Prometheus,從node_exporter中獲取指標信息
-
在Prometheus配置文件中追加node_exporter對應的scrape_config信息
... scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100']
-
通過kill -HUP 重新加載Prometheus配置文件
$ systemctl reload prometheus
-
訪問Prometheus界面,在metric下拉框中可以看到許多與node相關的指標名字出現