写点什么

搭建服务端性能监控系统 Prometheus:从零开始的实践指南

  • 2024-12-06
    北京
  • 本文字数:2631 字

    阅读完需:约 9 分钟

全面解析软件测试开发:人工智能测试、自动化测试、性能测试、测试左移、测试右移到DevOps如何驱动持续交付 

随着互联网服务的不断发展与复杂化,服务端的性能监控变得愈加重要。为了保障服务的高可用性和用户体验,及时发现并解决性能瓶颈成为每个运维工程师和开发者的核心任务。Prometheus,作为一个开源的监控和报警系统,已经成为许多公司在云原生和容器化环境中进行性能监控的首选工具。

Prometheus 提供了强大的指标采集、存储、查询和可视化功能。它能够支持多种服务端指标的监控,包括 CPU 使用率、内存消耗、请求响应时间、吞吐量等,帮助团队提前发现潜在问题并提高系统的稳定性。

本文将带你从零开始搭建一个基于 Prometheus 的服务端性能监控系统,包括安装配置、数据采集、报警设置和数据可视化等环节,帮助你建立一个高效、易用的监控系统。


1. 什么是 Prometheus?

Prometheus 是一个开源的系统监控和报警工具,专为云原生和微服务架构设计。其核心功能包括:

  • 数据采集:通过 HTTP 请求的方式从目标服务获取度量指标。

  • 时序数据库:Prometheus 使用时序数据库(TSDB)来存储所有指标数据,并支持高效的查询与聚合。

  • 查询语言(PromQL):提供强大的查询语言 PromQL,用户可以根据不同的需求进行复杂的查询操作。

  • 报警功能:能够根据设置的规则自动触发报警,并通过多种方式通知运维人员。

  • 可扩展性:支持与其他工具(如 Grafana)集成,实现强大的可视化效果。

Prometheus 适用于各种规模的应用监控,无论是单机应用、容器化环境,还是分布式微服务架构,都可以灵活地进行监控与告警。


2. 搭建 Prometheus 监控系统

2.1 环境准备

在开始搭建 Prometheus 之前,需要确保你的环境满足以下要求:

  • 一台 Linux 或 MacOS 服务器,安装有 Docker(如果使用容器化部署)或直接部署在虚拟机上。

  • 需要具备一定的 Linux 操作基础和终端使用经验。

2.2 安装 Prometheus

Prometheus 可以通过源码编译、Docker 容器或者包管理工具安装。这里我们以 Docker 容器方式为例,进行安装。

  1. 拉取 Prometheus Docker 镜像

docker pull prom/prometheus
复制代码
  1. 创建 Prometheus 配置文件

Prometheus 配置文件主要包含了监控目标和告警规则。我们创建一个 prometheus.yml 文件来定义配置。

global:  scrape_interval: 15s  # 设置抓取数据的间隔,默认为 15 秒
scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
复制代码

该配置定义了 Prometheus 从 localhost:9100 地址抓取服务器的指标数据,这通常是通过 Node Exporter 来采集的。这里的 node_exporter 是一个常见的 Prometheus 导出器,负责采集主机的硬件和操作系统级别的性能指标。

  1. 启动 Prometheus 容器

docker run -d --name prometheus \  -p 9090:9090 \  -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \  prom/prometheus
复制代码

这样,我们就完成了 Prometheus 的安装并开始采集本地服务器的性能数据。

2.3 安装 Node Exporter

Node Exporter 是 Prometheus 推荐的一个工具,用于收集服务器的硬件和操作系统相关的度量数据(如 CPU、内存、磁盘、网络等)。可以通过 Docker 安装 Node Exporter:

docker run -d --name=node_exporter -p 9100:9100 prom/node-exporter
复制代码

Node Exporter 默认监听在 9100 端口,Prometheus 会从这个端口定期拉取服务器的性能数据。

2.4 验证 Prometheus 与 Node Exporter 的集成

安装完成后,打开 Prometheus 的 Web 控制台,默认地址为 http://localhost:9090,你可以看到 Prometheus 的管理界面。

在 "Targets" 页面(http://localhost:9090/targets)中,检查是否成功抓取到 node_exporter 的指标数据。如果一切正常,你应该看到类似以下内容:

  • job: node_exporter

  • instance: localhost:9100

  • last scrape: 最近一次抓取数据的时间

  • scrape duration: 数据抓取的时长


3. 配置告警规则

为了及时发现系统性能异常并采取行动,Prometheus 允许用户配置告警规则。告警规则通常基于指标阈值触发。

3.1 设置告警规则

在 Prometheus 的配置文件中,我们可以添加告警规则。例如,我们可以配置一个告警,当服务器的 CPU 使用率超过 80% 时触发。

rule_files:  - "alert.rules"
alerting: alertmanagers: - static_configs: - targets: - "localhost:9093"
复制代码

在 alert.rules 文件中,我们可以定义具体的告警规则:

groups:  - name: node_alerts    rules:      - alert: HighCPUUsage        expr: avg(rate(node_cpu_seconds_total{mode="user"}[1m])) by (instance) > 0.8        for: 5m        labels:          severity: critical        annotations:          summary: "CPU usage is above 80% on {{ $labels.instance }}"
复制代码

3.2 安装 Alertmanager

Prometheus 本身并不提供报警发送功能,它通过 Alertmanager 来处理告警并发送通知。Alertmanager 支持通过邮件、Slack、钉钉等渠道发送告警。

安装 Alertmanager:

docker run -d --name=alertmanager -p 9093:9093 prom/alertmanager
复制代码

你可以通过修改 Prometheus 配置文件,指定告警发送到 Alertmanager,并在 Alertmanager 中配置邮件、Slack 等告警渠道。


4. 数据可视化:Grafana 集成

Grafana 是一个开源的可视化工具,广泛用于与 Prometheus 集成,提供漂亮的实时数据展示。

4.1 安装 Grafana

使用 Docker 安装 Grafana:

docker run -d -p 3000:3000 --name=grafana grafana/grafana
复制代码

4.2 配置 Prometheus 数据源

在 Grafana Web UI(http://localhost:3000)中,登录后选择 "Add DataSource",然后选择 Prometheus,并配置 Prometheus 的地址为 http://localhost:9090

4.3 创建 Dashboard

Grafana 提供了丰富的模板和插件,用户可以根据需求创建各种监控 Dashboard。你可以使用内置的模板,或者根据自己的需求定制:

  • CPU 使用情况

  • 内存消耗情况

  • 网络带宽使用情况


5. 总结

搭建一个基于 Prometheus 的服务端性能监控系统,不仅能够帮助你实时监控系统的关键指标,还能及时发现潜在的性能瓶颈,并触发告警机制,避免问题的扩大。通过与 Node Exporter 的集成,你可以轻松收集服务器的各种硬件和操作系统信息;通过与 Grafana 的结合,你可以创建漂亮且易用的可视化仪表板;通过 Alertmanager,你能够及时收到性能异常的通知。

随着系统的规模扩大,性能监控的需求也会更加复杂和精细,Prometheus 提供了极大的灵活性和可扩展性,是构建现代监控系统的理想选择。


用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
搭建服务端性能监控系统 Prometheus:从零开始的实践指南_测试_测吧(北京)科技有限公司_InfoQ写作社区