Prometheus(一)——概述、监控体系、生态组件、部署

x33g5p2x  于2021-12-08 转载在 其他  
字(4.3k)|赞(0)|评价(0)|浏览(823)

zabbix与prometheus区别

zabbix消耗的资源比较多,如果监控的主机非常多时(服务器数量超过500台),可能会出现监控超时、告警超时、告警系统,单点故障等现象,不过也有很多解决办法,比如提高硬件性能、改变zabbix监控模式、 多套zabbix等。

一、Prometheus概述

  • borgmon (监控系统) 对应克隆的版本:prometheus(go语言)
  • 所以prometheus 特别适合K8S 的架构上,作为一个数据监控解决方案,它由一个大型社区支持,有来自700多家公司的6300个贡献者,13500个代码提交和7200个拉取请求

1.Prometheus具有以下特性:

①多维的数据模型(基于时间序列的Key、value键值对)
②灵活的查询和聚合语言PromQL
③提供本地存储和分布式存储
④通过基于HTTP和HTTPS的Pull模型采集时间序列数据(pull数据的拉取,时间序列:每段 时间点的数据值指标,持续性的产生。横轴标识时间,纵轴为数据值,一段时间内数值的动态变化,所有的点连线形成大盘式的折线图)
⑤可利用Pushgateway (Prometheus的可选中间件)实现Push模式
⑥可通过动态服务发现或静态配置发现目标机器(通过consul自动发现和收缩)
⑥支持多种图表和数据大盘

  • 补充: apen-Falcaon是小米开源的企业级监控工具,用Go语言开发,包括小米、滴滴、美团等在内的互联网公司都在使用它,是一款灵活、可拓展并且高性能的监控方案

二、运维监控平台设计思路

1.数据收集模块
2.数据提取模块(prometheus-TSDB,查询语言是promQL)
3.监控告警模块(布尔值表达式判断是否需要告警,不成立是健康状态)

  • 可以细化为6层
第六层:用户展示管理层   同一用户管理、集中监控、集中维护
第五层:告警事件生成层   实时记录告警事件、形成分析图表(趋势分析、可视化)
第四层:告警规则配置层   告警规则设置、告警伐值设置(定义布尔值表达式,筛选异常状态)
第三层:数据提取层       定时采集数据到监控模块
第二层:数据展示层       数据生成曲线图展示(对时序数据的动态展示)
第一层:数据收集层       多渠道监控数据(网络,硬件,应用,数据,物理环境)

三、prometheus监控体系

1.监控体系:

①系统层监控(需要监控的数据)

  • CPU、Load、Memory、swap、disk i/o、process等
  • 网络监控 :网络设备、工作负载、网络延迟、丢包率等

②中间件及基础设施类监控端监控(移动APP、特定程序等)

  • 消息中间件:kafka、RocketMQ、等消息代理
  • WEB服务器容器:tomcat、weblogic/apache/php/spring系列
  • 数据库/缓存数据库:MysQL、PostgresQL、MogoDB、es、redis

③应用层监控

  • 用于衡量应用程序代码状态和性能
  • #监控的分类#:黑盒监控,白盒监控( promtheus)

④业务层监控

  • 用于衡量应用程序的价值,如电商业务的销售量,ops、dau日活、转化率等,业务接口:登入数量,注册数、订单量、搜索量和支付量

四、prometheus时序数据

  • 时序数据,是在一段时间内通过重复测量(measurement)而获得的观测值的集合将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴,服务器指标数据、应用程序性能监控数据、网络数据等也都是时序数据;

1.数据来源:

  • prometheus基于HTTP call (http/https请求),从配置文件中指定的网络端点(endpoint/IP:端口)上周期性获取指标数据
  • 很多环境、被监控对象,本身是没有直接响应/处理http请求的功能,promethens-exporter则可以在被监控端收集所需的数据,收集过来之后,还会做标准化,把这些数据转化为prometheus可识别,可使用的数据(兼容格式)

2.收集数据:

  • 监控概念 : 白盒监控、黑盒监控
  • 白盒监控 : 自省方式,被监控端内部,可以自己生成指标,只要等待监控系统来采集时提供出去即可
  • 黑盒监控 : 对于被监控系统没有侵入性,对其没有直接"影响",这种类似于基于探针机制进行监控( snmp协议)

Prometheus支持通过三种类型的途径从目标上"抓取(Scrape)"指标数据(基于白盒监控)

3.prometheus(获取方式)

  • Prometheus同其它TSDB相比有一个非常典型的特性:它主动从各Target上拉取(pull)数据,而非等待被监控端的推送(push)

  • 两个获取方式各有优劣,其中,Pull模型的优势在于:
    集中控制:有利于将配置集在Prometheus server上完成,包括指标及采取速率等;
    Prometheus的根本目标在于收集在target上预先完成聚合的聚合型数据,而非一款由事件驱动的存储系统通过targets(标识的是具体的被监控端)
    比如配置文件中的targets : [ ‘localhost:9090’]

五、prometheus的部署

[root@localhost ~]# rz
[root@localhost ~]# ls
anaconda-ks.cfg                       公共  图片  音乐
initial-setup-ks.cfg                  模板  文档  桌面
prometheus-2.27.1.linux-amd64.tar.gz  视频  下载
[root@localhost ~]# tar zxvf prometheus-2.27.1.linux-amd64.tar.gz -C /usr/local/
---
[root@localhost ~]# cd /usr/local/
[root@localhost local]# cd prometheus-2.27.1.linux-amd64/
[root@localhost prometheus-2.27.1.linux-amd64]# ./prometheus
---
#另开一台终端
[root@localhost ~]# netstat -natp | grep 9090
tcp6       0      0 :::9090                 :::*                    LISTEN      10161/./prometheus  
tcp6       0      0 ::1:9090                ::1:46988               ESTABLISHED 10161/./prometheus  
tcp6       0      0 ::1:46988               ::1:9090                ESTABLISHED 10161/./prometheus  
---
  • 登录网址192.168.126.12:9090
  • 表达式浏览器

#如果有warning报错的话:
[root@localhost ~]# ntpdate ntp1.aliyun.com
 7 Dec 22:53:32 ntpdate[21741]: adjust time server 120.25.115.20 offset 0.002993 sec
 [root@localhost ~]# init 6
 #进入网页再刷新一下即可

六、prometheus生态组件

prometheus架构图:

1.prometheus-server:

  • retrieval(获取数据pull/discover) ,TSDB存储,HTPserver
  • 控制台接口,内建了数据样本采集器,可以通过配置文件定义,告诉prometheus到那个监控对象中采集指标数据,prometheus采集过后,会存储在自己内建的TSDB数据库中(默认为2个月时间)),提供了prompL支持查询和过滤操作,同时支持自定义规则来作为告警规则,持续分析一场指标,一旦发生,通知给alerter来发送告警信息,还支持对接外置的UI工具(grafana)来展示数据

2.pushgateway (短期周期任务)

  • 允许短暂和批量作业将其指标暴露给普罗米修斯,由于这些类型的作业可能存在时间不足而被删除,因此他们可以将其指标推送到pushgateway,然后pushgateway将这些指标暴露给Prometheus-server端,主要用于业务数据汇报

3.exporters (常规任务—守护进程)

  • 专门采集一些web服务,nginx,mysgl服务。因为不适合直接通过nttp的方式采集数据,所以需要通过exporter采集数据(下载mysqgl_exporter,采集mysql数据指标)cadvisor: docker数据收集工具(docker也有自己内置的监控收集方式)
  • exporter和instrumtations,负责专门服务数据的收集然后暴露出来等待promtheus收集

4.service discovery:原生支持k8s的服务发现,支持consul、DNs等

5.prometheus内置TSDB数据库作为存储(时序数据的储存,promtheus的TsDB数据库默认保存15天,可以自行调整)

  • ps:时间序列数据库(时序数据库)主要用于指处理代表签(按照时间的顺序变化,既时间序列化)的数据,带时间标签的数据也成为时间序列数据,这是一种特殊类型的数据库,一般不会保存长时间的数据(与mysql相比)
  • 数据保存时间storge.tsdb.retention=90d参数中修改即可(或启动时间指定)

6.alertmanagr:

prometheus可以生成告警信息,但是不能直接提供告警,需要使用一个外置的组件altermanager来进行告警,emailetctif优势在于,收敛、支持静默、去重、可以防止告警信息的轰炸

7.data visualization:

prometheus web ui (prometheus-server内建,表达式浏览器),也可以使用grafana

8.PrmoQL (告警规则编写)

通常告警规则的文件指定输出到展示界面(grafana

9.UI : 表达式浏览器(调试)

总结

1.prometheus如何收集k8s/服务的–三种方式收集

  • Exporters(指标暴露器) :收集节点的信息、将数据格式化或转化为promtheus可识别的http这种转化方式/镜像拉取方式
  • Instrumentation (应用内置的指标暴露器): 收集有内置指标暴露器的信息
  • Pushgateway : 收集短周期的数据

2.如何防止告警信息轰炸

alertmanagr: prometheus可以生成告警信息,但是不能直接提供告警,需要使用一个外置的组件altermanager来进行告警,emailetctif优势在于,收敛、支持静默、去重、可以防止告警信息的轰炸

  • 把这条告警规则中的支持静默开启,让它必须,配置文件里直接改alertmanagr改一个单词

相关文章