家有儿女,乐高城市,嫌疑人x的献身-多啦face,面部表情识别专家

admin 2个月前 ( 09-28 07:50 ) 0条评论
摘要: 为什么说Prometheus是足以取代Zabbix的监控神器?...

本文依据dbaplus社群第198期线上共享收拾而成,文末还有好书引荐哦~

讲师介绍

一、简介

Kubernetes自从2012年开源以来便以不行阻挠之势成为容器范畴调度和编列的领头羊,Kubernetes是Google B轮奸org体系的开源完结,于此对应Prometheus则是Google BorgMon的开源完结。Prometheus是由SoundCloud开发的开源监控报警体系和时序列数据库。从字面上了解,Prometheus由两个部分组成,一个是监控报警体系,另一个是自带的时序数据库(TSDB)。

2016年,由Google主张的Linux基金会旗下的原生云基金会(Cloud水桫 Native Computing Foundation)将Prometheus归入其第二大开源项目。Prometheus在开源社区也十分活泼,在GitHub上具有两万多Star,而且体系每隔一两周就会有一个小版别的更新。

二、各种监控东西比照

其实,在Prometheus之前市道现已呈现了许多的监控体系,如Zabbix、Open-Falcon、Nagios等。那么Prometheus和这些监控体系有啥异同呢?咱们先简略回忆一下这些监控体系。

1、Zabbix

Zabbix是由Alexei Vladishev开源的散布式监控体系,支撑多种搜集方法和搜集客户端,一同支撑SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将搜集到的数据存放到数据库中,然后对其进行剖析收拾,假如契合告警规矩,则触发相应的告警。

Zabbix中心组件首要是Agent和Server,其间Agent首要担任搜集数据并经过主动或许被迫的方法搜集数据发送到Server/Proxy,除此之外,为了扩展监控项,Agent还支撑履行自界说脚本。Server首要担任接纳Agent发送的监控信息,并进行汇总存储,触发告警等。

Zabbix Server将搜集的监控数据存储到Zabbix Database中。Zabbix Database支撑常用的联系型数据库,假如MySQL、PostgreSQL、Oracle等,默许是MySQL,并供给Zabbix Web页面(PHP编写)数据查询。

Zabbix由于运用了联系型数据存储时序数据,所以在监控大规划集群常常常在数据存储方面绰绰有余。所以从Zabbix 4.2版别后开端支撑TimescaleDB时序数据库,不过现在成熟度还不高。

2、Open-Falcon

Open-Falcon是小米开源的企业级监控东西,用Go言语开发而成,包含小米、滴滴、美团等在内的互联网公司都在运用它,是一款灵敏、可扩展而且高功用的监控计划,首要组件包含了:

1)Falcon-agent是用Go言语开发的Daemon程序,运转在每台Linux服务器上,用于搜集主机上的各种方针数据,首要包含CPU、内存、磁盘、文件体系、内核参数、Socket衔接等,现在现已支撑200多项监控方针数字军团再聚还珠。而且,Agent支撑用户自界说的监控脚本。

2)Hearthbeat server简称HBS心跳服务,每个Agent都会周期性地经过RPC方法将自己的状况上报给HBS,首要包含主机名、主机IP、Agent版别和插件版别,Agent还会从HBS媚姐获取自己需求履行的搜集使命和自界说插件。

3)Transfer担任接纳Agent发送的监控数据,并对数据进行收拾,在过滤后经过一致性Hash算法发送到Judge或许Graph。

4)Graph是依据RRD的数据上报、归档、存储组件。Graph在收到数据今后,会以rrdtool的数据归档方法来存储,一同供给RPC方法的监控查询接口。

5)Judge告警模块,Transfer转发到Judge的数据会触发用户设定的告警规矩,假如满意,则会触发邮件、微信或许回调接口。这儿为了防止重复告警引进了Redis暂存告警,然后完结告警的合并和按捺。

6)Dashboard是面向用户的监控数据查询和告警装备界面。

3、Nagios

Nagios原名为NetSaint,由Ethan Galstad开发并保护。Nagios是一个老牌监控东西,由C言语编写而成,首要针对主机监控(CPU、内存、磁盘等)和网络监控(SMTP、POP3、HTTP和NNTP等),当然也支撑用户自界说的监控脚本。

它还支撑一种愈加通用和安全的搜集方法NREP(Nagios Remote Plugin Executor),它首要在远端发动一个NREP看护进程,用于在远端主机上面运转检测指令,在Nagios服务端用check nrep的plugin插件经过SSL对接到NREP看护进程履行相应的监控行为。比较SSH长途履行指令的方法,这种方法愈加安全。

4、Promethe家有儿女,乐高城市,嫌疑人x的牺牲-多啦face,面部表情辨认专家u玄阳永夜s

Prometheus是由SoundCloud开发的开源监控报警体系和时序列数据库。Prometheus的根本原理是经过HTTP周期性抓取被监控组件的状况,恣意组件只需供给对应的HTTP接口而且天唯艺术酒店契合Prometheus界说的数据格局,就能够接入Prometheus监控。

Prometheus Server担任守时在方针上抓取metrics(方针)数据并保存到本地存储里边。Prometheus选用了一种Pul无重力战机l(拉)的方法获取数据,不只下降客户端的复杂度,客户端只需求搜集数据,无需了解服务端状况,而且服务端能够愈加便利的水平扩展。

假如监控数据到达告警阈值Prometheus Server会经过HTTP将告警发送到告警模块alertmanger,经过告警的按捺后触发邮件或许webhook。Prometheus支撑PromQL供给多维度数据模型和灵敏的查询,经过监控方针相关多个tag的方法,将监控数据进行恣意维度的组合以及聚合。

5、归纳比照

1)归纳比照如上面的表格,从开发言语上看,为了应对高并发和快速迭代的需求,监控体系的开发言语现已渐渐从C言语转移到Go。不得不说,Go凭仗简练的语法和高雅的狱乐营并发,在Java占有事务开发,C占有底层开发的状况下,精确认位中心件开发需求,在其时开源中心件产品中被广泛运用。

2)从体系成熟度上看,Zabbix和Nagios都是老牌的监控体系:Nagios是在1999年呈现的,Zabbix是在1998年呈现的,体系功用比较安稳,成熟度较高。而Prometheus和Open-Falcon都是最近几年才诞生的,尽管功用还在不断迭代更新,但站在k1685伟人的膀子之上,在架构规划上学习了许多老牌监控体系的经历;

3)从体系扩展性方面看,Zabbix和Open-Falcon都能够自界说各种监控脚本,而且Zabbix不只能够做到主动推送,还能够做到被迫拉取,Prometheus则界说了一套监控数据标准,并经过各种exporter扩展体系搜集才能。

4)从数据存储方面来看,Zabbix选用联系数据库保存,这极大约束了Zabbix搜集的功用,Nagios和Open-Falcon都选用RDD数据存储,Open-Falcon还加入了一致性hash算法分片数据,而且能够对接到OpenTSDB,而Prometheus自研一套高功用的时序数据库,在V3版别能够到达每秒千万等级的数据存储,经过对接第三方时序数据库扩展历史数据的存储;

5)从装备复杂度上看,Prometheus只需一个中心server组件,一条指令便能够发动,比较而言,其他体系装备相对费事,尤其是Open-Falcon。

6)从社区活泼度上看,现在Zabbix和Nagios的社区活泼度比较低,尤其是Nagios,Open-Falcon尽管也比较活泼,但根本都是国内的公司储百亮参加,Prometheus在这方面占有绝对优势,社区活泼度最高,而且遭到CNCF的支撑,后期的开展值得等待;

7)从容器支撑视点看,由于Zabbix和Nagios呈现得比较早,其时容器还没有诞生,天然对容器的支撑也比较差。Open-Falcon尽管供给了容器的监控,但支撑力度有限。Prometheus的动态发皮德尔现机制,不只能够支撑swarm原生集群,还支撑Kubernetes容器集群的监控,是现在容器监控最好处理计划。Zabbix在传统监控体系中,尤其是在服务器相关监控方面,占有绝对优势。而Nagios则在网络监控方面有广泛运用,伴跟着容器的开展,Prometheus开端成为主导及容器监控方面的标配,而且在未来可见的时刻内被广泛运用。

全体来说,比照各种监控捍卫真实的未来体系的好坏,Prometheus能够说是现在监控范畴最尖利的“瑞士军刀”了。

三、Prometheus功用介绍

下图是Prometheus全体架构图。左边是各种数据源首要是各种契合Prometheus数据格局的exporter,除此之外为了支撑推送数据的Agent,能够经过Pushgateway组件,将Push转化为Pull。Prometheus乃至能够从其它的Prometheus获取数据,后边介绍联邦的时分具体介绍。

图片的上侧是服务发现,Prometheus支撑监控方针的主动发现机制,然后能够动态获取监控方针,尽管Zabbix和Open-Falcon也支撑动态发现机制,但Prometheus支撑最完善。

图片中心是中心,经过Retrieval模块守时拉取数据,经过Storage模块保存数据。PromQL是Prometheus供给的查询语法,PromQL经过解析语法树,查询Storage模块获取监控数据。图片右侧是告警和页面展现,页面检查除了Prometheus自带的webui,还能够经过grafana等组件查询Prometheus监控数据。

Prometheus方针格局分为两个部分:一是方针称号,另一个是方针标签。格局如下:

<metric name>{<label name>=<label value>, ...}

标签可表现方针的维度特征,例如,关于方针http_request_total,能够有{status="200", method="POST"}和{status="200", method="GET"}这两个标签。在需求别离获取GET和POST回来200的恳求时,可别离运用上述两种方针;在需求获取一切回来200的恳求时,能够经过http_request_total{status="200"}完结数据的聚合,十分家有儿女,乐高城市,嫌疑人x的牺牲-多啦face,面部表情辨认专家快捷和通用。

Prometheus方针类型有四种:

1)Counter(计数器):计数计算,累计多长或许累计多少次等。它的特点是只增不减,比如HTTP拜访总量;

2)Gauge(仪家有儿女,乐高城市,嫌疑人x的牺牲-多啦face,面部表情辨认专家表盘):数据是一个瞬时值,假如其时内存用量,它跟着时刻改变忽高忽低。

假如需求了解某个时刻家有儿女,乐高城市,嫌疑人x的牺牲-多啦face,面部表情辨认专家段内恳求的呼应时刻,一般做法是运用均匀呼应时刻,但这样做无法表现数据的长尾效应。例如,一个HTTP服务器的正常呼应时刻是30ms,但有很少几回恳求耗时3s,经过均匀呼应时刻很难鉴别长尾效应,所以Prometheus引进了Histogram和Summary。

3)Histogram(直方图):服务端分位,不同区间内样本的个数,比如班级成果,低于60分的9个,低于70分的10个,低于80分的50个。

4)Summary(摘要):客户端分位,直接在客户端经过火位状况,仍是用班级成果举例:0.8分位的是,80分,0.9分为85分,0.99分为的是98分。

Prometheus经过HTTP接口的方法从各种客户端获取数据,这些客户端有必要契合Prometheus监控数据格局,一般由两种方法,一直是侵入式埋点监控,经过在客户端集成假如Kubernetes API直接经过引进Prometheus go client,供给/metrics接口查询kubernetes API各种方针。

另一种是经过exporter方法,在外部将本来各种中心件的监控支撑转化为Prometheus的监控数据格局,如redis exporter将reids方针转化为Prometheus能够辨认的HTTP恳求。

Prometheus并没有选用json的数据格局,而是选用 text/plain 纯文本的方法 ,这是它的特别之处。

HTTP回来Header和Body如上图所示,方针前面两行#是注释,标识方针的意义和类型。方针和方针的值经过空格切割,开发者一般不需求自己拼接这种个数的数据, Prometheus供给了各种言语的SDK支撑。

Prometheus为了支撑各种中心件以及第三方的监控供给了exporter,咱们能够把它了解成监控适配器,将不同方针类型和格局的数据一致转化为Prometheus能够辨认的方针类型。

比如Node exporter首要经过读取linux的/proc以及/sys目录下的体系文件获取操作体系运转状况,reids exporter经过reids指令行获取方针,mysql exporter经过读取数据库监控表获取mysql的功用数据。他们将这些异构的数据转化为标准的Prometheus格局,并供给HTTP查询接口。

Prometheus供给了两种数据耐久化方法:一种是本地存储,经过Prometheus自带的tsdb(时序数据库),将数据保存到本地磁盘,为了功用考虑,主张运用SSD。但本地存储的容量究竟有限,主张不要保存长锌泽超越一个月的数据。Prometheus本地存储经过多年改善,自Prometheus 2.0后供给的V3版别tsdb功用现已十分高,能够支撑单机每秒1000w个方针的搜集。

另一种是远端存储,适用于很多历史监控数据的存储和查询。经过中心层的适配器的转化,Prometheus将数据保存到远端存储。适配器完结Prometheus存储的remote write和remote read接口并把数据转化为远端存储支撑的数据格局。现在,远端存储首要包含OpenTSDB、InfluxDB、Elasticsearch、M3db、Kafka等,其间M3db是现在十分受欢迎的后端存储。

和联系型数据库的SQL相似,Prometheus也内置了数据查询言语PromQL,它供给对时刻序列数据丰厚的查询,聚合以及逻辑运算的才能。一条PromQL首要包含了方针称号、过滤器以及函数和参数。方针能够进行数据运算,包含+ (加法)、- (减法)、* (乘法)、/ (除法)、% (求余)、^ (幂运算),聚合函数包含了:sum (求和)、min (最小值)、max (最大值)、avg (均匀值)、stddev (标准差)、count (计数)、topk (前n条)、quantile (散布计算)等。查询数据经过HTTP GET恳求发送PromQL查询句子。方法如:

curl 'http://Prometheus:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z'

其间query参数便是一条PromQL表达式。除此之外还支撑规划查询query_range,需求额定增加start(开端时刻)、end(完毕时刻)、step(查询步长)这三个参数。无论是Prometheus自带的webui还能够经过grafana,他们本质上都是经过HTTP发送PromQL的方法查询Prometheus数据。整个解析流程如下所示:

当Prometheus接纳恳求后,经过PromQL引擎解析PromQL,确认查询时刻序列和查询时刻规划,经过tsdb接口获取对应数据块,最终依据聚合函数处理监控数据并回来。

Pro钛金瓦metheus告警装备也是经过yaml文件装备,中心是上面的expr参数(告警规矩)和查询相同也是一个PromQL表达式。for代表继续时刻,假如在for时刻内继续触发,Prometheus才宣布告警至alertmanger。

告警组件alertmanger地址是在Prometheus的装备文件中指定,告警经过alertmanger去重、按捺等操作,最终履行告警动作,现在支撑邮件、slack、微信和webhook,假如是对接钉钉,便能够经过webhook方法触发钉钉的客户端发送告警。

Prometheus装备监控方针有两种方法,一种是经过静态文件装备,另一种是动态发现机制,主动注册监控方针。

Prometheus动态发现现在现已支撑Kubernetes、etcd、Consul等多种服务发现庙坝麻柳村机制,动态发现机制能够减少运维人员手动装备,在容器运转环境中尤为重要,容器集群一般在几千乃至几万的规划,假如每个容器都需求独自装备监控项不只需求很多工作量,而且容器常常变化,后续保护更是反常费事。针对Kubernetes环境的动态发现,Promethe酒道网us经过watch kubernetes api动态获取其时集群一切服务和容器状况,然后动态调整监控方针。

为了扩展单个Prometheus的搜集才能和存储才能,Prometheus引进了“联邦”的概念。

多个Prometheus节点组成两层联邦结构,如图所示,上面一层是联邦节点,担任守时从下面的Prometheus节点获取数据并汇总,布置多个联邦节点是为了完结高可用。基层的Prometheus节点又别离担任不同区域的数据搜集,在多机房的事情布置中,基层的每个Prometheus节点能够被布置到独自的一个机豪盾房,充任署理。

四、Prometheus落地实践

首要先简略介绍一下宜信容器这个产品,它是宜信内部依据Kubernetes建立的容器办理渠道,用户能够经过渠道一键布置自己的服务。渠道首要功用包含了服务办理(灰度发布、主动弹性、多集群布置等)、镜像办理、监控告警、CICD、Nginx办理、Ceph存储等多个功用。

其间监控和告警和主动弹性都是依据Prometheus构建。

家有儿女,乐高城市,嫌疑人x的牺牲-多啦face,面部表情辨认专家

Prometheus搜集的数据包含了主机功用监控、容器功用监控、nginx拜访流量、Kubernetes状况以及渠道各个自研组件的功用方针。

Prometheus一方面为页面供给功用方针查询,假如nginx qps、容器cpu利用率,另一便利供给依据这些方针的功用告警,告警发送至alertmanger中,并经过alertmanger的webhook触发后续的告警处理。

为了支撑容器的多方针、多集群主动弹性,渠道开发一套主动弹性模块,经过守时获取Prometheus监控方针,经过上面的公式(方针和除以方针值)计算出方针的容器副本数,最终经过调用Kubernetes接口扩展容器副本。

最终我想表达,Prometheus也并非银弹。

首要,Prometheus只针对功用和可用性监控,并不具有日志监控等功用,并不能经过Prometheus处理一切监控问题。

其次,Prometheus以为只需最近的监控家有儿女,乐高城市,嫌疑人x的牺牲-多啦face,面部表情辨认专家数据才有查询的需求,一切Prometheus本地存储的规划初衷仅仅坚持短期(一个月)的数据,并非针对很多的历史数据的存储。假如需求报表之类的历史数据,则主张运用Prometheus的远端存储如OpenTSDB、m3db侯门佳人骨等。

Prometheus还有一个小瑕疵是没有界说单位,这儿需求运用者自己去区别或许事前界说好一切监控数据单位,防止数据短少单位问题。

>>>>Q & A

Q1:Prometheus能代替Zabbix吗?

A:在咱们公司实践的出产环境中Prometheus完全能够代替Zabbix。而且由于我个人首要担任容器云的建造,对Prometheus愈加喜爱。

Q2:怎样对Prometheus进行权限约束?相似于Zabbix的用户暗码校验。

A:其实Prometheus自身没有任何的权限约束,由于它只作为一套监控体系,它以为这种权限的办理应该归于上面的办理权限的体系去保护,而不该该在它这样一套监控体系里做,所以Prometheus自身在规划上就没有做任何的权限办理。

在咱们宜信内部运用容器云的时分,其实针对Prometheus数据查询时,由于咱们在容器云渠道自身有一套权限办理,所以每个用户只能看到自己的容器,当然他只能看到自己容器的监控数据。

Q3:Prometheus能够监控web地址吗?相似于Zabbix的web场景。

A:Prometheus结合blockbox能够去监控一些web站点是不是健康,它会守时去调用一些你们家有儿女,乐高城市,嫌疑人x的牺牲-多啦face,面部表情辨认专家供给的web接口,然后经过剖析接口回来码或许是回来体,判别web服务是否健康,能够作为站点监控。除此之外还支撑TCP、DNS、ICMP以及HTTPS。

Q4:Prometheus和Ansible有相同效果么?

A:我了解的Ansible其实大多数来说仍是一种主动化运维东西,它尽管有一些简略监控,可是中心并不在监控上面,而是主动化布置和运维上的一些才能,而Prometheus自身仅仅一个单纯的监控和告警的组件。

Q5:请教师比照下InfluxDB和Prometheus,个人觉得InfluxDB易用性更好。

A:InfluxDB自身没有任何监控数据的才能,InfluxDB的商业版别是集群的,能够存储很多的数据,可是开源版别是单机的,不主张运用。Prometheus不光具有数据存储才能,还在数据方针搜集才能,而单纯的InfluxDB只需数据存储才能。

Q6:宜信内部只用Prometheus做监控?还用其他产品合作吗?

A:在宜信公司内部,之前运用的是Zabbix监控,现在正在从Zabbix监控切换到Prometheus监控里。

Q7:哪种监控东西更合适做事务方针监控?

A:我个人触摸过的事务方针监控首要是经过Graphite、Prometheus以及宜信开源的UAV监控,一般的事务方针监控都是经过埋点完结,迥然不同。

Q8:Prometheus监控Oracle、MySQL数据库便利吗?

A:由于现在各种Prometheus export十分丰厚,针对这些中心件,如Oracle、MySQL这种监控是十分便利的。现在也支撑得比较好,在咱们自己的环境里边,咱们经过Kafka的export、MySQL的export、Redi豆豆网走运28s的export别离去监控咱们自己的组件状况,假如你有一些自己定制的监控方针,也能够去定制一些export,这些东西都比较简略,并不是很困难。

Q9:Prometheus用什么存储比较好?本地存储容量有限。

A:在咱们实践出产环境中本地存储只保存一个月数据,历史数据都放到M3db中保存。

Q10:我现在监控一种类型的方针,就需求一个exporter,方针越多exporter的量也不断增加,怎样处理?

A:大部分的监控方针都需求特定类型exporter,由于每种类型的监控方针的数据格局不相同,都要特定的exporter去解析这种方针,而且转换为Prometheus辨认的方针类型。至于说exporter的量十分多,exporter自身是很轻量级的,其实尽管多,可是在咱们自己布置的环境里边,有的时分就和咱们的运用绑缚到一个Pod去布置,其实十分便利保护,自身也不会有什么负载压力,exporter自身很安稳,保护起来也十分简略。

Q11:非容器化布置的中心件也能监控吗?

A:其实Prometheus搜集数据的时分,只合适搜集数据的监控格局是否满意它的需求,它自身并不关怀被监控方针是不是在容器里边,没有任何联系。只需对外露出的监控数据格局契合Prometheus的要求就能够。

Q12:rancher怎样合作Prometheus运用?

A:假如你运用rancher这种第三方的容器渠道,其实Prometheus自身和Kubernetes结合得十分严密,你直接能够在rancher里布置一个Prometheus。它自身只针关于Kubernetes这种监控,由于rancher的底层也是Kubernetes,所以在ranche里布置Prometheus去监控方针,这个是没有问题的。

Q13:Prometheus能把时序数据实时发动到Kafka吗?

A:能够的,现在社区现已有一个Kafka的exporter,能够把监控数据写到Kafka里。

Q14:Prometheus除了联邦集群的方法,是否存在心跳或许相似集群化的布置?

A:Improbable开源的Thanos供给了Prometheus集群化才能,感兴趣的朋友能够深化了解一下。

Q15:Prometheus装备网络设备时,有什么简易方法吗?设备类型跟OID有必定差异的状况下,有什么简易方法?

A:Prometheus经过SNMP exporter监控网络设备时,OID也需求独自装备,现在没有啥好办法。

Q16:怎样更好地阅览Prometheus的源码?Prometheus的源码质量怎样?

A:Prometheus代码包结构明晰,关于学习Go言语的朋友能够深度走读一遍。主张首要看数据搜集和PromQL解析,最终看TSDB。

Q17:Prometheus未来会向哪个方向开展?

A:Prometheus现在正在渐渐成为依据HTTP监控的标准,现在在容器范畴和kubernetes一同,现已确认了领导地位,越来越多的中心件也开端原生支撑Prometheus监控。Prometheus 3.x行将发布,首要增强集群才能、数据存储才能以及安全性。

>>>>直播回放

https://m.qlchat.com/topic/details?topicId=2000005988804996

新书引荐

假如想更全面更深化地了解Prometheus,引荐咱们看看陈晓宇教师参加编撰的新书《深化浅出Prometheus》。

Fintech技能沙龙—上海

文章版权及转载声明:

作者:admin本文地址:http://dollfacebarbie.com/articles/3658.html发布于 2个月前 ( 09-28 07:50 )
文章转载或复制请以超链接形式并注明出处多啦face,面部表情识别专家