〇、前言
监控四要素:监控对象、监控软件、监控时间、报警
prometheus官网下载很慢,阿里云镜像站都有,prometheus以及插件的deb包地址:
一、Prometheus概述
1、Prometheus基于时间序列的数值数据的容器监控解决方案,是一套开源的监控&报警&时间序列数据库的组合,适合监控docker容器
2、时间序列:按照时间顺序记录系统、设备状态变化的数据,被称为时序数据
3、基于时间序列数据的特点:
(1)性能好:关系型数据库处理大规模数据适合性能弱,NOSQL可以比较好的处理,但仍比不上时间序列数据库
(2)存储成本低:搞笑的压缩算法,节省存储空间,有效降低IO
4、Prometheus特征:
(1)多维度数据模型
(2)灵活的查询语言
(3)不依赖分布式存储,单个服务器节点即可实现监控
(4)以HTTP方式,通过pull模型拉取时间序列数据
(5)也可以通过中介网关支持push模型
(6)通过服务发现或者静态配置,来发现目标服务对象
(7)支持多种多样的图表和界面显示
5、Prometheus架构图
Prometheus根据配置的任务(job)以周期性pull的方式获取指定目标(target)上的指标(metric)。
(1)Prometheus Server: 根据配置完成数据采集, 服务发现以及数据存储。
(2)Push Gateway : 为应对部分push场景提供的插件,监控数据先推送到 Push Gateway 上,然后再由 Prometheus Server 端采集 pull 。由于存在时间较短,可能在 Prometheus 来 pull 之前,jobs就消失了。(若 Prometheus Server 在采集间隔期间,Push Gateway 上的数据没有变化, Prometheus Server 将采集到2次相同的数据,仅时间戳不同)
(3)Exporters(探针): 是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。抓取什么样的数据,就需要什么类型的exporter,比如说抓取mysql状态的数据,就需要mysqld_exporter。
(4)Alertmanager: Prometheus server 主要负责根据基于PromQL的告警规则分析数据,如果满足PromQL定义的规则,则会产生一条告警,并发送告警信息到Alertmanager,Alertmanager则是根据配置处理告警信息并发送。常见的接收方式有:电子邮件,webhook 等。Alertmanager三种处理告警信息的方式:分组,抑制,静默。
二、Prometheus命令参数与配置文件详解
1、命令参数
--web.read-timeout=5m:请求链接的最大等待时间,防止太多的空闲链接占用资源
--web.read-timeout=5m:最大链接数
--storage.tsdb.retention=15d:开启采集监控数据后,会存在内存和硬盘中多少天,很重要
--storage.tsdb.path=”data/”:存储数据路径,很重要,不要随便放在=,避免/被塞满
--query.timeout=2m
--query.max-concurrency=20
这两项是对用户执行prometheus查询适合的优化设置,防止太多用户同时查询,也防止单个用户执行过大的查询而一直不退出
2、配置文件详解
prometheus.yml
重要参数
global:
scrape_interval: 15s 监控每15秒采集一次信息
scrape_configs:
job_name: 'prometheus'