Prometheus+Grafana监控系统部署与使用

Prometheus 简介

Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社区也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

1)Prometheus的特点

强大的数据模型,Prometheus采集的监控数据均以metric的形式存放在内置的时序数据库TSDB当中易于管理,因为Prometheus的核心部分只有一个单独的二进制文件,因此不存在任何的第三方依赖强大的查询语言,Prometheus内置了一个强大的数据查询语言PromQL, 通过它可以实现对监控数据的查询与聚合高可用与可扩展,Prometheus的数据不仅可以存储在本地,还可以使用远程存储,同时还可以使用第三方工具加上它的联邦集群来实现高可用``可视化平台,Prometheus自带了一个UI,不过较为简陋,但Grafana天然支持Prometheus,两者完美结合,可以创建更加精美的数据监控图标;

2)Prometheus数据采集方式

pull方式:该方式为拉取形式,首先需要在Client安装exporter,exporters以守护进程的模式运行,然后开始采集数据每个exporters程序为一个单独的http-server,因为它可以对http的请求做出响应,并返回metric(K/V数据)而Prometheus-server则通过pull的形式去访问每个节点上的exporter并采集所需要的数据,默认为该方式;

push方式:该方式为推送形式,如需使用push方式,则需在服务端或者客户端上安装pushgateway插件pushgateway我们可以将其理解为一个代理,它位于客户端与服务端之间pushgateway先接收指标,然后pushgateway再推送给prometheus-server,这里的pushgateway不一定要安装客户端,也可以安装在服务端甚至其它节点;

3)Prometheus的指标类型

指标的英文叫做metrics,metrics就是一组K/V数据,可以理解为metrics是对采集过来的数据的一种统称而非一个具体的数值或者指标,因为指标的类型是多样的,但实际在Prometheus-server当中并不对指标类型进行区分``而是简单地把这些指标统一视为无类型的时间序列,说到这里,我们来看看metrics的指标类型有哪些;

1.Counter(计数器):从0开始累积计算,代表一种样本数据单调递增的指标,也就是它只增不减,除非监控系统发生了重置我们可以用这种类型的指标来表示服务器的请求数量,错误发生的总数量,已经完成的总数量在使用Counter类型时,不要将其应用于样本数据非单调递增的指标,比如说系统当前运行的进程数量,此时应该使用其它类型;

2.Gauge(仪表盘):它收集的数据是瞬时的,与时间没关系,这种类型代表一种样本数据可以任意变化的指标,也就是它不一定会持续增长,但也不一定会持续降低它的变化没有规则,我们可以使用这种类型的指标来采集硬盘容量的使用率与内存使用率,同时也可以表示能随时增加或者减少的总数,比如并发请求数量;

3.Histogram(直方图):直方图用于表示一段时间内的数据采集结果,并能够对指定区间以及总数进行统计,它通常用来计算分位数的直方图,比如说请求的持续时间或者响应的大小;

4.Summary(摘要):它和Histogram类型相似,用于表示一段时间内的数据采集结果,但是它直接存储了分位数而不是通过区间来进行计算

Prometheus 优点

另外Prometheus还存在以下优点:
1.高效:单一Prometheus可以处理数以百万的监控指标;每秒处理数十万的数据点。

2.易于伸缩:通过使用功能分区(sharing)+联邦集群(federation)可以对Prometheus进行扩展,形成一个逻辑集群;Prometheus提供多种语言的客户端SDK,这些SDK可以快速让应用程序纳入到Prometheus的监控当中。

3.良好的可视化:Prometheus除了自带有Prometheus UI,Prometheus还提供了一个独立的基于Ruby On Rails的Dashboard解决方案Promdash。另外最新的Grafana可视化工具也提供了完整的Proetheus支持,基于Prometheus提供的API还可以实现自己的监控可视化UI。

4.监控更多多样性**:prometheus支持多种语言的的客户端,我们通过客户端方便对核心业务进行埋点,比如下单,添加购物车等流程。
而且prometheus已经有非常多的系统集成;

比如:应用层面的监控:nginx,haproxy,mysql,docker等;
系统层面如: SNMP协议监控,主机监控,进程监控;
容器云监控: docker,k8s openstack私有云;

5.非常高效的存储 :平均一个采样数据占 ~3.5 bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。

Prometheus 架构

此图说明了Prometheus的体系结构及其一些生态系统组件: img

对照图中的每一部分进行介绍:

  • 1.prometheus server: 用于收集和存储时间序列数据。

  • 2.Retrieval:采样模块,prometheus的服务器在哪里拉取数据,检索拉取到的数据分发给 TSDB进行存储;
    TSDB:存储模块默认本地存储为TSDB;
    HTTP server : 提供http接口查询和面板,默认端口为9090;

  • 3.Service Discovery
    服务发现,prometheus支持多种服务发现机制: 文件,DNS,k8s,openstack,等,基于服务发现的过程,通过第三方接口,prometheus查询到需要监控的target列表,然后轮询这些target获取监控数据;

  • 4.客户端SDK
    官方提供的客户端类库有go,java,python,ruby;

  • 5.short-lived jobs
    存在时间不足以被删除的短暂或批量业务,无法通过pull的方式拉取,需要使用push的方式,与pushgeteway结合使用;

  • 6.proDash
    使用rails开发的dashboard,用于可视化指标数据;

  • 7.Exporters:用于暴露已有的第三方服务的 metrics 给 Prometh

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值