Skip to content

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"
☁️ 部署建议
如果你打算长期运行项目(博客 / API / 自动化脚本),建议直接用云服务器,会比本地稳定很多。
👉 查看云服务器(新用户优惠)