目录
6、Data Visualization (Dashboards)
5、prometheusQL(数据查询语言也是时序数据库使用语言)
一、常用监控简介
1、Cacti
Cacti(英文含义为仙人掌〉是一套基于 PHP、MySQL、SNMP和 RRDtool开发的网络流量监测图形分析工具。
它通过snmpget来获取数据,使用RRDTool绘图,但使用者无须了解RRDTool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。
Cacti通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)。
2、Nagios
Nagios是一款开源的免费网络监视工具,能有效监控windows、Linux和Unix的主机状态,交换机路由器等网络设备打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios主要的特征是监控告警,最强大的就是告警功能,可支持多种告警方式,但缺点是没有强大的数据收集机制,并且数据出图也很简陋,当监控的主机越来越多时,添加主机也非常麻烦,配置文件都是基于文本配置的,不支持web方式管理和配置,这样很容易出错,不宜维护。
3、Zabbix
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供强大的通知机制以让系统运维人员快速定位/解决存在的各种问题。
Zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix acent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD , Open BSD,os x等平台上。
Zabbix解决了cacti没有告警的不足也解决了nagios不能通过web配置的缺点,同时还支持分布式部署,这使得它迅速流行起来,zabbix也成为目前中小企业监控最流行的运维监控平台。
当然,zabbix也有不足之处,它消耗的资源比较多,如果监控的主机非常多时(服务器数量超过500台),可能会出现监控超时、告警超时、告警系统单点故障等现象,不过也有很多解决办法,比如提高硬件性能、改变zabbix监控模式等。
(1)agent代理:专门的代理服务方式进行监控,专属的协议,装有zabbix-agent的主机就可以被zabix-server监控,主动或被动的方式,把数据给到server进行处理。
(2)ssh/telent: linux主机支持ssh/telent协议
(3)snmp:网络设备路由器、交换机不能安装第三方程序(agent),使用简单网络协议。大多数的路由器设备支持SNMP协议
(4)ipmi:通过ipmi接口进行监控,我们可以通过标准的ipmi硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态电源情况,被广泛使用服务监控中,包括采集cpu温度,风扇转速,主板温度,及远程开关机等等,而且ipmi独立于硬件和操作系统,无论是cpu,bios还是os出现故障,都不会影响ipmi的工作,因为ipmi的硬件设备BMC( bashboard management controller)是独立的板卡,独立供电。
(5)zabbix核心组件介绍
①Server:zabbix软件实现监控的核心程序,主要功能是与zabbix proxies和Aents进行交互、触发器计算、发送告警通知;并将数据集中保存。与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自动发现和收缩);
⑦支持多种图表和数据大盘;
注:apen-Falcaon是小米开源的企业级监控工具,用Go语言开发,包括小米、滴滴、美团等在内的互联网公司都在使用它,是一款灵活、可拓展并且高性能的监控方案。
二、Prometheus简介
谷歌的内部大型集群系统borg,是kubernetes的前身。其监控系统是borgmon,而iprometheus是其克隆版,所以非常契合k8s的监控对容器非常适用。
Prometheus本身为一种时序数据库(TSDB),还具备开源的监控、报警、时间序列、数据库的组合。其设计用于进行目标(target)监控的关键组件。
TSDB:pro通过采集的样本以时间序列的方式保存在内存(TSDB时序数据库)中并定时保存到硬盘(持久化)
target:主要指可输出、产生指标数据的组件/对象,包括但不限于主机、应用、服务、K8S ingress(逻辑组件)等,能正常输出指标数据的对象称为target或网络端点(表现形式,例如:192.168.32.11:9100,192.168.32.11:8500)
时序数据:一段时间内通过重复测量而获得的观测值的集合,并且可将这些观测值绘制与图形之上,以数据轴(纵轴〉和时间轴(横轴)来表示随着时间流逝而产生的"渐变"变化(类似与股票)
小结:能随着时间流逝,而能不断采集到的点数据称为时序数据,时序数据库不属于sql数据库也并不是nosql数据库。
1、Prometheus特点
(1)自定义多维数据模型(时序列数据由metric名和一组key/value标签组成);
(2)非常高效的储存平均一个采样数据占大约3.5.bytes左右,320万的时间序列,每30秒采样,默认保持60天,消耗磁盘大概228G;
(3)在多维上灵活且强大的查询语句( PromQL);
(4)不依赖分布式储存,支持单主节点工作;
(5)通过基于HTTP的pull方式采集时序数据;
(6)可以通过push gateway进行时序列数据库推送(pushing);
(7)可以通过服务发现或静态配置去获取要采集的目标服务器(server discover);
(8)多种可视化图表及仪表盘支持。
2、使用场景
Prometheus可以很好地记录任何纯数字时间序列。它既适用于以机器为中心的监视,也适用于高度动态的面向服务的体系结构的监视。在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。(云原生,k8s)
Prometheus是为可靠性而设计的,它是您在中断期间要使用的系统,