概述
1. Prometheus是什么
简介
Prometheus 是由 SoundCloud 开源监控告警解决方案。2012年成为在社区开源,拥有非常活跃的开发人员和用户社区,Prometheus于2016年加入云原生计算基金会(CNCF),成为继k8s之后的第二个托管项目。
https://prometheus.io/
https://github.com/prometheus
特点
- 多维数据模型:由度量名称和键值对标示的时间序列数据
- PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
- 不依赖分布式存储,单个服务节点可以直接工作
- 基于HTTP的pull方式采集时间序列数据
- 推送时间序列数据通过PushGateWay组件支持
- 通过服务发现或静态配置发现目标
- 多种图形模型以及仪表盘支持
2. Prometheus组成以及架构
- 数据采集:
- Push gateway:短期存储指标数据,主要用于临时性任务
- jobs/exporters:采集已有的第三方服务监控指标并暴露metrics,类似sql/http任务,通过jobs(类似http会暴露metrics接口供Prometheus抓取) 或者 exporters(监控agent,获取不同的数据源,再通过Prometheus serve抓取)
- Prometheus Server:收集并存储时间序列数据库,并提供查询接口
- Service discovery:服务发现与监控原生支持k8s全方位监控
- WEB UI:通过PromQL查看数据,Prometheus web UI(简单的web控制台),grafana,API clients
- Alertmanager:监控告警组件,支持email/wechat
- ClientLibray:客户端库,支持python java golang等,支持暴露metrics
3. 数据模型
- Prometheus 将所有数据存储为时间序列,具有相同度量名称以及标签属于同一个指标;
- 每一个时间序列都有度量标准名称和一组的键值对(也称为标签)
- 时间序列格式: <metric name>{<label name>=<label value>, ...}
示例:api_http_requests_total{method="POST", handler="/messages"}
4. 指标类型
- counter:递增的计数器
- gauge:可以任意变化的数值
- histogram:对一段时间范围内数据进行采样,并对所有数据数值求和与统计数量
- summary:与histogram类似
5. 作业和实例
实例:可以抓取的目标成为实例(Instances)
作业:具有相同目标的实例集合称为作业(jobs)
部署
1. 二进制部署
- 下载二进制包:prometheus.io
- 解压prometheus:tar -zxvf prometheus-2.26.0.linux-amd64.tar.gz
- 修改工作目录:mv prometheus-2.26.0.linux-amd64 /usr/local/prometheus
- 进入工作目录:cd /usr/local/prometheus
- 查看参数说明:./prometheus --help
- 配置服务:
- cd /usr/lib/systemd/system
- vim prometheus.service
- systemctl daemon-reload
- 启动服务:systemctl start prometheus
- 停止服务:systemctl stop prometheus
2. docker部署
docker run -p 9090:9090 -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus