prometheus-02 node-exporter部署及使用


node_exporter安裝及部署

Prometheus使用exporter工具來暴露主機和應用程序上的指標。有很多中類型的exporter。node_exporter下載地址

1.二進制安裝node_exporter

1.添加新的系統用戶
useradd --system node_exporter
2. 進行解壓縮下載的軟件,然后拷貝node_exporter文件到/usr/bin目錄中。
tar zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/bin --strip-components=1 --wildcards */node_exporter

3.添加systemd unit文件
vim node-exporter.service 
    [Unit]
    Description=Node Exporter
    Documentation=https://github.com/prometheus/node_exporter
    After=network.target

    [Service]
    User=node_exporter
    ExecStart=/usr/bin/node_exporter
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target

install -m 0644 ./node-exporter.service /etc/systemd/system/

4. 啟動服務
systemctl daemon-reload
systemctl enable node-exporter
systemctl start node-exporter

node-exporter常用選項

默認情況下,node_exporter 在端口9100上運行,並在路徑/metrics上暴露指標。可以通過 --web.listen-address和 --web.telemetry-path參數來設置端口和路徑。

node_exporter --web.listen-address=":9222"  --web.telemetry-path="/node_metrics"

以上的定義就是監聽端口為9222,暴露的路徑為node_metrics。

很多收集器默認都是啟用的,如果不想啟用某些收集器,可以通過使用no-前綴來修改狀態。

如:不要收集CPU相關信息

--no-collector.cpu

2.容器安裝node_exporter

參考node_exporter具體選項使用:https://github.com/prometheus/node_exporter

docker pull prom/node-exporter
# 
# 容器啟動node-exporter:
docker run -d \
  --net="host" \
  --pid="host" \
  -v "/:/host:ro,rslave" \
  quay.io/prometheus/node-exporter:latest \
  --path.rootfs=/host

# 編寫docker-compose啟動node-exporter容器文件:
vim docker-compse.yml
networks:
  monitor:
    driver: bridge
    
services:
  node_exporter:
     image: prom/node-exporter:latest
     container_name: node_exporter
     command: 
       - '--path.rootfs=/host'
       #- '--web.telemetry-path=/node_metrics' # 修改默認的uri(/metrics)
     network_mode: host
     pid: host
     hostname: node_exporter
     restart: always
     user: root
     volumes: 
       - '/:/host:ro,rslave'
     ports:
       - "9100:9100"
     networks:
       - monitor

node_exporter使用案例

1.textfile收集器

textfile收集器在暴露自定義指標時特別有用。這些自定義指標可能是批處理或cron作業等無法抓取的,可能是沒有exporter的源,甚至可能是為主機提供上下文的靜態指標

收集器通過掃描指定目錄中的文件,提取所有格式為Prometheus指標的字符串,然后暴露它們以便抓取。

1.創建一個目錄來保存指標定義文件

mkdir -p /var/lib/node_exporter/textfile_collector

2.創建一個文件

echo "metadata{role='docker_server',datacenter='SH'} 1" > /var/lib/node_exporter/textfile_collector/metadata.prom

[注意]如果要啟用textfile收集器,由於它默認會被加載,所以可能需要我們指定它的加載目錄。 --collector.textfile.directory

2.systemd收集器

systemd收集器默認收集了眾多指標,如果只想收集某些服務的話,可以把他們加入白名單。使用 --collector.systemd.unit-whitelist 參數配置

docker.service
sshd.service
rsyslog.service

3.Node Exporter修改如下

vim /etc/systemd/system/node-exporter.service

[Unit]
Description=Node Exporter
Documentation=https://github.com/prometheus/node_exporter
After=network.target

[Service]
User=node_exporter
ExecStart=/usr/bin/node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd --collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service"  # 在命令行直接執行node_exporter命令可以只抓取到自定義的這三個服務,但是寫到systemd,node_exporter就抓取不到了。嘗試把我們自定義收集的systemd(-collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service" )給刪除掉,使用systemd(node_exporter.service),抓取所有的systemd,就可以了。
Restart=on-failure

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl restart node-exporter

4.prometheus配置

# /etc/prometheus.yml配置中增加如下:
- job_name: 'node'
  static_configs:
    - targets: ["192.168.1.121:9100"]

5.過濾收集器

Node Exporter可以返回很多指標。除了使用Node Exporter 控制運行哪些收集器之外,Prometheus還提供一種方式來限制收集器從服務器端實際抓取的數據。

修改配置如下:

# /etc/prometheus.yml配置信息如下
- job_name: 'node'
  sttic_configs:
    - targets: ['192.168.1.121:9090']
  params:
      collect[]:  # 限制只收集這五種指標
       - cpu
       - meminfo
       - diskstats
       - netdev 
       - systemd

現在去掉diskstats指標,查看prometheus抓取的數據就不包含disk相關的指標了。。。。。

# /etc/prometheus.yml配置信息如下
- job_name: 'node'
  sttic_configs:
    - targets: ['192.168.1.121:9090']
  params:
      collect[]:  # 限制只收集這五種指標
       - cpu
       - meminfo
       # - diskstats
       - netdev 
       - systemd

image-20211113003319035


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM