【云原生】Prometheus 使用详解

news2024/11/25 14:31:25

目录

一、前言

二、服务监控概述

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种:

  • 基于二进制包安装,即常规的下载tar.gz安装包进行安装;

    • 官方安装手册:开始使用 |普罗 米修斯 (prometheus.io)

  • 基于docker命令安装;

    • 安装手册参考:安装 |普罗 米修斯 (prometheus.io)

  • 基于docker-compose安装;

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在实际生产中可以构建出完整而庞大的监控体系,具有优秀的综合表现,在很多企业的系统或项目中都有使用,值得深入研究,本篇到此结束,感谢观看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1879232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码托管服务:GitHub、GitLab、Gitee

目录 引言GitHub:全球最大的代码托管平台概述功能特点适用场景 GitLab:一体化的开发平台概述功能特点适用场景 Gitee(码云):中国本土化的代码托管服务概述功能特点适用场景 功能对比结论 引言 在现代软件开发中&#…

江协科技51单片机学习- p21 LED点阵屏(8*8)

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

15.数据库简介+MySQl使用+SQL语句

文章目录 数据库简述一.数据库简介DB1.定义:2.DBMS数据库管理系统3.数据库分类 二.MySQL的安装1.安装步骤2.MySQL数据库图形管理工具3.mysql程序常用命令4.MySQL字符集及字符序5.Navicat快捷键操作 三.MySQL数据库基本操作 .........................................表管理一.…

Jetson系列机载电脑创建热点模式配置方法

Jetson nano为例—— 创建热点模式配置方法 1.1、新建一个 WiFi 在屏幕右上角找到网络图标,点击后选择“Edit Connections”选项,进入选择网络连接页面,然后点击左下角加号,新建一个连接,类型选择 WiFi 后点击 “cre…

【面试系列】数据工程师高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

Spark学习3.0

目录 10.3.4 Spark运行原理 1.设计背景 2.RDD概念 3.RDD特性 4.RDD之间的依赖关系 窄依赖和宽依赖 5.Stage的划分 Stage的类型包括两种:ShuffleMapStage和ResultStage 6.RDD运行过程 10.3.4 Spark运行原理 1.设计背景 许多 迭代式算法(比如机器学习、图…

Hadoop-03-Hadoop集群 免密登录 超详细 3节点公网云 分发脚本 踩坑笔记 SSH免密 服务互通 集群搭建 开启ROOT

章节内容 上一节完成: HDFS集群XML的配置MapReduce集群XML的配置Yarn集群XML的配置统一权限DNS统一配置 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次&…

【python系统学习笔记day1】软件安装与使用

一、正确学习方法 坚持! 第一阶段:按照老师的步骤做,不要跳步 第二阶段:做出个人创新与尝试 第三阶段:建立自己的体系 二、环境的安装 第一步:任意浏览器网址栏输入 python.org 第二步:点…

一文弄懂逻辑回归算法

1. 引言 今天我们将深入探讨另一种基本的机器学习算法:逻辑回归。在前两篇文章中,我们使用线性回归和梯度下降法帮助我们的朋友马克确定了他 2400 平方英尺房子的理想售价。 最近马克再次向我们求助。他住在一个高档社区,他认为低于一定面积…

探索人工智能和LLM对未来就业的影响

近年来,人工智能(AI)迅猛发展,引发了人们的兴奋,同时也引发了人们对就业未来的担忧。大型语言模型(LLM)就是最新的例子。这些强大的人工智能子集经过大量文本数据的训练,以理解和生成…

excel操作笔记

CTRLE ,快速填充 shiftctrl下箭头,选中一个单元个,按快捷键,可以选中所有列 ALT,选中需要求和的部分,按住ALT,就可以快速求和,列和行多选一列显示求和结果 引用,快捷键…

中药材图像识别:中医与深度学习的融合(目标检测)

亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 一、引…

STM32F1+HAL库+FreeTOTS学习2——STM32移植FreeRTOS

STM32F1HAL库FreeTOTS学习2——STM32移植FreeRTOS 获取FreeRTOS源码创建工程窥探源码移植 上期我们认识了FreeRTOS,对FreeRTOS有了个初步的认识,这一期我们来上手移植FreeRTOS到STM32上。 获取FreeRTOS源码 进入官网:https://www.freertos.o…

7.优化算法之分治-快排归并

0.分治 分而治之 1.颜色分类 75. 颜色分类 - 力扣(LeetCode) 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数…

weiyang**3.控制台01

1. 搭建单群组FISCO BCOS联盟链 使用开发部署工具 build_chain.sh脚本在本地搭建一条4 节点的FISCO BCOS链,以Ubuntu 22.04 64bit系统为例操作。 1.1 安装依赖 sudo apt install -y openssl curl 1.2 创建操作目录, 下载安装脚本 ## 创建操作目录 cd ~ &&a…

java基于ssm+jsp 个人交友网站

1前台首页功能模块 个人交友网站,在系统首页可以查看首页、交友信息、线下活动、系统公告、论坛信息、我的、跳转到后台、客服等内容,如图1所示。 图1系统功能界面图 用户注册,在用户注册页面可以填写用户账号、密码、用户姓名、年龄等信息进…

[JS]BOM操作

介绍 BOM(Browser Object Model)是浏览器对象模型 window对象是一个全局对象, 也是JS中的顶级对象通过var定义在全局作用域中的变量和函数都会变成window对象的属性和方法window对象下的属性和方法调用时一般省略window 间歇函数 定时器 定时器是间歇函数的一种, 可以每个每…

java基于ssm+jsp 高校信息资源共享平台

1前台首页功能模块 高校信息资源共享平台,在系统首页可以查看首页、课程信息、教学资源、新闻资讯、我的、跳转到后台等内容,如图1所示。 图1前台首页功能界面图 学生信息登录、学生信息注册,在注册页面可以填写账号、姓名、手机、邮箱、身…

C#基于SkiaSharp实现印章管理(3)

本系列第一篇文章中创建的基本框架限定了印章形状为矩形,但常用的印章有方形、圆形等多种形状,本文调整程序以支持定义并显示矩形、圆角矩形、圆形、椭圆等4种形式的印章背景形状。   定义印章背景形状枚举类型,矩形、圆形、椭圆相关的尺寸…

【人工智能】—葡萄牙酒店预订信息多维度分析|预测是否取消预定算法模型大乱斗

引言 在当今数字化时代,数据驱动的决策在各个行业中变得越来越重要。酒店业,作为旅游和休闲服务的核心部分,正面临前所未有的机遇和挑战。随着在线预订平台的兴起,客户行为数据的积累为酒店提供了洞察消费者需求和优化运营策略的…