配置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
- targets; ['192.168.1.2','192.168.1.3']
標籤
更改或新增標籤會建立新的時間序列
重新標記的用途
·刪除不必要的指標
·從指標中刪除敏感或不需要的標籤
·新增、 編輯或修改指標的標籤值或標籤格式
重新標記的兩個階段
在抓取之前使用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"