当前位置:网站首页 >  教程

专项运维实战指南:从零搭建监控告警体系

时间:2026年06月14日 11:42:42 来源:易频IT社区

本文将手把手带你搭建一个完整的服务器监控与告警系统。你不需要任何监控经验,只需要一台能上网的服务器,按照步骤操作,就能实现对服务器CPU、内存、磁盘、网络等核心指标的实时监控,并在出现问题时立刻收到告警通知。

一、 环境准备与工具选型

我们选择最经典、应用最广的开源监控组合:Prometheus(采集与存储)、Grafana(可视化)、Alertmanager(告警管理)以及Node Exporter(主机指标暴露器)。这套组合稳定、高效,是业界事实上的标准。

1.1 服务器要求

确保你有一台安装有Linux系统(以CentOS 7为例)的服务器,并已配置好sudo权限的账户。所有组件都将安装在这台服务器上。

通过以下命令检查系统并更新软件包:

``` sudo yum update -y ```

1.2 创建专用用户与目录

为安全和管理方便,为监控组件创建专用用户和统一的安装目录。

``` sudo useradd -m -s /bin/bash prometheus sudo mkdir -p /opt/monitoring/{prometheus,grafana,alertmanager,exporters} sudo chown -R prometheus:prometheus /opt/monitoring ```

二、 部署Node Exporter(指标采集)

Node Exporter用于收集主机硬件和操作系统指标,并暴露给Prometheus抓取。

2.1 下载与安装

以prometheus用户身份操作,下载最新稳定版Node Exporter。

``` sudo su - prometheus cd /opt/monitoring/exporters wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz tar xvf node_exporter-1.6.0.linux-amd64.tar.gz mv node_exporter-1.6.0.linux-amd64 node_exporter ```

2.2 配置系统服务

退出prometheus用户,回到具有sudo权限的账户。创建Systemd服务文件以便管理。

``` exit sudo vim /etc/systemd/system/node_exporter.service ```

将以下内容完整写入该文件:

``` [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/opt/monitoring/exporters/node_exporter/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target ```

保存后,启动并设置开机自启:

``` sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter ```

验证服务是否运行,并监听在9100端口:

``` sudo systemctl status node_exporter curl http://localhost:9100/metrics ```

三、 部署Prometheus(监控核心)

Prometheus负责定时抓取Node Exporter暴露的指标数据,并进行存储。

3.1 下载与安装

切换回prometheus用户进行安装。

``` sudo su - prometheus cd /opt/monitoring/prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz tar xvf prometheus-2.45.0.linux-amd64.tar.gz mv prometheus-2.45.0.linux-amd64 prometheus-server ```

3.2 配置Prometheus

编辑主配置文件,定义要抓取的目标(即我们的Node Exporter)。

``` cd /opt/monitoring/prometheus/prometheus-server vim prometheus.yml ```

用以下配置完全替换原有文件内容:

``` global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: - localhost:9093 rule_files: - "alert_rules.yml" scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100'] ```

接着,创建告警规则文件。我们定义一个简单的“实例宕机”和“高CPU使用率”规则。

``` vim alert_rules.yml ```

输入以下内容:

``` groups: - name: host_monitoring rules: - alert: InstanceDown expr: up == 0 for: 1m labels: severity: critical annotations: summary: "Instance {{ $labels.instance }} down" description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute." - alert: HighCpuUsage expr: (100 - (avg by (instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) 100)) > 80 for: 5m labels: severity: warning annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "CPU usage on {{ $labels.instance }} is above 80% for 5 minutes, current value is {{ $value }}%." ```

3.3 配置系统服务并启动

退出prometheus用户,创建Systemd服务。

``` exit sudo vim /etc/systemd/system/prometheus.service ```

写入以下配置:

``` [Unit] Description=Prometheus Server Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/opt/monitoring/prometheus/prometheus-server/prometheus \ --config.file=/opt/monitoring/prometheus/prometheus-server/prometheus.yml \ --storage.tsdb.path=/opt/monitoring/prometheus/data \ --web.console.templates=/opt/monitoring/prometheus/prometheus-server/consoles \ --web.console.libraries=/opt/monitoring/prometheus/prometheus-server/console_libraries \ --web.listen-address=:9090 Restart=on-failure [Install] WantedBy=multi-user.target ```

启动并启用服务:

``` sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus ```

验证:访问 http://你的服务器IP:9090/targets,应看到prometheus和node_exporter两个目标状态均为“UP”。

四、 部署Alertmanager(告警管理)

Alertmanager负责接收Prometheus发出的告警,并进行去重、分组,然后路由到正确的接收器(如邮箱)。

4.1 下载与安装

``` sudo su - prometheus cd /opt/monitoring/alertmanager wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz tar xvf alertmanager-0.25.0.linux-amd64.tar.gz mv alertmanager-0.25.0.linux-amd64 alertmanager-server ```

4.2 配置Alertmanager(以邮件告警为例)

假设你使用QQ邮箱发送告警。你需要开启QQ邮箱的SMTP服务并获取授权码(这里用`your_auth_code`代替)。

专项运维实战指南:从零搭建监控告警体系

创建配置文件:

``` cd /opt/monitoring/alertmanager/alertmanager-server vim alertmanager.yml ```

输入以下完整配置,将`smtp.qq.com`处的`your_email@qq.com`和`your_auth_code`替换为你的实际信息:

``` global: smtp_smarthost: 'smtp.qq.com:465' smtp_from: 'your_email@qq.com' smtp_auth_username: 'your_email@qq.com' smtp_auth_password: 'your_auth_code' smtp_require_tls: true route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'email-notifications' receivers: - name: 'email-notifications' email_configs: - to: 'your_receive_email@example.com' send_resolved: true ```

4.3 配置系统服务并启动

``` exit sudo vim /etc/systemd/system/alertmanager.service ```

写入配置:

``` [Unit] Description=Alertmanager Server Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/opt/monitoring/alertmanager/alertmanager-server/alertmanager \ --config.file=/opt/monitoring/alertmanager/alertmanager-server/alertmanager.yml \ --storage.path=/opt/monitoring/alertmanager/data \ --web.listen-address=:9093 Restart=on-failure [Install] WantedBy=multi-user.target ```

启动并启用服务:

``` sudo systemctl daemon-reload sudo systemctl start alertmanager sudo systemctl enable alertmanager ```

验证:访问 http://你的服务器IP:9093,应看到Alertmanager的Web界面。

五、 部署Grafana(数据可视化)

Grafana用于将Prometheus中的数据绘制成直观的图表仪表盘。

5.1 安装Grafana

Grafana建议通过官方YUM仓库安装。

``` sudo vim /etc/yum.repos.d/grafana.repo ```

写入以下仓库配置:

``` [grafana] name=grafana baseurl=https://packages.grafana.com/oss/rpm repo_gpgcheck=1 enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt ```

安装并启动Grafana:

``` sudo yum install -y grafana sudo systemctl start grafana-server sudo systemctl enable grafana-server ```

Grafana默认运行在3000端口。首次访问 http://你的服务器IP:3000,使用默认账号密码`admin/admin`登录,系统会要求立即修改密码。

5.2 配置数据源与导入仪表盘

登录后,点击左侧齿轮图标“Configuration”,选择“Data Sources”。

点击“Add data source”,选择“Prometheus”。

在“HTTP”部分的URL栏,填写 http://localhost:9090

其他保持默认,滚动到页面底部,点击“Save & Test”,看到“Data source is working”提示即表示成功。

接下来导入一个现成的主机监控仪表盘。点击左侧“+”号,选择“Import”。

在“Import via grafana.com”输入框中,输入仪表盘ID 1860,然后点击Load。

在下一个页面,选择Prometheus数据源为你刚添加的数据源,点击“Import”。

现在,你就能看到一个完整的、包含CPU、内存、磁盘IO、网络流量等各项指标的专业主机监控仪表盘了。

六、 验证全链路告警

系统已全部搭建完成。现在,让我们触发一个高CPU告警来测试整个链路是否通畅。

在服务器上运行一个消耗CPU的命令,持续几分钟:

``` dd if=/dev/zero of=/dev/null & ```

等待约5-10分钟后,你应该:

  • 在Grafana仪表盘上看到CPU使用率图表飙升。
  • 在Prometheus的“Alerts”页面(http://你的服务器IP:9090/alerts)看到“HighCpuUsage”告警状态变为“FIRING”。
  • 在Alertmanager的Web界面(http://你的服务器IP:9093)看到该告警信息。
  • 收到配置的邮箱发送的告警邮件。

测试完成后,记得停止压力测试命令:

``` sudo pkill -f "dd if=/dev/zero" ```

七、 后续维护与扩展

至此,一个可用的监控告警系统已搭建完毕。为了长期稳定运行,请注意:

  • 数据清理:Prometheus默认数据保留15天。如需调整,可在prometheus.service的ExecStart命令后添加参数 --storage.tsdb.retention.time=90d(例如保留90天)。
  • 安全加固:生产环境务必为Grafana、Prometheus等Web服务配置防火墙(如firewalld或iptables),限制访问IP,或配置Nginx反向代理并添加HTTPS和基础认证。
  • 监控更多目标:如需监控MySQL、Redis、Nginx等服务,只需部署对应的Exporter(如mysqld_exporter),并在prometheus.yml的`scrape_configs`部分添加新的job即可。
  • 告警渠道扩展:Alertmanager除邮件外,还支持Webhook(可对接钉钉、企业微信、Slack)、PagerDuty等多种通知方式,只需在alertmanager.yml的`receivers`部分配置。

这套系统是运维的“眼睛”和“耳朵”,请确保其自身的高可用。对于核心生产环境,建议将Prometheus、Alertmanager部署为多实例集群,并将关键仪表盘配置在Grafana的“Starred”中以便快速查看。

标签 专项运维

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图