配置node_exporter

立勋發表於2024-05-10

配置node_exporter

配置node_exporter

可以透過--web.listen-address和--web.telemetry-path引數來設定埠和路徑。
例如:node_exporter --web.listen-address=":9600" --web.telemetry-path="/node_metrics"

禁用收集器
許多收集器預設都是啟用的。使用no-字首來修改狀態。
例如, 暴露/proc/net/arp統計資訊的arp收集器預設是啟用的,由引數--collector.arp控制。
因此, 要禁用此收集器, 需要執行如下命令 node_exporter --no-collector.arp

配置textfile收集器
mkdir -p /var/lib/node_exporter/textfile_collector
echo 'metadata{role="docker_server",datacenter="NJ"} 1' | tee /var/lib/node_exporter/textfile_collector/metadata.prom
在真實環境中, 建議使用配置管理工具來編輯該檔案
自定義的指標被放置在.prom結尾的檔案中。
testfile收集器預設為啟用狀態,無需開啟。但是需要在node_exporter啟動時指定testfile_exporter目錄, --collector.textfile.directory

啟用systemd收集器
這裡我們再啟用另一個systemd收集器, 它記錄systemd[1]中的服務和系統狀態。 這個收集器收集了很多指標, 但我們並不想收集systemd管理的所有內容, 而只想收集某些關鍵服務。 為了保持簡潔,我們可以將特定服務列入白名單, 只收集以下服務的指標:
·docker.service
·ssh.service
·rsyslog.service
它們是Docker守護程序、 SSH守護程序和RSyslog守護程序。 使用--collector.systemd.unit-whitelist引數進行配置, 它會匹配systemd的正規表示式。

啟動node_exporter
node_exporter --collector.textfile.directory=/var/lib/node_exporter/textfile_collector
--collector.systemd --collector.systemd.unit-whitelist="(docker|ssh|rsyslog).service"

prometheus中新增作業
scrape_configs:

  • job_name: 'node'
    static_configs:
    • targets; ['192.168.1.2','192.168.1.3']

過濾收集器
scrape_configs:

  • job_name: 'node'
    static_configs:
    • targets; ['192.168.1.2','192.168.1.3']
      params:
      collect[]:
      • cpu
      • meminfo
      • diskstats
      • netdev
      • netstat
      • filefd
      • filesystem
      • xfs
      • systemd

標籤

更改或新增標籤會建立新的時間序列

重新標記的用途
·刪除不必要的指標
·從指標中刪除敏感或不需要的標籤
·新增、 編輯或修改指標的標籤值或標籤格式

重新標記的兩個階段
在抓取之前使用relabel_configs
在抓取之後使用metric_relabel_configs

刪除指標
metric_relable_configs:

  • source_labels: [name]
    separator: ',' # __name__標籤值將使用","進行分隔。預設分隔符為";"
    regex: '(container_task_state|container_memory_failures_total)'

    如果指定了多個source_labels,使用";"隔開每個正規表示式, 例如:regex1;regex2

    action: drop

替換標籤值
metric_relable_configs:

  • source_labels: [id]
    regex: '/docker/([a-z0-9]+);'
    replacement: '$1'
    target_label: container_id

刪除標籤
這通常用於隱藏敏感資訊或簡化時間序列
metric_relable_configs:

  • regex: '/docker/([a-z0-9]+);'
    action: labeldrop

USE方法

cpu使用率
100 - avg (irate(node_cpu_seconds_total{job="node", mode="idle"}[5m])) by (instance) * 100

cpu飽和度 # 表示式報語法錯誤
node_load1 > on (instance) 2 * count by (instance) (node_cpu_seconds_total {mode="idle"})

記憶體使用率
·node_memory_MemTotal_bytes: 主機上的總記憶體。
·node_memory_MemFree_bytes: 主機上的可用記憶體。
·node_memory_Buffers_bytes: 緩衝快取中的記憶體。
·node_memory_Cached_bytes: 頁面快取中的記憶體。

查詢持久化

可以透過以下三種方式使查詢持久化:
·記錄規則: 根據查詢建立新指標。
·警報規則: 從查詢生成警報。
·視覺化: 使用Grafana等儀表板視覺化查詢

記錄規則是一種根據已有時間序列計算新時間序列(特別是聚合時間序列) 的方法, 我們這樣做是為了:
·跨多個時間序列生成聚合。
·預先計算消耗大的查詢。
·產生可用於生成警報的時間序列。

配置記錄規則
建立儲存規則的目錄,在該目錄中記錄規則。將該目錄指定在prometheus的配置檔案中
mkdir /usr/local/prometheus/rule
cd /usr/local/prometheus/rule
vim node_rule.yml
groups:

  • name: node_rule
    rules:
    ...
    vim prometheus.yml
    rule_files:
    • "/usr/local/prometheus/rule/*.yml"