Prometheus监控服务-上

目录

一、监控介绍

1、 cacti

2、Nagios

3、Zabbix

4、Prometheus

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

三、prometheus监控体系

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

2、中间件及基础设施类监控

3、应用层监控

4、业务层监控

5、Prometheus支持通过三种抓取类型

6、安装Prometheus

四、Prometheus工作流程


一、监控介绍

1、 cacti

Cacti(英文含义为仙人掌)是一套基于PHP、My$QL、SNMP和 RRDtool开发的网络流量监测图形分析工只。
它通过snmpget来披取数据、使用RRDTool绘图,但使用着无须了解RRbTool复公的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状然构、主机设备以及订何一张图,还可以与LDAP结合进行用户认证,向时也能自定义模板,在历史数据的展示监控方而,其功能相当不错。

cacti通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)

2、Nagios

Nagios是一款开源的免费网络监视工具,能有效监控windows、Linux和unix的主机状态,交换机路由器等网络设置打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
nagios主要的特征是监控告警,最强大的就是告警功能,可支持多种告警方式,但缺点是没有强大的数批收集机制,并且数据出图也很简陌,当监控的主机越来越多时,添加主机也作常麻烦,配置文件都是基于文本配置的,不支持web方式管理和配置,这秤很容易出错,不宜维护。

3、Zabbix

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabixs能监视各种网络参数,保证服务器系统的安企运营;并提供强大的通知机制以让系统运维人员快速定位/解决存在的各种问题。

zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP、zabbix、agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris,HP-DX,AIX, Free,BSD , penBSD,os x等平台上。

zabbix解决了cacti没有告警的不足,也解决了nagios不能通过web配置的缺点,同时还支持分布式部署,这使得它迅速流行起来,zabixt也成为目前中小企业监控最流行的运维监控平台。

缺点:

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


agent代理:专门的代理服务方式进行监控,专属的协议,装有zabiz-agent的主机就可以被zabix-server监控,主动或被动的方式,把数据给到server进行处理。
ssh/telent:linux主机支持ssh/telent协议
snmp:网络设备路由器、交换机不能安装第三方程序(agent),使用简单网络协议。大多数的路由器设备支持SNMP协议
ipmi:通过ipmi接口进行监控,我们可以通过标准的ipmi硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态电源情况,被广泛使用服务监控中,包括采集cpu温度,风扇转速,主板温度,及远程开关机等等,而且ipmi独立于硬件和操作系统,无论是cpu,bios还是os出现故障,都不会影响ipmi的工作,因为ipmi的硬件设备BMc(bashboard management controller)是独立的板卡,独立供电

zabbix核心组件介绍

Zabbix
Server:zabbix软件实现监控的核心程序,主要功能是与zabixproxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存。与prometheus的类似可以保存收集到的数据,但是prometheus告警需要使用alter manager组件
Database storage:存储配置信息以及收集到的数据
web Interface:Zabbix的GUI接口,通常与server运行在同一台机器上
Proxy:可选组件,常用于分布式监控环境中,一个帮助zabbix Server收集数据,分担zabbix Server的负载的程序Agent:部署在被监控主机上、负青收集数据发送给server

4、Prometheus

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

Prometheus具有以下特性:

多维的数据模型(基于时间序列的Key、 value键值对)

灵活的查询和聚合语言PromQL

提供本地存储和分布式存储

通过基于HTTP和HTTPs的Pull模型采集时间序列数据( pull数据的推送,时间序列:每段时间点的数据值指标,持续性的产生。横轴标识时间,纵轴为数据值,一段时间内数值的动态变化,所有的点连线形成大盘式的折线图)

可利用Pushgateway (Prometheus的可选中间件)实现Push模式

可通过动态服务发现或静态配置发现目标机器(通过consul自动发现和收缩)

支持多种图表和数据大盘

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

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

1、数据收集模块
2、数据提取模块
3、监控告警模块

可以细化为6层

第六层:用户展示管理层——同一用户管理、集中监控、集中维护

第五层:告警事件生成层——实时记录告警事件、形成分析图表(趋势分析、可视化)

第四层:告警规则配置层——告警规则设置、告警伐值设置

第三层:数据提取层——定时采集数据到监控模块

第二层:数据展示层——数据生成曲线图展示(对时序数据的动态展示)

第一层:数据收集层——多渠道监控数据
 

三、prometheus监控体系

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

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

2、中间件及基础设施类监控

消息中间件: kafka、RocketMQ、等消息代理(redis 中间件)
WEB服务器容器: tomcat、weblogic、apache、php、spring系列
数据库/缓存数据库:MYSQL、PostgresQL、MogoDB、es、redis
(redis所在服务器的系统层监控、redis 服务状态、RDB AOF日志监控、日志—>如果是哨兵模式—>哨兵共享集群信息,产生的日志—>直接包含的其他节点哨兵信息及mysql信息)(key的数量、key被命中的数据/次数、最大连接数、系统: ulimit -a、redis: redis-cli登陆—》config get maxclients查看最大连接)

3、应用层监控

用于衡量应用程序代码状态和性能

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

4、业务层监控

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

5、Prometheus支持通过三种抓取类型

Exporters —>工作在被监控端,周期性的抓取数据并转换为pro兼容格式等待prometheus来收集,自己并不推送

Instrumentation—>指被监控对象内部自身有数据收集、监控的功能,只需要prometheus直接去获取
Pushgateway —>短周期5s-10s的数据收集

6、安装Prometheus

[root@localhost ~]# systemctl stop  firewalld
[root@localhost ~]# setenforce 0

[root@localhost ~]# rz -E
rz waiting to receive.
[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]# ls
console_libraries  LICENSE  prometheus      promtool
consoles           NOTICE   prometheus.yml
[root@localhost prometheus-2.27.1.linux-amd64]# ./prometheus

#需要校时

 

四、Prometheus工作流程

第一步、通过三种抓取方式(exporter指标暴露器、instrumatation应用内置的指标暴露器、pushgatway短期任务/脚本数据方式)

第二步、采集到后,保存到内存中,在保存到TSDB-Prometheus数据库中

第三步、在通过内存,读取到展示到自带的ui表达式浏览器中

第四步、也是通过内存、产生的告警信息,通过promQL和布尔表达式,通过告警组件alertmanager,产生告路由,进行告警路由分组,发送通知(qq、微信、钉钉等,通过官网复制代码放到数据配置文件中就可)

 第五步、通过kibana、grafana等展示工具展示出来

第六步、服务器通过服务发现的功能,自动增加和减少监控内容(基于文件、基于DNS、基于容器、基于consul注册机)

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

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

3.exporters (常规任务-守护进程)
专门采集一些webl服务,nginx,mysqgl服务。因为不适合直接通过hnttp的方式采集数据,所以需要通过exporter采集数据(下载mysql_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.alertmanagTr: prometheus可以生成告警信息,但是不能直接提供告警,需要使用一个外置的组件altermanager来进行告警,emailetcodt优势在于,收敛、支持静默、去重、可以防止告警信息的轰炸

7.data visualization: prometheus web ui(prometheus-server内建),也可以使用grafana

8.PrmoQL(告警规则编写),通常告警规则的文件指定输出到展示界面(grafana)

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

Guess you like

Origin blog.csdn.net/y1035793317/article/details/121775830