【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、网络等系统资源的使用情况,评估数据库服务器的整体负载情况

八、其他

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF+MVVM案例实战(八)- 自定义开关控件封装实现

文章目录 1、案例运行效果2、项目准备2、功能实现1、控件模板实现2、控件封装1、目录与文件创建2、各文件功能实现 3、开关界面与主窗体菜单实现1、开关界面实现2、主窗体菜单实现 4、源代码获取 1、案例运行效果 2、项目准备 打开项目 Wpf_Examples,新建ToggleBut…

无法启动此程序win10玩游戏找不到d3dx9_43.dll缺失的五种常用有效解决方法

d3dx9_43.dll 是 DirectX 9 的一个关键组件,属于动态链接库(DLL)文件,由微软公司开发。DirectX 是一组用于多媒体应用的 API,包括 d3dx9_43.dll 在内的组件对游戏和图形应用程序至关重要。该文件主要负责提供3D图形渲染…

手机折叠屏贴膜应用

折叠手机贴膜的主要难点在于其独特的可折叠设计。折叠屏的弯曲部分对贴膜材料提出了更高要求,需要材料具备足够的柔韧性和耐折痕性,以避免在折叠过程中产生裂痕或脱落。此外,贴膜过程中需要确保无气泡、无褶皱,且能完美贴合屏幕的…

GPU 与 GPU 服务器:科技璀璨之星,开启无限未来

今天咱们要来聊聊在科技领域中闪闪发光的 GPU 和 GPU 服务器。这可真是一对厉害的 “科技搭档”,正以其卓越的性能成为众多行业发展的强大动力源。 先来说说 GPU 吧。它呀,一开始是为了满足图形处理的高要求而诞生的。但随着科技不断进步,人…

从零到一:打造你的专属待办事项应用,探索 Windows 11 开发新境界

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

7、基于爬虫+Flask+Echarts+MySQL的网易云评论可视化大屏

基于爬虫FlaskEchartsMySQL的网易云评论可视化大屏 1、前言2、实现2.1 挑选想要采集的歌曲评论2.2 构建爬虫2.2.1 采集歌曲评论2.2.2 清洗数据入库 2.3 搭建flask框架2.4 数据传值2.5 完整代码&数据集获取 1、前言 本项目是基于requests爬虫flaskecharts搭建的网易云评论的…

WASM 使用说明23事(RUST实现)

文章目录 1. wasm是什么1.1 chatgpt定义如下:1.2 wasm关键特性: 2. wasm demo2.1 cargo 创建项目2.2 编写code2.3 安装wasm-pack2.4 编译 3.1 html页面引用wasm代码(js引用)3.2 访问页面4 导入js function4.1 编写lib.rs文件,内容…

应用案例 | Panorama SCADA助力巴黎奥运会:保障赛事协调与安全

谈到2024年最受关注的体育盛事,巴黎奥运会无疑是焦点之一。作为全球瞩目的顶级赛事,它不仅汇集了来自世界各地的精英运动员,还点燃了全球观众的热情。然而,组织如此大规模的活动绝非易事。从大量游客通过公共交通涌入,…

基于SSM的宠物猫狗商业系统设计与实现

前言 当今社会已经步入了科学技术进步和经济社会快速发展的新时期,国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统宠物猫狗商业采取了人工的管理方法&#…

mfc之tab标签控件的使用--附TabSheet源码

TabSheet源码 TabSheet.h #if !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_) #define AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // TabSheet.h : …

华为云低代码Astro Zero技巧教学7:打造实时更新的动态数据表

数字化经营的浪潮中,数据管理的高效与准确成为企业持续成长的关键。Astro Zero高级页面功能通过创新的表格视图编辑模式,实现了前端操作与后台数据的无缝同步,极大地提升了数据处理的效率和可靠性。 本次技巧内容:使用Astro Zero制…

【亲测】mini版centos7.9配置网络基础ssh等直接使用

1,安装好系统: 默认安装好 CentOS-7-x86_64-Minimal-2009.iso2,配置静态或动态ip: 保持root登陆操作 先配置成动态ip: vi /etc/sysconfig/network-scripts/ifcfg-eth0 重启网卡 systemctl restart network 测试网络畅通 3,配置国内yum镜像源: 先备份: cp /etc/y…

Python | Leetcode Python题解之第503题下一个更大元素II

题目&#xff1a; 题解&#xff1a; class Solution:def nextGreaterElements(self, nums: List[int]) -> List[int]:n len(nums)ret [-1] * nstk list()for i in range(n * 2 - 1):while stk and nums[stk[-1]] < nums[i % n]:ret[stk.pop()] nums[i % n]stk.appen…

排查PHP服务器CPU占用率高的问题

排查PHP服务器CPU占用率高的问题通常可以通过以下步骤进行&#xff1a; 使用top或htop命令&#xff1a;这些命令可以实时显示服务器上各个进程的CPU和内存使用情况。找到CPU使用率高的进程。 查看进程日志&#xff1a;如果PHP-FPM或Apache等服务器进程的日志记录了具体的请求…

中国书法、绘画

孙溟㠭浅析“篆刻” 什么是篆刻&#xff0c;治印一般采用篆书&#xff0c;先写后刻&#xff0c;所以称&#xff02;篆刻&#xff02;&#xff0c;也是镌刻印章的统称。博物馆常见的金属印章&#xff0c;多数是先刻印模&#xff0c;然后再浇铸&#xff0c;也有提前做好金属印坯…

Java当中的数据类型

基本数据类型和引用数据类型基本数据类型&#xff1a; 四类&#xff1a;整型、浮点型、字符型以及布尔型八种&#xff1a; 注意&#xff1a; 字符类型char&#xff1a;2字节&#xff08;1字节8位&#xff09;boolean数据类型不可以 Java当中没有所谓的&#xff1a;0是假 …

已知圆心经纬度,半径长度。算圆上点的经纬度,画圆

前言&#xff1a;经度变化1度&#xff0c;111320米.纬度变化1度&#xff0c;111130米 #define pi 3.14159265 double convertArc(double angle) {double angle_arc(angle/180.0)*pi;return angle_arc; } typedef struct{double lng;double lat;double height;}polygon_points;…

Day03罗马数字转整数

罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的 1 。12 写做 XII &#xff0c;即为 X II 。 27 写做 XXVII, 即为 XX V II 。 通常情况下&…

深入拆解TomcatJetty——Tomcat如何实现IO多路复用

深入拆解Tomcat&Jetty 专栏地址&#xff1a; 极客时间-深入拆解Tomcat & Jetty IO 多路复用 当用户线程发起 I/O 操作后&#xff0c;网络数据读取操作会经历两个步骤&#xff1a; 用户线程等待内核将数据从网卡拷贝到内核空间。内核将数据从内核空间拷贝到用户空间…

面试域——技术面试准备

摘要 来到技术面试这环节有两种情况&#xff0c;其一&#xff1a;这场技术面试可能就是一个面试官KPI面试&#xff08;就是面试工作量&#xff0c;这个面试你是不可能过。&#xff09;如今的就业环境下&#xff0c;人力资源部门也是有考核指标。如果遇到这样的面试你就放平心态…