【云原生监控】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 在微服务监控和性能管理领域具有显著优势,主要体现在以下几个方面:
-
多维度数据模型: Prometheus 提供了灵活的多维度数据模型,能够有效地存储和查询各种服务生成的时间序列数据。这使得用户可以深入分析和理解系统的性能指标和运行状态。
-
强大的查询语言 (PromQL): 通过 PromQL 查询语言,用户可以执行复杂的数据分析和聚合操作。这种灵活性使得团队能够快速生成图表、报告和仪表板,以便实时监控系统的健康状态。
-
自动发现: Prometheus 支持自动发现新的服务实例和目标,使得系统配置和扩展更加简单和自动化。这种特性特别适用于动态环境中的微服务部署。
-
实时警报和通知: 借助 Alertmanager,Prometheus 能够根据预定义的规则实时监测系统状态,并发送通知,如电子邮件或Slack消息。这有助于团队快速响应问题并采取必要的措施。
-
丰富的集成生态系统: 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.gzhttps://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在实际生产中可以构建出完整而庞大的监控体系,具有优秀的综合表现,在很多企业的系统或项目中都有使用,值得深入研究,本篇到此结束,感谢观看。
相关文章:

【云原生监控】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 应用场景…...

【C++】模板进阶--保姆级解析(什么是非类型模板参数?什么是模板的特化?模板的特化如何应用?)
目录 一、前言 二、什么是C模板? 💦泛型编程的思想 💦C模板的分类 三、非类型模板参数 ⚡问题引入⚡ ⚡非类型模板参数的使用⚡ 🔥非类型模板参数的定义 🔥非类型模板参数的两种类型 ὒ…...

Cookie与Session
Cookie Set-Cookie: sessionIdabc123; ExpiresWed, 09 Jun 2024 10:18:14 GMT; Path/; Secure; HttpOnlySession session作用域 首先需要了解servlet容器可能包含多个web应用。 在servlet容器中同一应用的servlet 对 session数据是可见的,不同应用之间session是相互…...

Nuxt3 的生命周期和钩子函数(十一)
title: Nuxt3 的生命周期和钩子函数(十一) date: 2024/7/5 updated: 2024/7/5 author: cmdragon excerpt: 摘要:本文详细介绍了Nuxt3中几个关键的生命周期钩子和它们的使用方法,包括webpack:done用于Webpack编译完成后执行操作…...

Windows ipconfig命令详解,Windows查看IP地址信息
「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 ipconfig 1、基…...

在C#/Net中使用Mqtt
net中MQTT的应用场景 c#常用来开发上位机程序,或者其他一些跟设备打交道比较多的系统,所以会经常作为拥有数据的终端,可以用来采集上传数据,而MQTT也是物联网常用的协议,所以下面介绍在C#开发中使用MQTT。 安装MQTTn…...

VBA提取word表格内容到excel
这是一段提取word表格中部分内容的vb代码。 Sub 提取word表格() mypath ThisWorkbook.Path & "\"myname Dir(mypath & "*.doc*")n 4 index of rowsRange("A1:F1") Array("课程代码", "课程名称", "专业&…...

html+css+js图片手动轮播
源代码在界面图片后面 轮播演示用的几张图片是Bing上的,直接用的几张图片的URL,谁加载可能需要等一下,现实中替换成自己的图片即可 关注一下点个赞吧😄 谢谢大佬 界面图片 源代码 <!DOCTYPE html> <html lang&quo…...

【十三】图解 Spring 核心数据结构:BeanDefinition 其二
图解 Spring 核心数据结构:BeanDefinition 其二 概述 前面写过一篇相关文章作为开篇介绍了一下BeanDefinition,本篇将深入细节来向读者展示BeanDefinition的设计,让我们一起来揭开日常开发中使用的bean的神秘面纱,深入细节透彻理解…...

数据库作业
命令 登陆数据库 mysql -uroot -p123456 --prompt"\u\h:\d--> " 创建数据库zcr create database zcr; 修改数据库zcr字符集为gbk alter database zcr default character set gbk collate gbk_chinese_ci; 选择数据库zcr use zcr 查看数据库zc…...

12、matlab中for循环,if else判断语句,break和continue用法以及switch case语句使用
1、前言 在MATLAB中,for循环用于迭代一个固定次数的循环。可以使用if else语句在循环中进行条件判断,根据条件的不同执行相应的代码块。break和continue可以用于控制循环的执行流程,break用于提前结束循环,而continue用于跳过当前…...

AcWing 3207:门禁系统 ← 桶排序中“桶”的思想
【题目来源】https://www.acwing.com/problem/content/3210/【题目描述】 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。 每位读者有一个唯一编号,每条记录用读者的编号来表示。 给出读者的来访记录,请问每一条记录中的读者…...

开发个人Go-ChatGPT--3 服务拆分
开发个人Go-ChatGPT–3 服务拆分 个人Go-ChatGPT项目可拆分用户服务(user),AI模型服务(AiModel),… 每个服务都可以再分为 api 服务和 rpc 服务。api 服务对外,可提供给 app 调用。rpc 服务是…...

Android --- 新电脑安装Android Studio 使用 Android 内置模拟器电脑直接卡死,鼠标和键盘都操作不了
新电脑安装Android Studio 使用 Android 内置模拟器电脑直接卡死,鼠标和键盘都操作不了 大概原因就是,初始化默认Google的安卓模拟器占用的RAM内存是2048,如果电脑的性能和内存一般的话就可能卡死,解决方案是手动修改安卓模拟器的config文件&…...

从入门到深入,Docker新手学习教程
编译整理|TesterHome社区 作者|Ishaan Gupta 以下为作者观点: Docker 彻底改变了我们开发、交付和运行应用程序的方式。它使开发人员能够将应用程序打包到容器中 - 标准化的可执行组件,将应用程序源代码与在任何环境中运行该代码…...

Postman编写测试脚本
在 Postman 中,编写测试脚本通常使用 JavaScript,这些脚本可以在请求发送前后执行。以下是一些示例代码,展示了如何在 Postman 中使用测试脚本。 1. 测试脚本示例:检查响应状态码 // 测试脚本在请求发送后执行 pm.test("Re…...

代码随想录算法训练Day57|LeetCode200-岛屿数量、LeetCode695-岛屿的最大面积
岛屿数量 题目描述 力扣200-岛屿数量 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此…...

StopWatch的使用
org.springframework.util.StopWatch 是 Spring 框架提供的一个轻量级的计时工具,用于测量代码执行时间。它比 Apache Commons Lang 的 StopWatch 提供了更多的功能,例如累计多个时间段、打印详细报告等。 以下是如何使用 Spring 的 StopWatchÿ…...

MySQL基础篇(三)数据库的修改 删除 备份恢复 查看连接情况
对数据库的修改主要指的是修改数据库的字符集,校验规则。 将test1数据库字符集改为gbk。 数据库的删除: 执行完该数据库就不存在了,对应数据库文件夹被删除,级联删除,里面的数据表全部被删除。 注意:不要随…...

android手机电视相框项目-学员做出个bug版本邀请大家review提意见
背景 前几天给我的vip学员布置了一个android手机/电视相框的项目,具体详情看如下链接: https://mp.weixin.qq.com/s/l2roDoco-o59SLlORENZlA 这个项目我说过不给提供答案哈,让各位学员朋友自己独立思考完成哈,因为尽量想让大家慢…...

web零碎知识2
不知道我的这个axios的包导进去没。 找一下关键词: http请求协议:就是进行交互式的格式 需要定义好 这个式一发一收短连接 而且没有记忆 这个分为三个部分 第一个式请求行,第二个就是请求头 第三个就是请求体 以get方式进行请求的失手请求…...

Android项目框架
Android项目基于Android Studio开发,Android Studio使用Gradle作为项目构建工具。新建工程后可以看到如图所示目录结构,将Android切成Project可以看到完整的Android工程目录结构,如图所示。 图1-2 Android项目目录结构 app目录是一个典型的…...

vue 模糊查询加个禁止属性
vue 模糊查询加个禁止属性 父组件通过属性传,是否禁止输入-------默认可以输入...

MySQL 主从复制中 MHA 工具的研究与实践
MySQL 主从复制中 MHA 工具的研究与实践 一、MHA 工具简介二、MHA 的工作原理三、MHA 配置步骤环境准备1. 在主服务器上配置主从复制2. 在从服务器上配置复制 安装 MHA 工具1. 安装必要的依赖包2. 下载并安装 MHA 配置 MHA1. 创建 MHA 配置文件2. 配置 SSH 免密登录 测试 MHA1.…...

Hi3861 OpenHarmony嵌入式应用入门--TCP Server
本篇使用的是lwip编写tcp服务端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点,并且密码为PARAM_HOTSPOT_PSK LwIP简介 LwIP是什么? A Lightweight TCP/IP stack 一个轻量级的TCP/IP协议栈 详细介绍请参考LwIP项目官网:lwIP - A Li…...

Poker Game, Run Fast
Poker Game, Run Fast 扑克:跑得快 分门别类: 单张从小到大默认 A < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K 跑得快:单张从小到大 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 &…...

订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配
一个金额分摊的算法,将折扣分摊按比例(细单实收在总体的占比)到各个细单中。 此算法需要达到以下要求: 折扣金额接近细单总额,甚至折扣金额等于细单金额,某些时候甚至超过细单总额,要保证实收不…...

Matlab中collectPlaneWave函数的应用
查看文档如下: 可以看出最多5个参数,分别是阵列对象,信号幅度,入射角度,信号频率,光速。 在下面的代码中,我们先创建一个3阵元的阵列,位置为:(-1,0,0&#x…...

Linux系统的基础知识和常用命令
1、什么是Linux? 是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行…...

三相异步电动机的起动方法
1. 引言 2. 三相笼型异步电动机德起动方法 3. 三相绕线型异步电动机的起动方法 4. 软起动器起动 5. 参考文献 1 引言 三相异步电动机结构简单﹑价格低廉﹑运行可靠﹑维护方便,在工农业生产中得到了广泛应用。为使电动机能够转动起来,并很快达到工作转…...