node_exporter
version: '3.8'
services:
node_exporter:
image: quay.io/prometheus/node-exporter:v1.10.2
container_name: node_exporter
command:
- '--path.rootfs=/host'
network_mode: host
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
node-exporter:
image: 192.168.3.12:5005/prometheus/node-exporter:v1.10.2
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
# 👇 新增:textfile 目录
- /var/lib/node_exporter/textfile:/textfile:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
# 👇 新增:开启 textfile collector
- '--collector.textfile.directory=/textfile'
textfile collector
/var/lib/node_exporter/textfile/dm_license.prom
dm_license_expiry_timestamp 1777488000
启动 Node Exporter 时,如果开启了这个参数:
--collector.textfile.directory=/var/lib/node_exporter/textfile
它会做一件事:
👉 每次 Prometheus 来抓 /metrics 时:
扫描这个目录
读取所有 .prom 文件
把内容拼进 /metrics 输出
告警
groups:
- name: dm-license-alert
rules:
- alert: DMLicenseExpireSoon
expr: (dm_license_expiry_timestamp - time()) / 86400 <= 90
for: 0m
labels:
severity: warning
annotations:
summary: "达梦数据库授权即将到期"
description: "剩余 {{ printf \"%.0f\" $value }} 天"
Note
在 Prometheus 里,它返回的是: 满足条件 → 返回 原始数值(剩余天数) 不满足 → 这个时间序列直接消失
route:
receiver: feishu
group_by: ['alertname']
group_wait: 30s
group_interval: 24h
repeat_interval: 24h
receivers:
- name: feishu
webhook_configs:
- url: "https://open.feishu.cn/open-apis/bot/v2/hook/你的token"