从零开始搭建 Prometheus 与 Grafana 监控系统:实战演练
监控系统是现代 IT 基础设施的重要组成部分,用于监控服务器、应用程序和服务的性能和可用性。Prometheus 和 Grafana 是目前广泛使用的开源监控和可视化工具。本篇文章将从零开始,手把手带你搭建 Prometheus 与 Grafana 监控系统,包括环境准备、安装配置、数据采集、可视化展示和报警设置等内容。
目录
- 环境准备
- 安装 Prometheus
- 配置 Prometheus
- 安装 Node Exporter
- 安装 Grafana
- 配置 Grafana
- 创建监控 Dashboard
- 设置报警规则
- 总结与扩展
1. 环境准备
在开始搭建 Prometheus 和 Grafana 之前,需要准备以下环境和工具:
- 一台 Linux 服务器(本文以 Ubuntu 20.04 为例)
- Docker(可选,但推荐用于简化安装过程)
- 基本的 Linux 命令行操作知识
在开始之前,确保你的服务器已经可以访问互联网,以便下载必要的安装包和 Docker 镜像。
步骤:
-
更新系统包:
sudo apt update && sudo apt upgrade -y
-
安装 Docker:
如果还没有安装 Docker,可以通过以下命令进行安装:
sudo apt install docker.io -y
-
启动 Docker 并设置开机自启:
sudo systemctl start docker sudo systemctl enable docker
-
验证 Docker 安装是否成功:
docker --version
2. 安装 Prometheus
Prometheus 是一个开源的系统监控和报警工具,采用拉取(pull)模型收集数据,具有强大的查询语言 PromQL。我们将通过 Docker 安装 Prometheus。
步骤:
-
拉取 Prometheus 镜像:
docker pull prom/prometheus
-
创建 Prometheus 配置文件:
创建一个名为
prometheus.yml
的文件,配置 Prometheus 拉取数据的方式。以下是一个简单的配置示例:global:scrape_interval: 15s # 拉取数据的时间间隔evaluation_interval: 15s # 规则评估的时间间隔scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090'] # Prometheus 自身
-
运行 Prometheus:
使用以下命令启动 Prometheus:
docker run -d --name=prometheus -p 9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
-
验证 Prometheus 是否运行:
打开浏览器访问
http://<你的服务器 IP>:9090
,可以看到 Prometheus 的 Web 界面。
3. 配置 Prometheus
Prometheus 的核心是配置文件 prometheus.yml
,通过该文件定义数据采集的来源、频率以及评估规则。我们需要进一步配置以便收集更多的系统指标。
步骤:
-
配置 Node Exporter:
Node Exporter 是 Prometheus 官方推荐的用于收集 Linux 系统指标的工具。我们需要在 Prometheus 的配置文件中添加 Node Exporter 的目标。
scrape_configs:- job_name: 'node_exporter'static_configs:- targets: ['localhost:9100']
-
重新加载 Prometheus 配置:
如果 Prometheus 是通过 Docker 运行的,可以通过重启容器来加载新的配置:
docker restart prometheus
4. 安装 Node Exporter
Node Exporter 是一个用于暴露系统指标给 Prometheus 的工具,它可以收集 CPU、内存、磁盘、网络等系统级别的指标。我们通过 Docker 安装 Node Exporter。
步骤:
-
拉取 Node Exporter 镜像:
docker pull prom/node-exporter
-
运行 Node Exporter:
docker run -d --name=node_exporter -p 9100:9100 prom/node-exporter
-
验证 Node Exporter:
访问
http://<你的服务器 IP>:9100/metrics
,可以看到系统的各项指标数据。
5. 安装 Grafana
Grafana 是一个开源的数据可视化工具,支持多种数据源,如 Prometheus、InfluxDB、MySQL 等。它的强大之处在于其灵活的 Dashboard 和可视化组件。
步骤:
-
拉取 Grafana 镜像:
docker pull grafana/grafana
-
运行 Grafana:
docker run -d --name=grafana -p 3000:3000 grafana/grafana
-
访问 Grafana:
打开浏览器,访问
http://<你的服务器 IP>:3000
,默认用户名和密码都是admin
。首次登录后会提示修改密码。
6. 配置 Grafana
Grafana 安装完成后,需要配置数据源以从 Prometheus 获取监控数据。
步骤:
-
添加 Prometheus 数据源:
- 登录 Grafana 后,点击左侧边栏的“Configuration” > “Data Sources”。
- 点击“Add data source”,选择 “Prometheus”。
- 在 URL 栏输入
http://<你的服务器 IP>:9090
,然后点击“Save & Test”确认数据源配置成功。
-
验证数据源:
如果配置成功,Grafana 会显示“Data source is working”的提示。
7. 创建监控 Dashboard
Grafana 提供了丰富的 Dashboard 模板,可以快速创建各种监控面板。我们将创建一个简单的系统监控 Dashboard。
步骤:
-
创建新 Dashboard:
- 在 Grafana 首页,点击“Create” > “Dashboard”。
- 选择“Add new panel”,在“Query”栏选择数据源为 Prometheus。
-
添加查询:
- 在“Query”输入框输入 PromQL 查询,如
node_cpu_seconds_total
,可以看到实时的 CPU 使用情况。 - 点击“Apply”保存该面板。
- 在“Query”输入框输入 PromQL 查询,如
-
保存 Dashboard:
点击右上角的“Save”按钮,为你的 Dashboard 命名并保存。
8. 设置报警规则
监控系统的一个重要功能是报警,当某些指标超过设定的阈值时,系统会自动发送通知。Prometheus 支持通过配置报警规则来实现这一功能。
步骤:
-
配置报警规则文件:
创建一个名为
alert.rules
的文件,添加以下内容:groups:- name: examplerules:- alert: HighCPUUsageexpr: node_cpu_seconds_total{mode="system"} > 0.5for: 1mlabels:severity: criticalannotations:summary: "Instance {{ $labels.instance }} high CPU usage"description: "CPU usage is above 50% for more than 1 minute."
-
在 Prometheus 配置中添加报警规则:
在
prometheus.yml
中添加以下内容:rule_files:- "alert.rules"
-
重新加载 Prometheus 配置:
使用以下命令重启 Prometheus 以应用新的配置:
docker restart prometheus
-
设置报警通知:
Prometheus 支持多种报警通知方式,如 Email、Slack、Webhook 等。可以通过配置 Alertmanager 来实现更灵活的报警策略。
9. 总结与扩展
通过本篇文章的实战演练,你已经成功搭建了一个基本的 Prometheus 与 Grafana 监控系统。这个系统能够收集服务器的各项指标数据,并通过 Grafana 实时展示,同时支持设置报警规则以在系统异常时通知相关人员。
后续扩展:
- 集成更多的 Exporter: Prometheus 社区提供了多种 Exporter,可用于监控数据库(如 MySQL、PostgreSQL)、消息队列(如 Kafka、RabbitMQ)等。
- 优化报警策略: 根据实际需求优化报警规则,避免过多无效的报警。
- 安全配置: 考虑为 Prometheus 和 Grafana 配置 HTTPS 和用户认证,以确保监控数据的安全性。
通过不断优化和扩展,你可以将这个基础监控系统逐步升级为生产环境中强大而灵活的运维保障工具。