【grafana+Prometheus(普罗米修斯)实现监控功能】

一、背景:

在性能测试的时候经常需要观察对应服务器的cpu、内存等指标,或者有些性能测试需要监控数据库的一些信息

二、监控服务器工具:

1、使用jmeter时可以自带监控服务的功能

缺点:只能在运行jmeter的时候才能实现监控功能

2、使用linux命令实时观察

缺点:没办法记录下来,只能看到当前的情况

3、编写脚本将服务器的cpu内存等信息写入文档

缺点:一堆数字不利于分析

4、使用grafana+Prometheus(普罗米修斯)实现监控功能

缺点:暂时没发现什么缺点

三、工具介绍

1、grafana:

Grafana 是什么?Grafana是一个 跨平台的开源的度量分析和可视化工具,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring)Grafana 支持的数据源 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。

Grafana 不对数据源作假设,它支持很多各种各种数据源,它都可以帮助生成仪表。同时在市面上,Grafana 市场占有量稳居第一。因此,如果你搞定了 Grafana,它几乎是一个会陪伴你到各个公司的一件称心应手的兵器;

2、Prometheus:

Prometheus是一个开源的系统监控和警报工具

结合:Prometheus负责监控和数据的采集,然后传递给grafana,由grafana将数据可视化。

四、工具的优点

1、Grafana的特点

展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;

数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;

通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;

混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;

注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;

过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

2、Prometheus的特点

相对比传统监控系统,Prometheus 具有以下优点:

1 易于管理

Prometheus优秀的设计使得其本身非常易于管理,不会因为Prometheus增加管理成本。

Prometheus 核心部分只有一个单独的二进制文件,不存在任何的第三方依赖(数据库,缓存等等)。唯一需要的就是本地磁盘,因此不会有潜在级联故障的风险。

Prometheus 基于 Pull 模型的架构方式,可以在任何地方(本地电脑,开发环境,测试环境)搭建我们的监控系统。也可以通过中间网关支持push模型

对于一些复杂的情况,还可以使用 Prometheus 服务发现(Service Discovery)的能力动态管理监控目标。

2 可监控服务的内部运行状态

Pometheus 鼓励用户监控服务的内部状态,基于 Prometheus 丰富的 Client 库,用户可以轻松的在应用程序中添加对 Prometheus 的支持,从而让用户可以获取服务和应用内部真正的运行状态。

3 强大的数据模型

所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB)。所有的样本除了基本的指标名称以外,还包含一组用于描述该样本特征的标签。

如下所示:

http_request_status{code=‘200’,content_path=‘/api/path’,environment=‘produment’} =>[value1@timestamp1,value2@timestamp2…]

http_request_status{code=‘200’,content_path=‘/api/path2’,environment=‘produment’} =>[value1@timestamp1,value2@timestamp2…]

每一条时间序列由指标名称(Metrics Name)以及一组标签(Labels)唯一标识。每条时间序列按照时间的先后顺序存储一系列的样本值。

http_request_status:指标名称(Metrics Name)

{code=‘200’,content_path=‘/api/path’,environment=‘produment’}:表示维度的标签,基于这些 Labels 我们可以方便地对监控数据进行聚合 ,过滤,裁剪。

[value1@timestamp1,value2@timestamp2…]:按照时间的先后顺序 存储的样本值。

4 强大的查询语言 PromQL

Prometheus 内置了一个强大的数据查询语言 PromQL。 通过 PromQL 可以实现对监控数据的查询、聚合。同时 PromQL 也被应用于数据可视化(如 Grafana)以及告警当中。

5 高效

对于监控系统而言,大量的监控任务必然导致有大量的数据产生。而 Prometheus 可以高效地处理这些数据,对于单一 Prometheus Server 实例而言它可以处理:

数以百万的监控指标

每秒处理数十万的数据点

6 可扩展

可以在每个数据中心、每个团队运行独立的 Prometheus Sevrer。Prometheus 对于联邦集群的支持,可以让多个 Prometheus 实例产生一个逻辑集群,当单实例 PrometheusServer 处理的任务量过大时,通过使用功能分区(sharding)+联邦集群(federation)可以对其进行扩展。

7 易于集成

使用 Prometheus 可以快速搭建监控服务,并且可以非常方便地在应用程序中进行集成。目前支持:Java,JMX,Python,Go,Ruby,.Net,Node.js 等等语言的客户端 SDK,基于这些 SDK 可以快速让应用程序纳入到 Prometheus 的监控当中,或者开发自己的监控数据收集程序。

同时这些客户端收集的监控数据,不仅仅支持 Prometheus,还能支持 Graphite 这些其他的监控工具。同时 Prometheus 还支持与其他的监控系统进行集成:Graphite, Statsd, Collected,Scollector, muini, Nagios 等。 Prometheus 社区还提供了大量第三方实现的监控数据采集支持:JMX,CloudWatch,EC2,MySQL,PostgresSQL,Haskell,Bash,SNMP,Consul,Haproxy,Mesos,Bind,CouchDB,Django,Memcached,RabbitMQ,Redis,RethinkDB,Rsyslog 等等。

8 可视化

Prometheus提供了强大的可视化能力,不仅自身提供了独立的可视化解决方案,且可以和很多流行的可视化工具进行整合。

Prometheus Server 中自带的 Prometheus UI,可以方便地直接对数据进行查询,并且支持直接以图形化的形式展示数据。同时 Prometheus 还提供了一个独立的基于Ruby On Rails 的 Dashboard 解决方案 Promdash。

最新的 Grafana 可视化工具也已经提供了完整的 Prometheus 支持,基于 Grafana 可以创建更加精美的监控图标。

基于 Prometheus 提供的 API 还可以实现自己的监控可视化 UI。

9 开放性

通常来说当我们需要监控一个应用程序时,一般需要该应用程序提供对相应监控系统协议的支持,因此应用程序会与所选择的监控系统进行绑定。为了减少这种绑定所带来的限制,对于决策者而言要么你就直接在应用中集成该监控系统的支持,要么就在外部创建单独的服务来适配不同的监控系统。

而对于 Prometheus 来说,使用 Prometheus 的 client library 的输出格式不止支持Prometheus 的格式化数据,也可以输出支持其它监控系统的格式化数据,比如 Graphite。因此你甚至可以在不使用 Prometheus 的情况下,采用 Prometheus 的 client library 来让你的应用程序支持监控数据采集。

五、Prometheus的使用原理

1、 Prometheus架构和生态圈组件

2、架构解析:

2.1采集层

采集层分为两类,一类是生命周期较短的作业,还有一类是生命周期较长的作业。

短作业:直接通过 API,在退出时间指标推送给 Pushgateway。

长作业:Retrieval 组件直接从 Job 或者 Exporter 拉取数据。Prometheus提供了各种常用的exporter,方便我们使用Prometheus对服务进行监控。

2.2存储计算层

Prometheus Server,里面包含了存储引擎和计算引擎。

Retrieval 组件为取数组件,它会主动从 Pushgateway 或者 Exporter 拉取指标数据。

Service discovery,可以动态发现要监控的目标。

TSDB(Time Series Database时间序列数据库),数据核心存储与查询。

HTTP server,对外提供 HTTP 服务。

2.3应用层

应用层主要分为两种,一种是 AlertManager,另一种是数据可视化。

AlertManager

对接 Pagerduty,是一套付费的监控报警系统。可实现短信报警、5 分钟无人 ack 打电话通知、仍然无人 ack,通知值班人员 Manager…

Email,发送邮件… …

数据可视化

Prometheus build-in WebUI

Grafana

其他基于 API 开发的客户端

六、监控服务器信息

1、前提

安装grafana、Prometheus(推荐使用docker方式安装) ,及准备数据采集工具node_exporter

安装包:

链接: https://pan.baidu.com/s/18uc3IFowHa3DC9uKSO2WYQ?pwd=wejv 提取码: wejv 复制这段内容后打开百度网盘手机App,操作更方便哦

2、运行node_exporter

2.1、将node_exporter放在需要监控的服务器上随便一个目录即可,并进行解压

2.2、运行node_exporter,进行数据采集

nohup ./node_exporter #这个执行是会默认使用9100端口运行 nohup ./node_exporter --web.listen-address=:port

2.3、运行后可以使用该方法查看采集的数据http:{IP}:{port}/metrics#ip 是你监控的服务器的ip,port是运行node_exporter时指定的端口,如果没有指定端口那么就是默认的9100

3、配置prometheus及运行

3.1、配置prometheus.yml

让prometheus接收到采集的数据,{IP}:{port},{IP}:{port}#ip 是你监控的服务器的ip,port是运行node_exporter时指定的端口,如果没有指定端口那么就是默认的9100

3.2、运行prometheus

3.2.1、可以通过docker去安装prometheus,这样通过docker进行启停比较方便,装在linux或者windows上都有可以

3.2.2、直接运行,运行后会唤起终端,不能关闭

4、grafana查看结果

4.1、访问grafana

grafana:http://192.168.4.192:3000/login #ip是你安装grafana的服务器ip,端口默认3000

4.2、添加数据源

输入prometheus运行的服务地址,端口默认9090

4.3、添加仪表盘

DashBoard 仪表盘,数据展示的窗口。就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana的 DashBoard 就是以各种图形的方式来展示从 Datasource 拿到的数据。)

4.3.1、可以自己编写仪表盘

4.3.2、导入已有的仪表盘(16098)

https://grafana.com/grafana/dashboards/?search=node+export

七、监控mysql

1、运行mysqld_exporter

1.1、将mysqld_exporter放在需要监控的服务器上随便一个目录即可,并进行解压

链接: https://pan.baidu.com/s/1pccTuiv2kvMFl3d4rQ4QRA?pwd=v2dm 提取码: v2dm 复制这段内容后打开百度网盘手机App,操作更方便哦

2、配置mysqld_exporter

创建一个配置文件config.my.cnf,并使用MySQL的用户和密码。

[client]

user=exporter_user #mysql的用户

password=exporter_password #mysql的密码

3、运行mysqld_exporter,进行数据采集

nohup ./mysqld_exporter --config.my-cnf=config.my.cnf#这个执行是会默认使用9104端口运行

运行后可以使用该方法查看采集的数据http:{IP}:{port}/metrics#ip 是你监控的服务器的ip,port是运行mysqld_exporter时指定的端口,如果没有指定端口那么就是默认的9104

4、配置prometheus及运行

4.1、配置prometheus.yml,

让prometheus接收到采集的数据,{IP}:{port},{IP}:{port}#ip 是你监控的服务器的ip,port是运行mysqld_exporter时指定的端口,如果没有指定端口那么就是默认的9104

4.2、运行prometheus

4.2.1、可以通过docker去安装prometheus,这样通过docker进行启停比较方便,装在linux或者windows上都有可以

4.2.2、直接运行,运行后会唤起终端,不能关闭

5、grafana查看结果

5.1、访问grafana

grafana:http://192.168.4.192:3000/login #ip是你安装grafana的服务器ip,端口默认3000

5.2、添加数据源

输入prometheus运行的服务地址,端口默认9090

6、添加仪表盘

(DashBoard 仪表盘,数据展示的窗口。就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana的 DashBoard 就是以各种图形的方式来展示从 Datasource 拿到的数据。)

6.1、可以自己编写仪表盘

6.2、导入已有的仪表盘(mysql相关的)(7362)

https://grafana.com/grafana/dashboards/?search=node+export

实现MySQL的监控。这些监控指标可以包括但不限于:

  1. 数据库连接状态:可以监控当前活动的连接数、最大连接数、等待连接的线程数等,以评估数据库的连接使用情况。

  2. 性能指标:包括查询执行时间、查询次数、缓存命中率等,这些指标可以帮助分析数据库的性能瓶颈。

  3. 内存使用情况:可以监控数据库的内存使用情况,包括缓存使用、内存池使用等,以评估数据库的内存压力。

  4. 磁盘使用情况:监控数据库所在磁盘的空间使用情况,包括数据文件、日志文件等的使用情况,以评估存储压力。

  5. 错误和异常:可以监控数据库错误日志,包括连接错误、查询错误等,以及时发现并解决潜在问题。

  6. 系统资源使用情况:通过监控CPU、网络等系统资源的使用情况,评估数据库服务器的整体负载情况

八、其他

以上只是其中一个小功能,如果需要监控其他的东西可以网上找到对应的数据源和仪表盘即可实现监控

<think>好的,我现在需要帮助用户了解Prometheus监控系统的使用和配置。首先,我需要根据用户提供的引用内容来整理信息,确保引用的准确性。用户提到了三个引用,其中引用[3]详细描述了Prometheus的架构和工作流程,引用[1]和[2]提到Grafana的集成和局限性。我需要将这些内容系统地组织起来,按照用户的要求分步骤说明。 首先,我应该介绍Prometheus的基本概念和组件,这样用户有一个整体的认识。根据引用[3],Prometheus server通过静态配置或服务发现获取监控目标,然后拉取数据,存储,处理告警,并通过Grafana展示。这部分需要清晰的结构,可能分为安装部署、配置监控目标、数据采集、告警配置和可视化展示几个步骤。 接下来,每个步骤需要详细说明。例如,安装部分需要说明下载、解压、配置和启动。这里可能需要提供示例配置文件,但用户要求行内数学表达式用$...$,而代码块需要用反引号,所以安装步骤可以用命令行代码块展示。 配置监控目标时,用户可能需要知道如何静态配置和动态服务发现。根据引用[3],静态配置是在prometheus.yml中添加targets,而动态发现可能涉及Consul或Kubernetes。这里可以给出一个示例的prometheus.yml片段,用代码块展示。 数据采集部分需要解释Exporter的作用,比如Node Exporter和应用的Exporter,以及Pushgateway的使用场景。这部分可能需要分点说明,每个Exporter的用途和安装方法。 告警配置涉及Alertmanager,需要说明如何设置告警规则和路由。引用[3]提到告警规则的计算和通知的分组、去重,这里可以给出告警规则文件的例子,以及Alertmanager的配置示例。 可视化部分需要结合Grafana,根据引用[1]和[2],说明如何将Prometheus数据源添加到Grafana,并导入仪表盘模板。这里可以给出Grafana配置的步骤和截图建议,但用户可能只需要文字说明。 最后,需要提到Prometheus的局限性,如单点问题、数据保留策略和实时性,这部分引用[3]和[2]都有涉及,要确保用户了解系统的不足。 在生成相关问题的时候,要围绕用户可能进一步询问的方向,比如Exporter开发、高可用方案、与其他监控系统的对比,以及告警优化等。确保问题覆盖用户可能感兴趣的不同方面。 整个过程中,需要保持回答结构清晰,分步骤说明,并正确引用提供的资料。同时,注意使用中文,避免使用Markdown格式,但代码块和引用标识要正确应用。现在整理这些思路,形成连贯的回答。</think>### Prometheus监控系统的使用与配置指南 Prometheus是一款开源的时序数据库与监控系统,广泛应用于微服务架构的指标监控。以下是其核心使用与配置步骤: --- #### 一、系统安装与部署 1. **下载Prometheus** 通过官网下载二进制包并解压: ```bash wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz tar -xvf prometheus-*.tar.gz ``` 2. **配置启动文件** 修改`prometheus.yml`定义监控目标(静态配置示例): ```yaml global: scrape_interval: 15s # 数据抓取间隔 scrape_configs: - job_name: 'node' static_configs: - targets: ['192.168.1.100:9100'] # Node Exporter地址 ``` 3. **启动服务** ```bash ./prometheus --config.file=prometheus.yml ``` --- #### 二、配置监控目标 1. **静态配置** 直接在`prometheus.yml`中定义`targets`列表[^3]。 2. **动态服务发现** 支持Kubernetes、Consul等平台自动发现服务。例如Kubernetes配置: ```yaml - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod ``` --- #### 三、数据采集方式 1. **Exporter模式** - **基础设施监控**:部署Node Exporter采集主机指标(CPU/内存等)。 ```bash wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz ``` - **应用监控**:Spring Boot应用可通过`micrometer-registry-prometheus`暴露端点[^1]。 2. **Pushgateway中转** 适用于短生命周期任务,将数据推送到Pushgateway: ```bash echo "some_metric 3.14" | curl --data-binary @- http://pushgateway:9091/metrics ``` --- #### 四、告警配置 1. **定义告警规则** 创建`alert.rules.yml`文件,示例规则: ```yaml groups: - name: host-alerts rules: - alert: HighCPUUsage expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: critical ``` 2. **配置Alertmanager** 修改`alertmanager.yml`设置通知渠道(如邮件): ```yaml route: receiver: 'email-notice' receivers: - name: 'email-notice' email_configs: - to: 'admin@example.com' smarthost: 'smtp.example.com:587' ``` --- #### 五、数据可视化 1. **Prometheus原生界面** 访问`http://localhost:9090`,使用PromQL查询数据(如`node_memory_Active_bytes`)。 2. **Grafana集成** - 添加Prometheus数据源,填写URL `http://prometheus:9090`[^2]。 - 导入官方仪表盘模板(如ID:8919用于Node Exporter)。 --- #### 六、局限性说明 1. 数据存储默认仅保留15天,需搭配远程存储(如Thanos)扩展。 2. 实时性依赖拉取模式,不适合秒级监控场景。 3. 单实例可能成为性能瓶颈,需通过分片或联邦部署优化。 --- §§ 1. 如何为自定义应用开发Prometheus Exporter? 2. Prometheus的高可用部署方案有哪些? 3. Prometheus与Zabbix监控系统的核心差异是什么? 4. 如何优化Prometheus的长期存储与查询性能? 5. Alertmanager的告警静默与抑制机制如何配置?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr. G K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值