Prometheus(四) node-exporter監控服務器


簡介

目前有許許多多的lib、應用可以將已經廣泛使用的通用組件對應的指標轉換成Prometheus指定的指標格式(普通的文本),來幫助使用者利用Prometheus來監控這些組件,例如Kafka、mysql、HAProxy等。這些lib、應用被稱為exporter。本章節我們通過Prometheus官方維護的node-exporter(用來監控Linux系統指標)來進一步學習Prometheus

node-exporter安裝

node-exporter采用go語言開發,專門用來收集*NIX系統中硬件、系統指標。既可以用二進制安裝部署,也可以通過容器形式部署

二進制安裝
  1. 進入下載頁,獲取相應版本的下載鏈接

  2. 以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 安裝包極其簡單,只有一個二進制啟動文件
  3. 啟動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>
      
  4. 將node_exporter配置成系統服務,隨系統啟動

    1. 編輯啟動文件

      $ 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
      
      
    2. 通過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中獲取指標信息

  1. 在Prometheus配置文件中追加node_exporter對應的scrape_config信息

    ...
    scrape_configs:
      - job_name: 'node'
        static_configs:
        - targets: ['localhost:9100']
    
    
  2. 通過kill -HUP 重新加載Prometheus配置文件

    $ systemctl reload prometheus
    
    
  3. 訪問Prometheus界面,在metric下拉框中可以看到許多與node相關的指標名字出現


免責聲明!

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



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