如何在Linux上配置监控报警

来源:程序开发作者:小何头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上配置监控报警》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置监控报警》有用,将其分享出去将是对创作者最好的鼓励。

在Linux服务器运维场景中,配置监控报警能够帮助我们及时发现CPU、内存、磁盘等资源异常,以及服务宕机等问题,避免故障扩大造成业务损失。本文将基于Prometheus生态组件,讲解完整的Linux监控报警配置流程。

如何在Linux上配置监控报警

一、核心组件说明

本次配置使用Prometheus生态的常用组件,各组件功能如下:

  • Node Exporter:部署在每台Linux服务器上,负责采集服务器的CPU、内存、磁盘、网络等基础指标,暴露HTTP接口供Prometheus拉取。
  • Prometheus:核心监控服务,定时从Node Exporter拉取指标数据并存储,同时根据配置的报警规则触发告警。
  • Alertmanager:接收Prometheus发送的告警信息,对告警进行去重、分组、路由,最终发送到邮件、企业微信等通知渠道。

二、组件安装部署

1. 安装Node Exporter

首先在所有需要监控的Linux服务器上部署Node Exporter,以Linux amd64架构为例:

# 下载Node Exporter安装包
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
# 解压安装包
tar -zxvf node_exporter-1.6.1.linux-amd64.tar.gz
# 移动到/usr/local目录
mv node_exporter-1.6.1.linux-amd64 /usr/local/node_exporter
# 创建systemd服务文件
cat > /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=root
ExecStart=/usr/local/node_exporter/node_exporter
Restart=always

[Install]
WantedBy=multi-user.target
EOF
# 启动服务并设置开机自启
systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter

启动后可以通过curl http://127.0.0.1:9100/metrics验证服务是否正常暴露指标。

2. 安装Prometheus

选择一台作为监控中心的Linux服务器部署Prometheus:

# 下载Prometheus安装包
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
# 解压安装包
tar -zxvf prometheus-2.45.0.linux-amd64.tar.gz
# 移动到/usr/local目录
mv prometheus-2.45.0.linux-amd64 /usr/local/prometheus
# 修改Prometheus配置文件,添加Node Exporter采集目标
cat > /usr/local/prometheus/prometheus.yml << EOF
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "node"
    static_configs:
      - targets: ["127.0.0.1:9100"]  # 替换为实际Node Exporter的IP和端口,多个目标用逗号分隔
EOF
# 创建systemd服务文件
cat > /etc/systemd/system/prometheus.service << EOF
[Unit]
Description=Prometheus
After=network.target

[Service]
User=root
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data
Restart=always

[Install]
WantedBy=multi-user.target
EOF
# 启动服务并设置开机自启
systemctl daemon-reload
systemctl start prometheus
systemctl enable prometheus

启动后访问http://127.0.0.1:9090/targets可以看到Node Exporter的采集状态。

3. 安装Alertmanager

同样在监控中心服务器部署Alertmanager:

# 下载Alertmanager安装包
wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
# 解压安装包
tar -zxvf alertmanager-0.25.0.linux-amd64.tar.gz
# 移动到/usr/local目录
mv alertmanager-0.25.0.linux-amd64 /usr/local/alertmanager
# 创建systemd服务文件
cat > /etc/systemd/system/alertmanager.service << EOF
[Unit]
Description=Alertmanager
After=network.target

[Service]
User=root
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
Restart=always

[Install]
WantedBy=multi-user.target
EOF
# 启动服务并设置开机自启
systemctl daemon-reload
systemctl start alertmanager
systemctl enable alertmanager

三、配置报警规则

首先在Prometheus中配置报警规则文件路径,修改/usr/local/prometheus/prometheus.yml,添加如下内容:

rule_files:
  - "rules/*.yml"  # 报警规则文件存放目录

然后在/usr/local/prometheus/rules/目录下创建服务器基础监控报警规则文件node_alerts.yml

groups:
- name: node_alerts
  rules:
  # CPU使用率超过80%持续1分钟触发告警
  - alert: HighCpuUsage
    expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 80
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "服务器CPU使用率过高"
      description: "实例{{ $labels.instance }}的CPU使用率超过80%,当前值为{{ $value }}%"
  # 内存使用率超过90%触发告警
  - alert: HighMemoryUsage
    expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "服务器内存使用率过高"
      description: "实例{{ $labels.instance }}的内存使用率超过90%,当前值为{{ $value }}%"
  # 磁盘根分区使用率超过85%触发告警
  - alert: HighDiskUsage
    expr: (1 - (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"})) * 100 > 85
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "服务器磁盘使用率过高"
      description: "实例{{ $labels.instance }}的根分区使用率超过85%,当前值为{{ $value }}%"

重启Prometheus使配置生效:

systemctl restart prometheus

四、配置报警通知渠道

以邮件报警为例,修改/usr/local/alertmanager/alertmanager.yml配置文件:

global:
  smtp_smarthost: 'smtp.ipipp.com:465'  # 替换为实际邮箱SMTP服务器地址
  smtp_from: 'alert@ipipp.com'  # 发件人邮箱
  smtp_auth_username: 'alert@ipipp.com'  # 邮箱账号
  smtp_auth_password: 'your_email_password'  # 邮箱授权码
  smtp_require_tls: false

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'email-notifications'

receivers:
- name: 'email-notifications'
  email_configs:
  - to: 'admin@ipipp.com'  # 收件人邮箱,多个收件人用逗号分隔
    send_resolved: true  # 告警恢复时发送通知

重启Alertmanager使配置生效:

systemctl restart alertmanager

最后需要在Prometheus中配置Alertmanager地址,修改/usr/local/prometheus/prometheus.yml,添加如下内容:

alerting:
  alertmanagers:
    - static_configs:
        - targets:
          - "127.0.0.1:9093"  # Alertmanager的地址和端口

再次重启Prometheus,当服务器指标触发报警规则时,就会收到对应的邮件告警通知。

五、验证配置

可以手动模拟服务器资源异常来验证报警是否生效,比如通过stress工具压满CPU:

# 安装stress工具
yum install -y stress
# 压满2个CPU核心,持续5分钟
stress --cpu 2 --timeout 300

等待1分钟左右,就可以在Prometheus的Alert页面看到HighCpuUsage告警状态变为FIRING,随后会收到邮件告警通知。

Linux监控报警配置PrometheusAlertmanagerNode_Exporter修改时间:2026-07-09 16:21:45

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。