【云原生监控】Prometheus 普罗米修斯从搭建到使用详解

目录

一、前言

二、服务监控概述

2.1 什么是微服务监控

2.2 微服务监控指标

2.3 微服务监控工具

三、Prometheus概述

3.1 Prometheus是什么

3.2 Prometheus 特点

3.3 Prometheus 架构图

3.3.1 Prometheus核心组件

3.3.2 Prometheus 工作流程

3.4 Prometheus 应用场景

3.5 Prometheus 优势

四、Prometheus 部署

4.1 基于二进制包安装Prometheus

4.1.1 获取安装包

4.1.2 解压安装包

4.1.3 检查与修改配置文件

4.1.4 prometheus.yml 配置文件补充说明

4.1.5 启动prometheus

4.1.6 访问prometheus的ui界面

4.2 基于Docker方式安装

4.2.1 创建数据卷

4.2.2 拷贝上述安装包下的prometheus.yml

4.2.3 启动docker容器

五、exporter介绍与实践

5.1 什么是Prometheus Exporter

5.2 Prometheus Exporter作用

5.3 Prometheus 常用的Exporter

5.3.1 node_exporter

5.3.2 mysqld_exporter

5.4 node_exporter部署与使用

5.4.2 解压node_exporter

5.4.3 启动node_exporter

5.4.4 访问界面

5.4.5 Prometheus接入node_exporter

5.5 mysqld_exporter部署与使用

5.5.1 前置准备

5.5.2 下载安装包

5.5.3 创建mysql账户

5.5.4 创建mysql配置连接文件

5.5.5 启动mysqld_exporter服务

5.5.6 界面访问metrics

5.5.7 Prometheus接入mysqld_exporter

六、Prometheus对接Grafana

6.1 Grafana是什么

6.2 Grafana作用

6.3 Grafana部署

6.3.1 启动Grafana容器

6.3.2 访问Grafana控制台

6.4 Prometheus接入Grafana

6.4.1 添加数据源

6.4.2 配置Prometheus连接信息

6.4.3 添加一个dashboard模板

6.4.4 grafana配置dashboard模板

七、写在文末


一、前言

为了更好的对线上运行的项目做到全方位掌控,比如网络、数据库、服务器、JVM等参数进行监控,通常需要部署一些运维监控工具,从而监测线上环境的各类指标,确保线上服务的稳定运行。随着技术的发展,可用于生产环境下的各类运维监控工具也越来越多,根据场景的不同,需要监控的服务不同,中间件的不同等因素,选择的工具也有区别,比如数据库运维监控工具zabbix,微服务全链路监控工具skywaling等。

二、服务监控概述

2.1 什么是微服务监控

微服务监控是指通过系统化地收集、分析和报告服务运行时的各种数据和指标,以确保服务的稳定性、性能和安全性。这些监控数据通常涵盖服务的运行状态、资源消耗、性能指标、安全事件等,帮助运维团队及时发现问题并进行有效的响应和管理。服务监控不仅限于单一服务,还包括复杂的微服务架构和相关的中间件,以支持现代应用在高可用性和效率方面的要求。

  • 这包括实时收集、分析和报告微服务的各种关键数据和指标,以确保系统的稳定性、性能优化和安全性。

  • 监控内容涵盖微服务的健康状态、性能指标、资源消耗、安全事件等,旨在及时发现问题、实施有效响应和管理措施,以支持整个微服务系统的可靠运行和持续优化。

2.2 微服务监控指标

微服务监控涵盖多种关键指标,用于确保系统的稳定性、性能和安全性。常见的微服务监控指标包括:

  • 健康状态指标
    • 服务可用性:衡量服务能够正常处理请求的时间比例;
    • 服务响应时间:即服务对请求的处理速度;
    • 错误率:记录服务处理请求时发生错误的比例;
  • 性能指标:
    • 资源消耗:监控服务使用的CPU、内存、磁盘等资源;
    • 请求处理速率:测量服务每秒处理的请求数量;
    • 服务间通信延迟:评估微服务之间通信的延迟和吞吐量;
  • 安全性指标
    • 异常访问检测:识别可能的安全攻击或异常访问行为,从而提前进行预警;
    • 数据安全性:监控数据传输和存储过程中的安全性问题;
  • 扩展性指标
    • 负载均衡情况:评估服务是否平衡地处理负载;
    • 自动扩展响应时间:衡量系统对负载变化的自动响应速度;
  • 日志和跟踪指标
    • 日志分析:分析服务生成的日志,以便进行故障排查和行为追踪;
    • 分布式跟踪:追踪服务间请求的路径和性能,帮助理解整体系统的运行情况;

2.3 微服务监控工具

想必在日常的项目开发和运维过程中多少接触过一些与微服务运维监控相关的工具,下面列举一些常用的微服务指标监控的工具:

  • Prometheus:开源的监控系统和时间序列数据库,专门用于收集和查询性能数据。

  • Grafana:开源的分析和监控平台,能够与多种数据源集成,提供实时监控和可视化功能,一般搭配Prometheus一起使用。

  • Jaeger:开源工具,用于分布式上下文追踪,帮助识别和解决微服务架构中的性能问题。

  • Elastic Stack (ELK Stack): 包括Elasticsearch、Logstash和Kibana,用于日志收集、搜索和可视化,对于监控和故障排查非常有用。

  • Zipkin:另一个分布式跟踪系统,用于监控和故障排查微服务架构中的请求路径和性能问题。

  • New Relic: 提供全栈性能监控的商业解决方案,支持实时性能监控和分析。

  • SkyWalking:是一个开源的应用性能监控系统,特别适用于微服务、云原生架构和分布式系统。它提供了端到端的分布式追踪、性能指标分析以及可视化等功能,帮助开发团队更好地监控和管理复杂的微服务环境。

三、Prometheus概述

3.1 Prometheus是什么

Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目, 拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算 基金会(CNCF),成为继Kubernetes之后的第二个托管项目。

官网:https://prometheus.io

git地址:Prometheus · GitHub

3.2 Prometheus 特点

Prometheus 是一个开源的监控系统和时间序列数据库,专门设计用于收集和查询性能数据。它的主要特点包括:

  • 多维数据模型:Prometheus 支持多维度的数据模型,可以有效地存储和查询由服务生成的时间序列数据,如性能指标和运行状态;

  • 灵活的查询语言: 通过 PromQL 查询语言,一种灵活的查询语言,可以利用多维数据完成复杂的查询,用户可以灵活地分析和汇总数据,生成图表和报告;

  • 自动发现服务: Prometheus 支持自动发现新的服务实例和目标,使得系统配置和扩展更加简单和自动化;

  • 警报和通知: 支持实时的警报功能,可以根据预定义的条件发送通知,帮助团队快速响应潜在问题;

  • 易于集成: Prometheus 可以与多种数据源和可视化工具集成,如Grafana,为用户提供强大的监控和可视化能力;

更详细的介绍可以参阅文档:概览 |普罗 米修斯 (prometheus.io)

3.3 Prometheus 架构图

下面是一张关于Prometheus的架构图;

3.3.1 Prometheus核心组件

结合上面的架构图,下面列举关于Prometheus的一些核心组件,从而更全面的了解Prometheus;

Prometheus Server:

  • Prometheus 的核心组件,负责收集和存储时间序列数据,如指标和性能数据。

  • 使用自定义的数据模型存储收集的数据,并支持多维度的数据查询。

Client Library:

  • 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当 Prometheus server 来 pull 时,直接返回实时状态的 metrics。

push gateway:

  • 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。

PromQL:

  • Prometheus 的查询语言,用于灵活地分析和汇总存储的数据。

  • 允许用户执行范围广泛的查询,生成图表和报告,以监视系统的运行状态和性能指标。

Exporters:

  • 用于从其他系统和服务收集指标数据的客户端应用程序。

  • Prometheus Exporters 将各种系统(如数据库、消息队列、操作系统等)的指标暴露为 Prometheus 可以抓取的端点。

Alertmanager:

  • 负责处理 Prometheus 生成的警报通知。

  • 允许定义和管理警报规则,并根据规则发送通知,支持电子邮件、Slack 等多种通知方式。

Grafana

  • 虽然不是 Prometheus 的核心组件,但通常与 Prometheus 结合使用,用于数据的可视化和监控仪表板的创建。

Web UI

  • 简单的Web控制台,用于查看常规的指标信息。

3.3.2 Prometheus 工作流程

Prometheus 是一个开源的监控系统,主要用于收集和存储时间序列数据,以监视系统的运行状态和性能指标。其工作流程主要包括以下几个核心组件和步骤:

  • 数据采集:

    • Prometheus Server 负责定期从配置的目标服务(例如应用程序、数据库、操作系统等)获取指标数据。这些目标通过 HTTP 或其他协议提供指标数据的接口。

  • 指标存储:

    • Prometheus 使用自己的时间序列数据库存储从目标收集的指标数据。这些数据包括系统的各种性能指标,如请求处理时间、CPU 使用率、内存消耗等。

  • 查询和分析:

    • 使用 PromQL(Prometheus 查询语言),用户可以执行灵活的查询和聚合操作,以分析存储的指标数据。这些查询可以生成图表和报告,帮助用户理解系统的运行状况和趋势。

  • 告警和通知:

    • Alertmanager 是 Prometheus 的一部分,负责管理警报规则和发送通知。根据预定义的警报规则,Alertmanager 可以将警报发送到多种通知渠道,如电子邮件、Slack 等,帮助团队快速响应问题。

  • 数据可视化展现:

    • 虽然 Grafana 不是 Prometheus 的核心组件,但它通常与 Prometheus 配合使用,提供高度可定制的数据可视化和监控仪表板。

    • Grafana 可以直接查询 Prometheus 存储的数据,并将其可视化为图表、仪表板等形式,方便用户实时监控系统的状态和性能指标。

通过以上工作流程,Prometheus 能够帮助开发和运维团队实时监控和分析微服务架构的健康状态和性能指标,确保系统的高可用性和稳定性。

3.4 Prometheus 应用场景

Prometheus 是一个功能强大的开源监控系统,适用于多种场景,特别是在微服务架构下,以下列举了Prometheus的常用的使用场景:

  • 微服务监控:

    • Prometheus 可以实时收集、存储和分析微服务架构中的各种性能指标,如请求处理时间、错误率、资源消耗等。通过这些指标,团队可以快速发现潜在的问题并采取相应措施,确保系统的高可用性和稳定性。

  • 多维度数据分析:

    • 基于 PromQL 查询语言的灵活性,Prometheus 支持多维度的数据分析,能够帮助团队理解系统的运行趋势、瓶颈和优化机会,支持系统的持续优化和演进。

  • 容器化环境监控:

    • 在容器化部署中,如Kubernetes集群,Prometheus 可以与容器编排系统集成,监控每个容器的运行状态、资源使用情况以及服务间的通信延迟,帮助优化资源分配和性能调优。

  • 实时警报和通知:

    • Prometheus 的 Alertmanager 可以根据预定义的警报规则实时监测系统状态,并在发现异常或达到预警条件时发送通知,如电子邮件、Slack 消息等,帮助团队快速响应问题和降低系统故障的影响。

  • 可视化和仪表板:

    • 配合Grafana ,与 Prometheus 一起使用,能够通过直观的图表和仪表板实时展示系统的各项指标和性能数据,为团队提供直观的监控视图和操作洞察。

3.5 Prometheus 优势

Prometheus 在微服务监控和性能管理领域具有显著优势,主要体现在以下几个方面:

  1. 多维度数据模型: Prometheus 提供了灵活的多维度数据模型,能够有效地存储和查询各种服务生成的时间序列数据。这使得用户可以深入分析和理解系统的性能指标和运行状态。

  2. 强大的查询语言 (PromQL): 通过 PromQL 查询语言,用户可以执行复杂的数据分析和聚合操作。这种灵活性使得团队能够快速生成图表、报告和仪表板,以便实时监控系统的健康状态。

  3. 自动发现: Prometheus 支持自动发现新的服务实例和目标,使得系统配置和扩展更加简单和自动化。这种特性特别适用于动态环境中的微服务部署。

  4. 实时警报和通知: 借助 Alertmanager,Prometheus 能够根据预定义的规则实时监测系统状态,并发送通知,如电子邮件或Slack消息。这有助于团队快速响应问题并采取必要的措施。

  5. 丰富的集成生态系统: Prometheus 可以与多种数据源和工具集成,如Grafana、Elasticsearch等,为用户提供全面的监控和可视化能力。这种集成性使得用户能够根据需要扩展和定制监控解决方案。

四、Prometheus 部署

Prometheus 提供了多种安装方式,主要有3种:

4.1 基于二进制包安装Prometheus

4.1.1 获取安装包

安装包下载链接:下载 |普罗 米修斯 (prometheus.io),这里我选择下载最新的linux安装包

也可以在服务器中使用wget下载

wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz

4.1.2 解压安装包

如下,将下载好的安装包上传到服务器的指定目录

执行下面命令解压

tar -zxvf prometheus-2.53.0.linux-amd64.tar.gz

4.1.3 检查与修改配置文件

进入解压后的文件目录,找到prometheus.yml这个配置文件

基本上来说,后续与prometheus配置相关的信息都是在这个配置文件中编写,默认情况下,仅仅是启动服务的话,不需要做任何的修改即可,其中我们注意到配置文件中的下面这行,表示监控的是本机;

4.1.4 prometheus.yml 配置文件补充说明

Prometheus的配置文件prometheus.yml定义了Prometheus服务的行为,包括它应该抓取的指标数据来源(targets),如何拉取指标数据,以及如何在本地存储这些数据。

global:
  # 全局配置,影响所有作业
  scrape_interval: 15s # 默认抓取间隔
  evaluation_interval: 15s # 规则评估间隔
 
rule_files:
  # 告警规则配置,可以是相对或绝对路径
  # - "first_rules.yml"
  # - "second_rules.yml"
 
scrape_configs:
  # 抓取配置,定义了Prometheus应该抓取哪些指标
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: 'prometheus'
 
  # 可以定义更多job,每个job可以定义多个targets,每个target是一个需要抓取指标的实例
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['192.168.1.1:9100']
        labels:
          instance: 'node-exporter-1'
      - targets: ['192.168.1.2:9100']
        labels:
          instance: 'node-exporter-2'

4.1.5 启动prometheus

进入prometheus安装包主目录,最简单的启动方式,只需执行下面的命令即可

./prometheus

也可以通过指定prometheus.yml配置文件的方式启动

./prometheus --config.file=prometheus.yml

启动时还可以指定更多的启动参数,具体可以指定哪些参数项,可以在当前目录下通过命令查看,可以看到有很多选项的参数可以指定

./prometheus --help

4.1.6 访问prometheus的ui界面

启动之后,通过9090端口访问web-ui界面,效果如下,这个即是prometheus自带的一个简易的控制台

4.2 基于Docker方式安装

相对于二进制的安装方式,docker安装更简单,只需要一条命令即可搞定,参考下面的步骤操作,也可以按照上面提供的官网文档操作。

4.2.1 创建数据卷

创建一个名为prom/prometheus的数据卷

docker volume create prom/prometheus

4.2.2 拷贝上述安装包下的prometheus.yml

docker启动时需要指定prometheus配置文件,直接使用上述的prometheus.yml即可

cp  prometheus.yml /usr/local/soft/pro

4.2.3 启动docker容器

执行下面的命令启动容器

docker run \
    -p 9090:9090 \
    -v /usr/local/soft/pro/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

容器正常起来之后,可以访问下ui控制台,仍然可以正常访问

五、exporter介绍与实践

5.1 什么是Prometheus Exporter

Prometheus Exporter是一个用于将应用程序指标导出为Prometheus格式的工具。Prometheus是一个开源的监控系统,它使用拉模型来收集和存储时间序列数据。Prometheus Exporter允许你将你的应用程序的指标暴露给Prometheus,以便进行监控和分析。

  • 在 Prometheus 核心组件中,Exporter 是重要的组成部分,在实际中监控样本数据的收集都是由 Exporter 完成的,Prometheus 服务器只需要定时从这些 Exporter 提供的 HTTP 服务获取监控数据即可。
  • Exporter 本质上是将收集的数据转化为对应的文本格式,并提供 HTTP 接口,供 Prometheus 定期采集数据。

5.2 Prometheus Exporter作用

通过使用Prometheus Exporter,可以将你的应用程序的各种指标(如请求次数、响应时间、错误率等)导出为Prometheus可以理解的格式。这些指标可以帮助你了解应用程序的性能和健康状况,并且可以用于生成仪表盘、警报和报告。

Prometheus Exporter提供了各种语言和框架的客户端库,使你能够轻松地将指标集成到你的应用程序中。它还支持各种导出方式,包括HTTP接口、Pushgateway和文件输出等。

5.3 Prometheus 常用的Exporter

Download | Prometheus,在Prometheus 官方的下载链接中提供了多种Exporter可供日常监控使用,如下:

只要我们在相应的服务器上部署对应的Exporter,然后再在Prometheus 中集成进去,就可以完成使用Prometheus 对应相关服务,中间件等监控工作。参考这个文档,里面列举了常用的各种Exporter:Exporters and integrations | Prometheus

5.3.1 node_exporter

在Prometheus的架构设计中,Prometheus Server并不直接对某个服务进行监控,其主要任务是负责收集数据,存储数据并对外提供数据查询的支持,因此为了能够监控到某些特定的指标,比如主机的CPU使用率,网络,负载等参数指标时,需要使用到Exporter,Prometheus 周期性的从Exporter暴露的http地址中拉取监控的样本数据。如下图所示:

从上图不难看出,Exporter负责从目标目标源端收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,它只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics

  • node-exporter用于采集node的运行指标,包括node的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agent;

  • node-export由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。

  • 常见的 Node Exporter 收集的信息包括 CPU 使用率、内存使用情况、磁盘使用率、网络统计以及系统负载等。通过这些指标,管理员可以更好地了解服务器的运行情况,并及时采取措施以保证系统的稳定性和可靠性。

5.3.2 mysqld_exporter

mysqld_exporter 是一个用于提取 MySQL 数据库信息的 Prometheus exporter。类似于 Node Exporter,它也可以作为一个独立的二进制文件运行,并将 MySQL 数据库的各种指标暴露为 Prometheus 格式,供 Prometheus Server 使用。

  • mysqld_exporter 是针对 MySQL 数据库的监控工具,可以收集诸如连接数、查询性能、复制状态等重要指标。这些指标对于数据库管理员来说非常有价值,能够帮助他们实时监控数据库的运行情况、识别潜在问题,并进行性能调优和故障排查。

  • 与 Node Exporter 类似,mysqld_exporter 也是构建现代化监控和报警系统的关键组成部分,通过定期收集和展示数据库性能数据,帮助管理员保证数据库的稳定性和可靠性。

mysqld_exporter 作用:

mysqld_exporter 是一个专门用于从 MySQL 数据库中提取监控数据的工具,主要有以下几个作用:

  • 性能监控

    • mysqld_exporter 收集有关 MySQL 数据库的各种性能指标,如查询延迟、吞吐量、锁等待等。这些数据可以帮助管理员分析数据库的性能瓶颈,进行性能优化。

  • 健康检查

    • 通过监控 MySQL 实例的状态指标,如连接数、慢查询数、复制状态等,mysqld_exporter 能够帮助识别数据库可能存在的问题,从而提前进行预防和维护。

  • 趋势分析

    • 将 MySQL 性能数据暴露给 Prometheus 后,管理员可以使用 Prometheus 提供的查询语言(PromQL)来生成图表,分析性能趋势,制定长期的维护计划。

  • 报警系统

    • 配合 Prometheus 的报警功能,mysqld_exporter 收集的数据可以用来设置报警规则,及时通知管理员数据库异常情况,从而迅速进行处理。

  • 提供可视化监控

    • 通过将 mysqld_exporter 收集的指标数据发送到 Prometheus,管理员可以在 Grafana 等工具中创建仪表盘,实现数据库性能的可视化监控。

mysqld_exporter 主要监控指标

mysqld_exporter 可以暴露以下几类主要指标:

  • 连接数

    • mysql_global_status_connections:总连接数

    • mysql_global_status_threads_connected:当前连接数

  • 查询性能参数

    • mysql_global_status_queries:总查询数

    • mysql_global_status_slow_queries:慢查询数

  • 复制状态

    • mysql_slave_status_seconds_behind_master:从库延迟主库的时间

  • 缓存与缓冲区

    • mysql_global_status_innodb_buffer_pool_reads:InnoDB 缓冲池读取次数

    • mysql_global_status_innodb_buffer_pool_hit_rate:InnoDB 缓冲池命中率

  • 锁等待

    • mysql_global_status_innodb_row_lock_waits:InnoDB 行锁等待次数

通过这些指标,mysqld_exporter 支持全面的 MySQL 数据库监控,帮助维护数据库的健康和性能。

5.4 node_exporter部署与使用

node_exporter官网安装包下载地址:https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gzicon-default.png?t=N7T8https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz登录服务器之后可以使用下面的命令下载:

wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz

5.4.2 解压node_exporter

解压到当前目录

tar -zxvf node_exporter-1.8.1.linux-amd64

5.4.3 启动node_exporter

进入主目录,找到下面的启动脚本

在当前目录下直接使用: ./node_exporter 即可启动,暴露的metrics 端口为9100;

5.4.4 访问界面

node_exporter 正常启动后,可以在浏览器通过: ip:9100访问metrics 的端点,如下:

点击 Metrics,可以看到里面展示了更加详细的各类监控指标信息,这里主要监控的是本机的

通过node_exporter 暴露了这么多的主机信息之后,稍后就可以纳管到Prometheus里面进行界面的可视化展现,或者后续集成到grafana中进行更完美的呈现。

5.4.5 Prometheus接入node_exporter

进入Prometheus主目录,找到prometheus.yml配置文件,然后在配置文件最后,再增加一个job_name的配置,如下:

配置并保存之后,重启Prometheus,重启之后再次进入Prometheus的控制台

通过Status菜单找到Targets,可以看到,此时上一步启动的node_expoter服务就被纳管进来了,也可以基于node_expoter中收集的指标,在Graph中进行搜索;

5.5 mysqld_exporter部署与使用

使用mysqld_exporter可以监控指定的mysql服务信息,从而上报到Prometheus控制台进行展现,下面介绍下mysqld_exporter的部署与使用。

5.5.1 前置准备

找一台服务器提前部署mysql服务,可以是docker部署的,也可以是主机安装的,均可,我这里使用docker提前开启了一个mysql8的容器

5.5.2 下载安装包

在官网找到如下的下载地址,在服务器目录使用下面的命令下载安装包并解压

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz
tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz

5.5.3 创建mysql账户

创建一个特定的账户,暴露给mysqld_exporter使用,建议不要使用root账户,自己创建一个,参考下面的命令:

GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD ON *.* TO 'mysql_monitor'@'%' IDENTIFIED BY 'exporter_mysql';
FLUSH PRIVILEGES;

5.5.4 创建mysql配置连接文件

创建一个配置文件,配置连接的账户,密码等信息,如下在mysqld_exporter解压后的文件中:

在config.my.cnf文件中配置如下信息:

[client]
user=连接mysql的账户名
password=连接mysql的密码
host=IP地址
port=端口(默认是3306的话可以不用配置)

5.5.5 启动mysqld_exporter服务

在当前的目录下,使用下面的命令进行启动

./mysqld_exporter --config.my-cnf=./config.my.cnf

5.5.6 界面访问metrics

默认情况下,mysqld_exporter服务暴露的是9104端口,浏览器可以通过: ip:9104进行访问,如下:

点击Metrics,进去之后可以看到里面详细的各类关于mysql的监控指标信息

5.5.7 Prometheus接入mysqld_exporter

参照上一步配置node_exporter的方式,配置mysqld_exporter,编辑prometheus.yml文件,在配置文件底部配置一个新的关于mysql 的job,如下:

然后重启Prometheus服务,进入Prometheus的控制台,可以看到一个mysql的exporter就接入进来了

六、Prometheus对接Grafana

在上文,我们使用node_exporter以及mysqld_exporter接入到Prometheus之后发现,尽管可以在Prometheus简陋的控制台界面上看到被监控的服务指标信息,但是用起来还是不够便捷的,有没有一种方式,让接入进来的被监控的服务指标以更直观的方式呈现呢?这就是接下来要介绍的Grafana这个组件。

官网地址:Grafana: The open observability platform | Grafana Labs

6.1 Grafana是什么

Grafana 是一个开源的数据可视化和监控平台,广泛用于实时监控和数据分析。它支持从多种数据源中获取数据,并通过灵活的查询和图表展示功能,帮助用户实现高度定制化的监控和分析需求。Grafana 可以与 Prometheus、MySQL 等数据源集成,提供直观的仪表盘和图表,用于展示系统、应用程序或服务的性能数据和健康状态,从而帮助用户快速识别问题并做出响应。

Grafana 是一个可视化面板,有着非常美观的图表和布局展示,功能齐全的度量仪表盘和各类图形编辑器,支持Graphite,zabbix,influxdb,Prometheus,es等作为输入的数据源,比Prometheus自带的图表展示功能强大太多,使用更加灵活,插件更加丰富,功能也更加强大。

6.2 Grafana作用

Grafana 是一个功能强大的开源数据可视化和监控平台,主要作用包括:

  • 数据可视化

    • Grafana 提供灵活的图表和仪表盘功能,可以从各种数据源中获取数据,并以直观的方式展示系统、应用程序或服务的性能数据和健康状态。管理员可以定制化地配置图表以满足特定的监控需求。

  • 多数据源集成

    • 支持与多种数据源(如 Prometheus、MySQL 等)集成,能够统一展示不同数据源的监控数据,帮助管理员在同一个平台上查看和分析多个系统的性能。

  • 报警和通知

    • Grafana 具有强大的报警功能,可以基于设定的监控指标和阈值触发报警,及时通知管理员系统或服务出现异常情况,支持多种通知渠道,如电子邮件、Slack 等。

  • 可视化分析

    • 提供高级的数据分析功能,管理员可以利用 Grafana 的查询语言和聚合功能(如PromQL),对历史数据进行趋势分析和性能优化,帮助制定长期的系统维护计划。

  • 用户界面和配置管理

    • Grafana 提供直观的用户界面,简化了仪表盘和数据源的配置管理过程,使管理员能够快速部署和调整监控和数据可视化环境。

  • 社区支持

    • Grafana 是一个开源项目,拥有活跃的社区,用户可以获得免费的支持、文档和社区插件。

总的来说,Grafana 是一个强大的工具,用于监控和分析各种数据源的性能和健康状况,帮助管理员及时发现和解决系统或服务中的问题,保证其稳定性和可靠性。

6.3 Grafana部署

Grafana可以基于linux的二进制包安装,也可以基于docker的方式安装,官网安装包下载地址:Download Grafana | Grafana Labs ,可以根据自己的需要选择合适的包安装;

6.3.1 启动Grafana容器

使用下面docker命令启动Grafana容器

docker run -d -p 3000:3000 grafana/grafana

6.3.2 访问Grafana控制台

浏览器访问: ip:3000,初次加载可能有点慢,最后将会看到如下的登录页面,默认登录账户密码:admin/admin

登录成功后,来到Grafana主页,效果如下,还是比较炫酷的;

6.4 Prometheus接入Grafana

基于上面搭建完成的Grafana服务,直接在Grafana控制台上进行配置即可,参照如下的操作步骤:

6.4.1 添加数据源

如下,选择添加你的第一个数据源

来到下面的页面后,可以看到这里提供了很多种数据源可供选择接入到Grafana,这里我们选择Prometheus

6.4.2 配置Prometheus连接信息

在下面的页面中,填写你要接入的Prometheus地址,表单中其他地方不清楚的话可以保持默认即可;

点击保存和测试,确保能够连接上prometheus服务

6.4.3 添加一个dashboard模板

如何让接入Prometheus的exporter监控指标信息通过grafana展示出来了,在grafana需要配置一个dashboard来展示,所以在上一步完成之后,首先需要添加一个dashboard的模板进来,比如用这个dashboard模板展示上文中的node_exporter监控的主机指标信息;

grafana的dashboards模板地址:Grafana dashboards | Grafana Labs,可以看到官方提供了非常多的面板,可以根据自己的需求选择合适的使用,也可以在这里输入你想要的dashboard模板;

比如我在这里搜索linux,找到下面的一个面板模板给下面配置使用;

6.4.4 grafana配置dashboard模板

在grafana的控制台上找到配置dashboard的地方,如下点击创建模板

点击导入一个dashboard

在这里提供了多种配置dashboard的方式,可以选择导入json文件,也可以使用拷贝模板ID的方式

这里我们直接使用拷贝官网模板ID的方式,

拷贝上面的ID粘贴到这里并点击load,之后看到下面的效果

最后选择Prometheus,并点击import,就跳转到下面的界面,在该界面中,详细的展示了监控的关于本机的详细的指标信息,通过这个信息展示,就能更加全面的对机器做监控了。

七、写在文末

本文详细介绍了Prometheus 从部署安装的过程,并通过实际案例分享了如何集成常用的Exporter,最后并通过整合Grafana演示了如何将监控的Metrics信息展示到Grafana的dashboard上,Prometheus在实际生产中可以构建出完整而庞大的监控体系,具有优秀的综合表现,在很多企业的系统或项目中都有使用,值得深入研究,本篇到此结束,感谢观看。