prometheus相关知识
监控的目的
google指出,监控分为白盒监控和黑盒监控之分。
-
白盒监控:通过监控内部的运行状态及指标判断可能会发生的问题,从而做出预判或对其进行优化。
-
黑盒监控:监控系统或服务,在发生异常时做出相应措施。
– 监控的目的如下 –
1)、根据历史监控数据,对为了做出预测
2)、发生异常时,即使报警,或做出相应措施
3)、根据监控报警及时定位问题根源
4)、通过可视化图表展示,便于直观获取信息
1、特点:
-
Prometheus 属于一站式监控告警平台,依赖少,功能齐全。 Prometheus 支持对云或容器的监控,其他系统主要对主机监控。
-
Prometheus 数据查询语句表现力更强大,内置更强大的统计函数。 Prometheus 在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好。
2、优点:
(1)监控数据的精细程度非常高,可以精确到1-5秒的采集精度
(2)软件的部署非常快,大大缩减搭建时间成本
(3)周边插件很丰富,比如 exporter pushgateway 大多数都步需要自己开发了
(4)基于数学计算模型(proMQL),大量的使用函数,可以实现很复杂规则的业务逻辑监控(比如QPS曲线,弯曲,凸起,下跌,比例等等模糊)
(5)可以嵌入很多开源工具的内部,比如nignx 、数据库 等,进行监控,数据更准时更可信(其他监控比较难做)
(6)结合grafana 图形很高大上很美观
不足:
(1)因为图形采集经度,如果集群数据量太大,那么简单监控有性能瓶颈。
(2)学习成本大,还有 proMQL,中文资料极少,没有人教 官网英文资料也是比较难入门
(3)对磁盘资源消耗比较大,这个具体要看监控的集群数量 和 监控项的多少 以及保存时长的设置
(4)本身的使用,需要使用者数学不能太差,有一定的数据逻辑
3、基本组件:
-
Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
-
client libraries,用于对接 Prometheus Server, 可以查询和上报数据。
-
push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
-
各种汇报数据的 exporters ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等。
-
用于告警通知管理的 alertmanager 。
4、基本原理:
-
Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统, 不需要任何SDK或者其他的集成过程。
-
这样做非常适合虚拟化环境比如VM或者Docker 。 Prometheus应该是为数不多的适合Docker、Mesos、 Kubernetes环境的监控系统之一。
-
输出被监控组件信息的HTTP接口被叫做exporter 。
-
目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux
系统信息 (包括磁盘、内存、CPU、网络等等)
5、Prometheus基本架构与模块:
Prometheus 的主要模块包含:Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等
6、prometheus metrics 四种数据类型:
- Counter
Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。
-
Gauge
Gauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。
-
Histogram
Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模。
例如:请求耗时、响应大小。它特别之处是可以对记录的内 容进行分组,提供count和sum全部值的功能。
-
Summary
Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。
7、默认端口:
-
服务器端:
9090端口是必须配置的,这是prometheus自带的web界面
9100是node_exporter的默认端口
9104是mysqld_exporter默认端口
8、node_exporter 采集器:
如果你有一台服务器,你想要获取它运行时候的参数,比如当前的CPU负载、系统负载、内存消耗、硬盘使用量、网络IO等等。那么你就可以在服务器上运行一个node_exporter,它能帮你把这些参数收集好,并且暴露出一个HTTP接口以便你访问查询