首页 » SEO优化 » php监控qps技巧_彻底搞懂监控系统运用Prometheus Grafana搭建完应用监控系统

php监控qps技巧_彻底搞懂监控系统运用Prometheus Grafana搭建完应用监控系统

访客 2024-12-11 0

扫一扫用手机浏览

文章目录 [+]

一、监控系统简介1.1 什么是监控系统?

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

1.2 监控系统的浸染

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

php监控qps技巧_彻底搞懂监控系统运用Prometheus Grafana搭建完应用监控系统

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

php监控qps技巧_彻底搞懂监控系统运用Prometheus Grafana搭建完应用监控系统
(图片来自网络侵删)

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 目前已经支持 Kubernetes、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/prometheusmv 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/prometheusmv node_exporter-1.3.1.linux-amd64 node_exporter-1.3.1

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

#node_exportercd /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,并上传到做事器。

# 下载grafanawget 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/prometheusmv ngrafana-enterprise-9.0.3.linux-amd64 grafana-9.0.3

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

#grafanacd /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/ 输入默认账号密码:admin\admin。
能正常进入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大行其道的本日,运维监控不再是运维工程师的事情,而是程序员和架构师的必备技能。
希望大家能够闇练节制。

相关文章