博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Premetheus
阅读量:4229 次
发布时间:2019-05-26

本文共 3100 字,大约阅读时间需要 10 分钟。

本质是时间序列数据库,相对而言zabbix采用MySQL进行数据存储的。

采用拉的模式(Pull)从应用中拉取数据,并通过Alert模式实现监控预警,据说单机可以消费百万级时间序列

特点

  1. 一个多维其中包含通过度量标准名称和键/值对标识的时间序列数据
  2. PromQL,一种 ,可利用此维度
  3. 不依赖分布式存储;单服务器节点是自治的
  4. 时间序列收集通过HTTP上的拉模型进行
  5. 通过中间网关支持
  6. 通过服务发现或静态配置发现目标
  7. 多种图形和仪表板支持模式

组件

Prometheus Server:用于收集和存储时间序列数据,负责监控数据的获取,存储以及查询

监控目标配置,prometheus server可以通过静态配置管理监控目标,也可以配合service discovery(k8s、DNS、consul)实现动态管理监控目标。

监控目标存储,prometheus server本身就是一个时序数据库,将采集到的监控数据按照时间序列存储在本地磁盘中。

监控数据查询,prometheus server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。

Client Library,用于检测应用程序代码。客户端库为需要监控的服务生成相应的metrGics并暴露给prometheus server。当prometheus server来pull时,直接返回实时状态的metrics,通常和Job一起合作

Push Gateway,主要用于短期的Jobs。由于这类Jobs存在时间较短,可能在prometheus来Pull之前就消失了,。为此这些Jobs可以直接向Prometheus Server端推送他们的Metrics

Exporters,第三方服务接口(HAProxy,StatsD,Graphite等)。将Metrics(数据集合)发生给Prometheus。Exporter将健康采集的端点通过HTTP的形式暴露给Prometheus Server,使其通过Endpoint端点获取监控数据。

Alertmanager ,从Prometheus Server端接收Alerts后会对数据进行处理。例如去重,分组,然后根据规则发出报警.

WebUI,Prometheus Server内置的Express Browser UI,通过PromQL实现数据的查询以及可视化

架构

Prometheus Server定期从Jobs/Exporter是中拉Metrics。

Prometheus Server将接受到的数据存储在本地时序数据库,并运行已定义好的alert.rules(告警规则),一旦满族告警规则就向Alertmanager推送警报。

Alertmanager根据配置文件,对接收的警报进行处理,例如发邮件告警或借助第三方组件进行告警。

Web UI、Grafana、APIclient,可以借助PromQL对监控数据进行查询。

 

Zabbix与Prometheus比较:

 

监控系统分为三大类:

日志类:日志代码记录信息,例如用户登录,下订单,用户浏览的商品,一个小时内的网关流量,用户平均响应时间

调用链类:记录一个请求经过所以服务的过程,请求从开始进入服务,经过不同服务节点后再返回客户端,通过调用链参数来追踪全链路行为,从而知道请求在哪环节出了故障以及系统的瓶颈

度量类:记录一串以时间为维度的数据,再通过聚合运算,查看指标数据和指标趋势(描述某个被测主体在一段时间内的侧量值变化)

客户端监控:用户行为信息,业务返回码,客户端性能,运营商,版本,操作系统等

业务层监控:核心业务的监控,登录/注册/下单/支付等等

应用层监控:URL请求次数,Service请求数量,SQL执行的结果,Cache的利用率,QPS等

系统层监控:物理/虚拟主机以及操作系统的参数,例如CPU利用率,内存,磁盘空间等

网络层监控 :网关流量,丢包率,错包率,连接数等

状态监控---> 收集/分析数据---> 故障报警---> 问题解决---> 归档报表---> 协助复盘

 

 

 

安装

1.使用预编译的二进制文件

  官网下载安装包

prometheus-2.14.0.linux-amd64.tar.gz     

监视系统和时间序列数据库
alertmanager-0.19.0.linux-amd64.tar.gz   警报经理(官方是这么翻译的)
blackbox_exporter-0.16.0.linux-amd64.tar.gz   黑盒探测器出口商
consul_exporter-0.5.0.linux-amd64.tar.gz   领事指标导出器 
graphite_exporter-0.6.2.linux-amd64.tar.gz 通过Graphite协议接受指标并将其导出为Prometheus指标的服务器
haproxy_exporter-0.10.0.linux-amd64.tar.gz   简单的服务器,可抓取HAProxy统计信息并通过HTTP导出以供Prometheus使用
memcached_exporter-0.6.0.linux-amd64.tar.gz 从内存缓存服务器中导出指标,以供Prometheus使用
mysqld_exporter-0.12.1.linux-amd64.tar.gz MySQL服务器指标导出器
node_exporter-0.18.1.linux-amd64.tar.gz 机器指标导出器
pushgateway-1.0.0.linux-amd64.tar.gz 推送接受器以进行临时和批处理作业
statsd_exporter-0.12.2.linux-amd64.tar.gz StatsD到Prometheus指标导出器 

~]# tar zvxf prometheus-2.14.0.linux-amd64.tar.gz
~]# cd prometheus-2.14.0.linux-amd64/
[root@node1 prometheus-2.14.0.linux-amd64]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool 

 

2.使用dokcer

prometheus.yml通过运行以下命令从主机绑定挂载:

docker run \    -p 9090:9090 \    -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \    prom/prometheus

或使用其他卷进行配置:

docker run \    -p 9090:9090 \    -v /path/to/config:/etc/prometheus \    prom/prometheus

为了避免在主机上管理文件并将其绑定安装,可以将配置烘焙到映像中。如果配置本身是静态的,并且在所有环境中都相同,则此方法效果很好。为此,使用Prometheus配置创建一个新目录, Dockerfile如下所示:

FROM prom/prometheusADD prometheus.yml /etc/prometheus/

现在构建并运行它:

docker build -t my-prometheus .docker run -p 9090:9090 my-prometheus

 

 

 

未完待续。。。

转载地址:http://keiqi.baihongyu.com/

你可能感兴趣的文章
Web Stotage——本地储存详解及案例
查看>>
File Reader文件操作
查看>>
地理位置服务——navigator.geolocation
查看>>
地理位置服务——百度地图API
查看>>
js拖放事件详解及实战
查看>>
js字符串常用属性与方法
查看>>
C++递归算法案例
查看>>
C++算法——异或运算解决出现次数问题
查看>>
C++数据结构——顺序栈(基本代码实现与案例)
查看>>
C++数据结构——链队列(基本代码实现与案例)
查看>>
C++数据结构——顺序表的查找(简单顺序查找、有序表的二分查找、索引顺序的查找)
查看>>
Hive 常用统计查询语句
查看>>
对象存储产生背景、发展历史、原理架构、优缺点、应用场景及开源项目对比
查看>>
Apache Ozone 分布式对象存储系统相关文档汇总
查看>>
Ozone 与 HDDS 的区别与联系
查看>>
maven失败测试用例rerun插件使用方法
查看>>
Python基础(三)
查看>>
Python入门NLP(二)
查看>>
四行Python代码,你也能从图片上识别文字!
查看>>
内网映射外网工具-ngrok
查看>>