Docker搭建prometheus
1.什么是prometheus
phometheus:当前一套非常流行的开源监控和报警系统。
2.prometheus的运行原理
通过HTTP协议周期性抓取被监控组件的状态。输出被监控组件信息的HTTP接口称为exporter。常用组件大部分都有exporter可以直接使用,比如haproxy,nginx,Mysql,Linux系统信息(包括磁盘、内存、CPU、网络等待)。
prometheus主要特点
一个多维数据模型(时间序列由metrics指标名字和设置key/value键/值的labels构成)。
非常高效的存储,平均一个采样数据占~3.5字节左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
一种灵活的查询语言(PromQL)。
无依赖存储,支持local和remote不同模型。
采用http协议,使用pull模式,拉取数据。
监控目标,可以采用服务器发现或静态配置的方式。
多种模式的图像和仪表板支持,图形化友好。
通过中间网关支持推送时间。
3、安装Prometheus
安装docker
yum install -y docker-io
下载镜像包
docker pull prom/node-exporter
docker pull prom/prometheus
启动node-exporter
新建目录Prometheus,编辑配置文件prometheus.yml。
mkdir /opt/prometheus
cd /opt/prometheus/
vim prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['ip:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['ip:9100']
###prometheus启动
docker run -itd --name prometheus -p 9090:9090 -v /root/html/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /etc/localtime:/etc/localtime:ro prom/prometheus
###node-exporter启动
docker run -d -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net="host" prom/node-exporter
prometheus安装成功界面显示
prometheus安装成功界面显示:http://promethus所在的服务器地址:9090
prometheus状态信息查看
prometheus状态信息查看:http://promethus所在的服务器地址:9090/targets
4.prometheus的架构图
prometheus服务过程:prometheus daemon负责定时去目标是抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口。
prometheus的架构图
prometheus核心组件
> `prometheus`:负责收集和存储时间序列数据。支持通过配置文件、文本文件、ZK、consul、DNS SRV lookup等方式指定抓取目标。也支持可视化的图标形式,比如grafana。自带了promdash,自身提供的模板引擎等。还有HTTP API查询
> `AlertManager`:独立于prometheus的一个组件,支持查询语句,提供报警方式。
> `PushGateway`:支持client主动推送metrics。prometheus只是在gateway上抓取数据。
> `node_exporter`:负责暴露主机metrics数据给prometheus。
> `mysql-exporter`:负责暴露MYSQL的metrics数据给prometheus。
> `grafana`:负责展示数据,是一个开源的数据可视化平台,通常用于时序数据的可视化。
组件详细介绍:
1. short-lived jobs:存在时间不足以被删除的短暂或批量业务,无法通过pull的方式拉取,需要使用push方式,与pushgeteway结合使用。
2. Service discovery:服务发现,prometheus支持多种服务发现机制。
3. Prometheus Server:用于收集和存储时间序列数据。
4. Client Library:客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。
5. Exporters:prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端。
6. Alertmanager:从Prometheus server端接收到alerts后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉,slack等。
7. Grafana:监控仪表盘。
8. Pushgateway:各个目标主机可上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据。
原理及工作流程
1. Prometheus server可定期从活跃的目标主机上拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标;也可通过pushgateway把采集的数据上报到prometheus server中;还可通过一些组件自带的exporter采集相应组件的数据。
2. Prometheus server把采集到的监控指标数据保存到本地磁盘或者数据库。
3. Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发送到altermanager。
4. AlterManager通过配置报警接收方,发送报警到邮件,微信或者钉钉等。
5. Prometheus自带的web ui界面提供PromQL查询语言,可查询监控数据。
6. Grafana可接入prometheus数据源,把监控数据以图形化形式展示出来。
Grafana介绍
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。主要有以下6大特点:
1. 展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件。
2. 数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWacth。
3. 通知提醒:以可视化方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,甚至自定义数据源。
4. 混合展示:在同一图标中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源。
5. 注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记。
6. 过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
简单来说,它是一个多用途的监控工具,同时通过邮件等方式进行有效的预警通知,丰富的直观的可视化界面,多种数据源配置是其优点所在。
启动grafana
安装grafana
wget https://dl.grafana.com/oss/release/grafana-6.0.2-1.x86_64.rpm
sudo yum localinstall grafana-6.0.2-1.x86_64.rpm
启动grafana服务
systemctl daemon-reload
systemctl start grafana-server
systemctl status grafana-server
网址:http://ip:3000/
初始默认密码为:admin/admin