本文共 3100 字,大约阅读时间需要 10 分钟。
本质是时间序列数据库,相对而言zabbix采用MySQL进行数据存储的。
采用拉的模式(Pull)从应用中拉取数据,并通过Alert模式实现监控预警,据说单机可以消费百万级时间序列
特点
组件
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指标导出器 |
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/