您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

彻底搞懂监控系统,使用Prometheus +Grafana搭建完应用监控系统

时间:2022-07-28 09:37:32  来源:  作者:章为忠

监控是运维系统的基础,我们衡量一个公司/部门的运维水平,看他们的监控系统就可以了。一个完善的监控系统可以提高应用的可用性和可靠性,在提供更优质服务的前提下,降低运维的投入和工作量,为用户带来更多的商业利益和客户体验。下面就带大家彻底搞懂监控系统,使用Prometheus +Grafana搭建完整的应用监控系统。

 

一、监控系统简介

1.1 什么是监控系统?

监控系统顾名思义就是监控服务器、应用系统以及其他第三方组件运行状态的系统。对于平台系统而言,监控系统就是我们的第三只眼,监控系统会实时跟踪应用平台的运行状态,如果有应用系统出现问题或是服务器内存爆满,我们通过监控系统就可以快速定位问题所在,甚至可以设置预警,对一些将要出现的问题进行提前预防处理,及时避免问题的发生。

 

1.2 监控系统的作用

监控是运维系统的基础,我们衡量一个公司/部门的运维水平,看他们的监控系统就可以了。监控系统的作用不言而喻,能帮我们快速定位问题,减少故障,容量规划,性能优化等。

1)定位故障:在发生故障时,我们可以通过查看监控系统的各项指标数据,辅助故障分析和定位。

2)减少故障率:对于即将可能产生的故障能够及时发出预警信息,做好提前预防处理。

3)容量规划:为服务器、中间件以及应用集群的容量规划提供数据支撑。

4)性能调优:JVM垃圾回收次数、接口响应时间、慢SQL等等都可以监控优化。

总而言之,一个完善的监控系统可以提高应用的可用性和可靠性,在提供更优质服务的前提下,降低运维的投入和工作量,为用户带来更多的商业利益和客户体验。

 

1.3 常见的监控对象和指标都有哪些?

应用系统的监控主要分为指标监控和日志监控两大部分:

  • 指标监控主要是对一定时间段内性能指标进行测量,然后再通过时间序列的方式,进行处理、存储和告警。
  • 日志监控则可以提供更详细的上下文信息,通常通过 ELK 技术栈来进行收集、索引和图形化展示。

指标监控可以说是系统监控最核心的功能。主要有服务器资源、应用监控、数据库中间件等。

  • 服务器资源监控:CPU使用率、内存使用率、磁盘使用率、磁盘读写的吞吐量、网络出入流量等等。
  • 数据库监控:TPS、QPS、数据库连接数、慢SQL、InnoDB缓冲池命中率等。
  • redis监控:内存使用率、缓存命中率、key值总数、Redis响应请求时间、客户端连接数、持久性指标等。
  • MQ消息监控:连接数、队列数、生产速率、消费速率、消息堆积量等等。
  • 应用监控:包括HTTP请求,JVM,线程池等。

 

1.4 监控系统的架构

一个完整的监控系统通常由数据采集、数据传输、数据存储、数据展示、监控告警等多个模块组成。

  • 数据采集,采集的方式有很多种,包括日志埋点进行采集,JMX标准接口输出监控指标,被监控对象提供REST API进行数据采集(如Hadoop、ES),系统命令行,统一的SDK进行侵入式的埋点和上报等。
  • 数据传输,将采集的数据以TCP、UDP或者HTTP协议的形式上报给监控系统,有主动Push模式,也有被动Pull模式。
  • 数据存储,有使用MySQL、Oracle等关系数据库存储的,也有使用时序数据库RRDTool、OpentTSDB、InfluxDB存储的,还有使用HBase存储的。
  • 数据展示,数据指标的图形化展示。
  • 监控告警,灵活的告警设置,以及支持邮件、短信、IM等多种通知通道。

 

二、当前流行的监控系统

目前大部分厂商都采用自研或是基于开源组件的方式搭建自己的监控平台。当然也有很多非常流行的开源监控系统,其中,最流行的莫过于Zabbix和Prometheus。下面就对这两个监控系统进行介绍,同时总结下各自的优劣势。

2.1 Zabbix

Zabbix 1998年诞生,核心组件采用C语言开发,Web端采用php开发。它属于老牌监控系统中的优秀代表,功能全面,使用广泛,是最优秀的监控解决方案之一。

 

2.1.1 Zabbix的优势

  • 产品成熟:由于诞生时间长且使用广泛,拥有丰富的文档资料以及各种开源的数据采集插件,能覆盖绝大部分监控场景。
  • 采集方式丰富:支持Agent、SNMP、JMX、SSH等多种采集方式,以及主动和被动的数据传输方式。

2.1.2 Zabbix的劣势

Zabbix需要在被监控主机上安装Agent,所有的数据都存在数据库里,产生的数据很大,瓶颈主要在数据库。

 

2.2 Prometheus

随着微服务架构和容器的兴起,Zabbix对容器监控显得力不从心。为解决监控容器的问题 Prometheus 应运而生。

Prometheus 是一套开源的系统监控报警框架,采用Go语言开发。得益于google与k8s的强力支持,自带云原生的光环,天然能够友好协作,使得Prometheus 在开源社区异常火爆。

 

2.2.1 Prometheus优点

(1)提供多维度数据模型和灵活的查询方式

通过将监控指标关联多个 tag,来将监控数据进行任意维度的组合,并且提供简单的 PromQL 查询方式,还提供 HTTP 查询接口,可以很方便地结合 Grafana 等 GUI 组件展示数据。

(2)基于时序数据库,支持服务器节点的本地存储

通过 Prometheus 自带的时序数据库,可以完成每秒千万级的数据存储;不仅如此,在保存大量历史数据的场景中,Prometheus 可以对接第三方时序数据库和 OpenTSDB 等。

(3)定义了开放指标数据标准

以基于 HTTP 的 Pull 方式采集时序数据,只有实现了Prometheus监控数据才可以被 Prometheus 采集、汇总、并支持 Push 方式向中间网关推送时序数据,能更加灵活地应对多种监控场景。

(4)支持通过静态文件配置和动态发现机制发现监控对象

自动完成数据采集。Prometheus 目前已经支持 Kube.NETes、etcd、Consul 等多种服务发现机制。

(5)易于维护

可以通过二进制文件直接启动,并且提供了容器化部署镜像。

(6)集群支持

支持数据的分区采样和集群部署,支持大规模集群监控。

2.2.2 Prometheus缺点

  • Prometheus 是基于 Metric 的监控,不适用于日志(Logs)、事件(Event)、调用链(Tracing)。
  • 由于Prometheus采用的是Pull模型拉取数据,意味着所有被监控的endpoint必须是可达的,需要合理规划网络的安全配置。
  • 指标众多,需进行适当裁剪。

 

2.3 综合对比

下表通过多维度展现了各自监控系统的优缺点:

 

综合来看,Zabbix 成熟度更高,上手更快,但灵活性较差。而且,监控数据的复杂度增加后,Zabbix 做进一步定制难度很高,即使做好了定制,也没法利用之前收集到的数据了(关系型数据库造成的问题)。

Prometheus 基本上是正相反,上手难度大一些,但由于定制灵活度高,数据也有更多的聚合可能,起步后的使用难度远小于 Zabbix。

如果监控的是物理机,用 Zabbix 没毛病,Zabbix 在传统监控系统中,尤其是在服务器相关监控方面,占据绝对优势;但如果是云环境的话,除非是 Zabbix 玩得非常溜,可以做各种定制,否则还是 Prometheus 吧,毕竟人家就是干这个的。

Prometheus 号称下一代监控系统,已经成为主导及容器监控方面的标配,并且在未来可见的时间内被广泛应用。

 

三、使用Prometheus+grafana搭建监控系统

前面,我们了解了一些监控系统的区别和优缺点,下面我们以Prometheus为例,带大家一步一步搭建监控系统。

3.1 下载

Prometheus需要下载prometheus(Prometheus主服务)、node_exporter(服务器监控)、mysqld_exporter(Mysql数据库监控-可选)、pushgateway(数据网关-可选)、alertmanager(告警组件-可选)

下载地址:
https://prometheus.io/download/

Grafana为数据展示界面,下载地址:
https://grafana.com/grafana/download

 

3.2 架构图

 

 

3.3 安装 Prometheus Server

Prometheus 的架构设计中,Prometheus Server 主要负责数据的收集,存储并且对外提供数据查询支持。下面开始安装Prometheus Server。

step1:首先,下载prometheus,并上传到服务器

# 解压到/usr/local/prometheus目录下:
tar -zxvf prometheus-2.37.0.linux-amd64.tar.gz -C /usr/local/prometheus
# 修改目录名:
cd /usr/local/prometheus
mv prometheus-2.37.0.linux-amd64 prometheus-2.37.0

setp2:启动prometheus Server 服务。prometheus启动非常简单,只需要一个命令即可,进入到
/usr/local/prometheus/prometheus-2.37.0后执行如下命令:

#进入prometheus目录
cd /usr/local/prometheus/prometheus-2.37.0
#执行启动脚本
./prometheus --web.enable-admin-api --config.file=prometheus.yml

step3:验证prometheus是否启动成功,prometheus默认端口为:9090,我们在浏览器中输入:
http://10.2.1.231:9090/graph,进入prometheus数据展示页面,说明prometheus启动成功。

 

3.4 安装 Node Exporter

实际的监控样本数据的由 Exporter 负责收集,如node_exporter 就是负责服务器的资源信息,同时提供了对外访问的HTTP服务地址(通常是/metrics)给prometheus拉取监控样本数据。下面开始安装node_exporter。

step1:首先,下载node_exporter,并上传到服务器

# 解压到/usr/local/prometheus目录下:
tar -zxvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/prometheus
# 修改目录名:
cd /usr/local/prometheus
mv node_exporter-1.3.1.linux-amd64 node_exporter-1.3.1

step2:启动node_exporler,输入如下命令启动:

#node_exporter
cd /usr/local/prometheus/node_exporter-1.3.1
#执行启动命令,指定数据访问的url
./node_exporter --web.listen-address 10.2.1.231:9527

step3:验证node_exporler是否启动成功,我们在浏览器中输入上面指定的地址:
http://10.2.1.231:9527/metrics,可以看到当前 node_exporter 获取到的当前主机的所有监控数据。说明node_exporler启动成功。

 

step4:最后,配置prometheus,将新增加的node配置到prometheus。

修改prometheus-2.37.0 文件夹下的prometheus.yml文件。增加新的node配置,具体配置如下:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ["localhost:9090"]
      
    # 采集node exporter监控数据
  - job_name: 'node'
    static_configs:
      - targets: ['10.2.1.231:9527']

修改完prometheus.yml 文件后,重新启动prometheus。再次访问prometheus数据展示页面,选择status | target,可以看到新的node已经添加进来了。

 

在Graph 页面,在查询框中输入: process_cpu_seconds_total

 

3.5 安装grafana

前面已经把prometheus和node exporter 安装并集成成功。prometheus虽然有自带的数据展示界面,但是不够全面也不直观。接下来集成grafana 完成数据展示。

下载地址:
https://grafana.com/grafana/download

step1:首先,下载Grafana,并上传到服务器。

# 下载grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.3.linux-amd64.tar.gz
# 解压到
tar -zxvf grafana-enterprise-9.0.3.linux-amd64.tar.gz -C /usr/local/prometheus
# 修改目录名:
cd /usr/local/prometheus
mv ngrafana-enterprise-9.0.3.linux-amd64 grafana-9.0.3

step2:启动Grafana,输入如下命令:

#grafana
cd /usr/local/prometheus/grafana-9.0.3/bin
#执行启动命令,指定数据访问的url
./grafana-server --homepath /usr/local/prometheus/grafana-9.0.3 web

step3:验证是否安装成功,Grafana默认端口:3000。在浏览器中输入:http://10.2.1.231:3000/ 输入默认账号密码:adminadmin。能正常进入Grafana,说明Grafana安装成功。

 

step4:配置prometheus数据源,点击 设置 | Data Sources ,按照操作添加prometheus数据源。

 

 

点击add data source,后选择prometheus数据源。

 

 

输入data source 的名字以及prometheus的地址:http://10.2.1.231:9090/ 后点击Save&Test 即可。

 

step5:创建仪表盘 Dashboard

Grafana 支持手动创建仪表盘 Dashboard 和自动导入Dashboard模板两种方式,手动一个个添加Dashboard 比较繁琐,Grafana 社区鼓励用户分享 Dashboard,通过
https://grafana.com/dashboards 网站,可以找到大量可直接使用的Dashboard模板。

Grafana 中所有的Dashboard 通过 JSON 进行共享,下载并且导入这些 JSON 文件,就可以直接使用这些已经定义好的 Dashboard。

 

选择自己喜欢的模板后,点击 Download JSON下载对应的json 文件。然后在Grafana系统中导入相应的json即可。

接下来回到Grafana页面,点击DashBoards|Import

 

选择之前下载好的json文件,导入即可。

 

点击Import后,我们就可以看到详细的服务器资源监控数据。如下图所示:

 

最后

以上,我们就把监控系统介绍完了,并使用Prometheus + Grafana 构建了一个初步的监控系统。

监控是运维系统的基础,在DevOps大行其道的今天,运维监控不再是运维工程师的工作,而是程序员和架构师的必备技能。希望大家能够熟练掌握。



Tags:监控系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
构建实时监控系统:利用MongoDB和数据流处理技术
实时监控系统是一种广泛应用于各个行业的重要系统,它能够实时收集、分析和展示系统运行数据,帮助用户快速发现问题并采取相应的措施。在构建实时监控系统时,MongoDB作为NoSQL数...【详细内容】
2023-11-13  Search: 监控系统  点击:(229)  评论:(0)  加入收藏
利用Java的日志框架监控系统运行情况
在Java应用程序开发中,监控系统的运行情况是非常重要的。通过日志框架记录关键信息、异常和性能指标,可以及时捕获问题,进行故障排除,并优化系统性能。下面将介绍如何利用Java的...【详细内容】
2023-11-06  Search: 监控系统  点击:(232)  评论:(0)  加入收藏
手把手教你搭建OpenFalcon监控系统
引言作为一名Linux和Python技术持续学习者,要求我们不仅能够熟练操作Linux系统,还要能够搭建起强大的运维监控系统。本文将为大家详细介绍如何使用OpenFalcon搭建一个全面、实...【详细内容】
2023-08-27  Search: 监控系统  点击:(276)  评论:(0)  加入收藏
熬了48小时,汇总的金税四期减少税负的技巧及税负监控系统,实用
关于企业税负率的问题一直是财务人员都比较关注的!现在听说金税四期在不断升级中,我们日常财务工作更应该要谨慎!关于税负的监控预警,作为财务人员还是需要早管控!财务总监,前几天...【详细内容】
2023-03-20  Search: 监控系统  点击:(163)  评论:(0)  加入收藏
一文读懂智能汽车驾驶员监控系统
驾驶员监控系统,缩写DMS,是英文Driver Monitor System的缩写,即驾驶员监控系统。主要是实现对驾驶员的身份识别、驾驶员疲劳驾驶以及危险行为的检测功能。福特DMS系统01 法规加...【详细内容】
2023-02-28  Search: 监控系统  点击:(207)  评论:(0)  加入收藏
手把手教你从安装CentOS7.4镜像开始,搭建IoT视频监控系统
本文分享自华为云社区《华为云ECS服务器安装CentOS7.4镜像,部署GINX服务器、搭建物联网视频监控系统》,作者:DS小龙哥。在CentOS7.4服务器版本的环境下安装nginx服务器、配置文...【详细内容】
2022-10-28  Search: 监控系统  点击:(447)  评论:(0)  加入收藏
一篇吃透监控系统:主流工具选型及落地场景参考
这篇文章,我将对监控体系的基础知识、原理和架构做一次系统性整理,同时还会对几款最常用的开源监控产品做下介绍,以便大家选型时参考。内容包括3部分: 必知必会的监控基础知识主...【详细内容】
2022-09-09  Search: 监控系统  点击:(602)  评论:(0)  加入收藏
彻底搞懂监控系统,使用Prometheus +Grafana搭建完应用监控系统
监控是运维系统的基础,我们衡量一个公司/部门的运维水平,看他们的监控系统就可以了。一个完善的监控系统可以提高应用的可用性和可靠性,在提供更优质服务的前提下,降低运维的投...【详细内容】
2022-07-28  Search: 监控系统  点击:(666)  评论:(0)  加入收藏
视频监控系统品牌要怎么选?这几个品牌值得推荐
随着科技和经济的快速发展,视频监控系统已经成为安全防范系统的重要组成部分,它是一种防范能力较强的综合系统,具有监控画面实时显示,录像图象质量单路调节功能,快速检索,自动备份...【详细内容】
2022-07-11  Search: 监控系统  点击:(506)  评论:(0)  加入收藏
安防视频监控系统中的一体化与高速球型摄像机
一、一体化彩色CCD摄像机摄像机枪机,一般需要配置上相应的镜头才能应用。现在,有很多厂家,利用1/4英寸的CCD传感器,采用DSP内置了可以自动聚焦(Auto Focus)的16倍(如F1.6/f:3.9~63...【详细内容】
2022-06-23  Search: 监控系统  点击:(447)  评论:(0)  加入收藏
▌简易百科推荐
手机就可以修改WiFi密码,进行网络提速,还能防止别人蹭网
随着网络的普及和使用频率的增加,很多人可能遇到了一些网络管理上的问题,比如忘记了WiFi密码、网络速度缓慢、或者发现有不明设备在家中蹭网。相信朋友们也曾遇到过吧?但是,你知...【详细内容】
2024-04-03  老毛桃    Tags:WiFi密码   点击:(9)  评论:(0)  加入收藏
手机WiFi信号满格却接收消息延迟?这里有妙招帮你解决!
在现代社会,手机已经成为了我们生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着重要的角色。然而,有时我们会遇到一些令人烦恼的问题,比如明明手机WiFi信号满格...【详细内容】
2024-04-03  蔡前进    Tags:手机WiFi   点击:(8)  评论:(0)  加入收藏
SASE技术应用落地的五个关键趋势
在Gartner 最新发布的《2023网络技术成熟度曲线》报告中认为,SASE技术已经开始走出最初的技术炒作期,将逐步迈向新一轮的实用落地阶段。在Gartner发布的《Hype Cycle for Ente...【详细内容】
2024-04-01    安全牛  Tags:SASE   点击:(13)  评论:(0)  加入收藏
提示“该网站安全证书存在问题,连接可能不安全”如何解决
在你输入网址并浏览网页时,如果你的浏览器弹出一个警告,提示“网站的安全证书存在问题”,或是显示一个红色的锁标志,这些都是网站不安全的警示。这些提示通常是由HTTPS协议中的S...【详细内容】
2024-03-18  倏然间    Tags:网站安全证书   点击:(13)  评论:(0)  加入收藏
如何有效排除CAN总线错误
控制器局域网(CAN)控制器局域网(CAN)是现代车辆中电子元件无缝运行的基础。在远程信息处理领域,CAN总线系统的效率至关重要,其能够实现支撑当今汽车技术的复杂功能。然而,CAN总...【详细内容】
2024-02-20    千家网  Tags:CAN   点击:(56)  评论:(0)  加入收藏
网络连接受限或无连接怎么办?这里提供几个修复办法
可能错误提示 连接受限或无连接:连接具有有限的连接或无连接。你可能无法访问Internet或某些网络资源。 连接受限。排除和解决“连接受限或无连接”错误此错误可能由计算机上...【详细内容】
2024-02-06  驾驭信息纵横科技    Tags:网络连接受限   点击:(52)  评论:(0)  加入收藏
如何将Mac连接到以太网?这里有详细步骤
在Wi-Fi成为最流行、最简单的互联网连接方式之前,每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。如何将Mac连接到以太网如果你的Mac有以太网端口,则需要以...【详细内容】
2024-02-03  驾驭信息纵横科技    Tags:Mac   点击:(68)  评论:(0)  加入收藏
简易百科之什么是端口映射
端口映射,也称为端口转发,是一种网络通信中的技术手段,通过将内网中的一个端口上的数据流量转发到另一个端口,使得外部网络能够访问到内部网络中的特定服务。在实现上,端口映射通...【详细内容】
2024-01-26    简易百科  Tags:端口映射   点击:(165)  评论:(0)  加入收藏
ip因频繁登陆已被禁止访问 无法显示图片 怎么办
首先,我们要明白,部分网站为了有效遏制数据爬取和非法攻击,保证访问速度和普通用户查询,会在系统中增加网络安全设备,加强安全防护机制,并提前设置安全访问规则。因此,一旦用户的行...【详细内容】
2024-01-20  何福意思    Tags:ip   点击:(68)  评论:(0)  加入收藏
电脑连上wifi却上不了网怎么办
当电脑连接上 WiFi 却无法上网时,可能会让人感到困惑和沮丧。这个问题通常会有多种可能的原因,包括网络配置问题、路由器故障、无线适配器问题等。在面对这个问题时,可以尝试以...【详细内容】
2024-01-16  编程资料站    Tags:wifi   点击:(72)  评论:(0)  加入收藏
站内最新
站内热门
站内头条