Prometheus 和 Grafana 是现代监控系统的黄金组合。Prometheus 作为一个开源的监控系统和时间序列数据库,以其强大的指标收集和查询能力广泛应用于云原生环境。而 Grafana 则是一个用于数据可视化和监控的开源平台,能够将 Prometheus 收集的数据以图表的形式展现出来,帮助用户更直观地理解系统的运行状态。本指南将从 Prometheus 和 Grafana 的安装开始,逐步讲解如何配置基本的监控任务。
Prometheus 是一个开源系统监控和报警工具包,最初由 SoundCloud 开发,并且现已成为 Cloud Native Computing Foundation 的一个项目。Prometheus 专注于多维度的数据模型,灵活的查询语言(PromQL)和强大的数据收集、告警功能,使其在微服务和容器化应用监控中尤为流行。
Grafana 是一个开源的、功能强大的可视化和监控平台。它允许用户连接多种数据源(如 Prometheus、Graphite、Elasticsearch 等),并使用丰富的图表、警报和面板进行数据展示。Grafana 的灵活性和易用性使其成为很多团队监控、分析、并告警的首选工具。
接下来我们将详细讲解如何在本地环境中安装 Prometheus 和 Grafana,并进行基础的配置。
步骤 1:下载 Prometheus
首先,从 Prometheus 官方下载页面 获取最新版本的 Prometheus。根据操作系统选择相应的版本并下载。
wget https://github.com/prometheus/prometheus/releases/download/v2.39.1/prometheus-2.39.1.linux-amd64.tar.gz
tar -xvzf prometheus-2.39.1.linux-amd64.tar.gz
cd prometheus-2.39.1.linux-amd64
步骤 2:配置 Prometheus
Prometheus 的配置文件通常命名为 prometheus.yml
,用于定义需要监控的目标和其他相关配置。以下是一个基本的配置示例:
global:
scrape_interval: 15s # 默认抓取间隔
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
这个配置定义了一个名为 prometheus
的 job,Prometheus 将每隔 15 秒从 localhost:9090
抓取数据。
步骤 3:启动 Prometheus
使用以下命令启动 Prometheus:
./prometheus --config.file=prometheus.yml
启动后,Prometheus 将默认运行在 localhost:9090
。
步骤 1:下载 Grafana
从 Grafana 官方下载页面 获取最新版本的 Grafana,并根据操作系统进行安装。
例如,在 Ubuntu 上可以使用如下命令安装:
sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_9.4.3_amd64.deb
sudo dpkg -i grafana-enterprise_9.4.3_amd64.deb
步骤 2:启动 Grafana
安装完成后,启动 Grafana 服务:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Grafana 默认运行在 localhost:3000
,初始用户名和密码都是 admin
。
有了 Prometheus 和 Grafana 之后,我们需要将 Prometheus 作为数据源接入 Grafana 以实现数据可视化。
http://localhost:9090
),然后点击“保存和测试”。成功配置后,Grafana 就可以从 Prometheus 获取数据进行展示。
进入 Grafana 首页,点击左侧菜单的“创建” > “仪表盘”。
在新仪表盘页面,点击“添加新面板”。
选择 Prometheus 数据源,并在查询窗口中输入 PromQL 查询。例如,查询 CPU 使用率可以输入:
rate(node_cpu_seconds_total{mode="idle"}[5m])
配置完成后,点击“应用”保存面板。
通过这种方式,可以逐步搭建符合自己需求的监控面板,展示系统的各项指标。
Prometheus 和 Grafana 结合使用时,可以轻松实现多种监控任务。以下是一些常见的基础监控示例:
监控 CPU 使用率是服务器监控的基础任务之一。通过以下 PromQL 查询语句,可以获得 CPU 使用率的相关数据:
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
内存使用情况的监控同样非常重要,可以通过以下 PromQL 查询内存的使用率:
100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))
磁盘 I/O 反映了磁盘的读写情况,通过监控这些指标,可以预防由于 I/O 瓶颈引发的性能问题。
rate(node_disk_read_bytes_total[5m])
和:
rate(node_disk_written_bytes_total[5m])
通过以下 PromQL 语句,可以监控网络的入站和出站流量:
rate(node_network_receive_bytes_total[5m])
和:
rate(node_network_transmit_bytes_total[5m])
Prometheus 和 Grafana 不仅支持数据的收集和展示,还能够根据设定的规则发送告警。告警功能可以帮助管理员及时发现系统问题并采取措施。
在 Prometheus 中,可以通过 alerting.rules
文件定义告警规则。例如,设置一个当 CPU 使用率超过 80% 时触发告警:
groups:
- name: example
rules:
- 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 detected"
在 Grafana 中可以基于面板设置告警规则:
Prometheus 和 Grafana 是现代系统监控领域的强大工具组合。Prometheus 负责数据收集、存储和告警,而 Grafana 则专注于数据的可视化展示。通过本指南的详细步骤,你可以从零开始搭建一个基本的监控系统,帮助你更好地了解
和管理应用系统的性能和健康状态。
在使用过程中,可以进一步探索 Prometheus 的高级功能,如自定义导出器、复杂的 PromQL 查询等,以及 Grafana 丰富的插件和自定义报警配置,以更好地满足具体的监控需求。通过不断地优化和调整监控策略,你的系统将会变得更加健壮、可控。