Prometheus的特点
- 多维度数据模型。
- 灵活的查询语言。
- 不依赖分布式存储,单个服务器节点是自主的。
- 通过基于HTTP的pull方式采集时序数据。
- 可以通过中间网关进行时序列数据推送。
- 通过服务发现或者静态配置来发现目标服务对象。
- 支持多种多样的图表和界面展示,比如Grafana等。
Prometheus相关组件
Prometheus生态系统由多个组件组成,它们中的一些是可选的。多数Prometheus组件是Go语言写的,这使得这些组件很容易编译和部署。
- Prometheus Server
主要负责数据采集和存储,提供PromQL查询语言的支持。
- 客户端SDK
官方提供的客户端类库有go、java、scala、python、ruby,其他还有很多第三方开发的类库,支持nodejs、php、erlang等。
- Push Gateway
支持临时性Job主动推送指标的中间网关。
- PromDash
使用Rails开发可视化的Dashboard,用于可视化指标数据。
- Exporter
Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。
Prometheus提供多种类型的Exporter用于采集各种不同服务的运行状态。目前支持的有数据库、硬件、消息中间件、存储系统、HTTP服务器、JMX等。
- alertmanager
警告管理器,用来进行报警。
- prometheus_cli
命令行工具。
- 其他辅助性工具
多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式。
架构图
工作流程
- Prometheus 服务器定期从配置好的 jobs 或者 exporters 中获取度量数据;或者接收来自推送网关发送过来的 度量数据。
- Prometheus 服务器在本地存储收集到的度量数据,并对这些数据进行聚合;
- 运行已定义好的 alert.rules,记录新的时间序列或者向告警管理器推送警报。
- 告警管理器根据配置文件,对接收到的警报进行处理,并通过email等途径发出告警。
- Grafana等图形工具获取到监控数据,并以图形化的方式进行展示。
安装及配置
linux:centos7.5
Prometheus:
alertmanager:
node_exporter:
wget https://github.com/prometheus/prometheus/releases/download/v2./prometheus-.linux-amd64.tar.gz wget https://github.com/prometheus/alertmanager/releases/download/v0./alertmanager-.linux-amd64.tar.gz wget https://github.com/prometheus/node_exporter/releases/download/v0./node_exporter-.linux-amd64.tar.gz groupadd prometheus useradd -g prometheus prometheus -d /data/prometheus tar -xvf prometheus-.linux-amd64.tar.gz mv prometheus-.linux-amd64 /data/prometheus mkdir /data/prometheus/{data,config,logs} -p mv prometheus promtool /usr/local/bin/ mv prometheus.yml config/ chown -R prometheus.prometheus *
- 创建prometheus.service 的 systemd unit 文件
vim /etc/systemd/system/prometheus.service [Unit] Description=Prometheus Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=prometheus ExecStart=/usr/local/bin/prometheus --config.file=/data/prometheus/config/prometheus.yml --storage.tsdb.path=/data/prometheus/data --web.enable-lifecycle --storage.tsdb.retention=1y Restart=on-failure [Install] WantedBy=multi-user.target
说明:
--web.enable-lifecycle #这个是方便更改配置文件,不用重启Prometheus服务,使用curl -XPOST http://:/-/reload 重载配置
- 启动服务
systemctl daemon-reload systemctl enable prometheus.service systemctl start prometheus.service
- prometheus 简单web UI :http://:/graph
- 效果图
如果对您有帮助,记得不要忘了给个关注哦!!!@上海IT故事,也可查看账号统一系列。