插件窝 干货文章 如何在Linux上配置监控报警

如何在Linux上配置监控报警

Prometheus Zabbix Alertmanager 配置 125    来源:    2025-04-16

Linux监控报警配置指南

1. 监控系统选择

在Linux上配置监控报警,通常需要以下几个组件:

主流监控系统

  • Prometheus + Grafana + Alertmanager (现代云原生监控方案)
  • Zabbix (企业级传统监控方案)
  • Nagios (经典监控系统)
  • Telegraf + InfluxDB + Grafana (时序数据监控方案)

2. Prometheus监控报警配置示例

2.1 安装Prometheus

# 下载Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*

# 启动Prometheus
./prometheus --config.file=prometheus.yml

2.2 配置监控目标

编辑prometheus.yml文件:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']  # Node Exporter地址

2.3 安装Node Exporter(用于系统指标)

wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
cd node_exporter-*
./node_exporter

2.4 安装Alertmanager

wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
tar xvfz alertmanager-*.tar.gz
cd alertmanager-*

2.5 配置报警规则

创建alert.rules文件:

groups:
- name: example
  rules:
  - alert: HighMemoryUsage
    expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes > 0.8
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High memory usage on {{ $labels.instance }}"
      description: "Memory usage is {{ $value }}%"

2.6 配置Alertmanager

编辑alertmanager.yml

route:
  receiver: 'email-notifications'

receivers:
- name: 'email-notifications'
  email_configs:
  - to: 'admin@example.com'
    from: 'alertmanager@example.com'
    smarthost: 'smtp.example.com:587'
    auth_username: 'alertmanager'
    auth_password: 'password'

3. Zabbix监控配置示例

3.1 安装Zabbix Server

# Ubuntu/Debian
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

# CentOS/RHEL
sudo yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent

3.2 配置数据库

CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;

3.3 导入初始数据

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

3.4 配置报警媒介

在Zabbix Web界面中: 1. 导航到"Administration" → "Media Types" 2. 配置Email、Slack、Webhook等报警方式

3.5 创建触发器

  1. 导航到"Configuration" → "Hosts"
  2. 选择主机并创建触发器,例如:
    • 表达式: {host:system.cpu.load[all,avg1].last()}>5
    • 严重性: High
    • 描述: "High CPU load on {HOST.NAME}"

4. 基础监控报警脚本

对于简单需求,可以使用Shell脚本+cron+mailx:

#!/bin/bash

# CPU监控报警脚本
CPU_LOAD=$(uptime | awk '{print $10}' | cut -d. -f1)
MAX_LOAD=80

if [ $CPU_LOAD -gt $MAX_LOAD ]; then
  echo "High CPU load: $CPU_LOAD%" | mail -s "CPU Alert" admin@example.com
fi

添加到cron:

crontab -e
# 每5分钟运行一次
*/5 * * * * /path/to/monitor_script.sh

5. 现代替代方案

5.1 使用Grafana报警

  1. 在Grafana中创建仪表板
  2. 为面板添加报警规则
  3. 配置通知渠道(Email、Slack、PagerDuty等)

5.2 使用Elastic Stack (ELK)

  • Filebeat/Metricbeat收集日志和指标
  • Elasticsearch存储数据
  • Kibana可视化
  • Watcher或ElastAlert进行报警

6. 最佳实践建议

  1. 分层监控:系统层、应用层、业务层
  2. 报警分级:区分紧急、警告、信息等级别
  3. 避免报警疲劳:设置合理的阈值和静默期
  4. 多通知渠道:邮件+短信+即时通讯工具
  5. 定期回顾:分析报警有效性,优化规则

以上配置可根据实际需求进行调整和组合,形成适合您环境的监控报警方案。