配置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"