prometheus
Prometheus是开源监控报警系统。
- 多维度数据模型。
- 灵活的查询语言。
- 不依赖分布式存储,单个服务器节点是自主的。
- 通过基于HTTP的pull方式采集时序数据。
- 可以通过中间网关进行时序列数据推送。
- 通过服务发现或者静态配置来发现目标服务对象。
支持多种多样的图表和界面展示,比如Grafana等。
概念
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等工具所需要的数据存储格式。
node-exporter
下载镜像
docker pull prom/node-exporter
运行
1 | docker run -d \ |
redis_exporter
下载镜像
docker pull oliver006/redis_exporter
运行
1 | docker run -d \ |
或者
1 | wget https://github.com/oliver006/redis_exporter/releases/download/v0.13/redis_exporter-v0.13.linux-amd64.tar.gz |
mysqld-exporter
下载镜像
docker pull prom/mysqld-exporter
运行
1 | docker run -d \ |
或者1
2
3
4
5
6
7
8
9wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz -O mysqld_exporter-0.10.0.linux-amd64.tar.gz
cat << EOF > my.cnf
[client]
user=prom
password=abc123
EOF
./mysqld_exporter -config.my-cnf="my.cnf"
grafana
下载镜像
docker pull grafana/grafana
运行
1 | docker run -d --name=grafana -p 3000:3000 grafana/grafana |
prometheus
下载镜像
docker pull prom/prometheus
运行
1 | sudo docker run -d \ |
配置
prometheus.yml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22crape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'redis-41'
static_configs:
- targets: ['192.168.1.41:9121']
labels:
instance: redis
- job_name: 'linux-41'
static_configs:
- targets: ['192.168.1.41:9100']
labels:
instance: node
- job_name: 'mysql-41'
static_configs:
- targets: ['192.168.1.41:9101']
labels:
instance: db
重启服务
1
2
3docker ps
docker restart `prometheus-processid`
登录验证
1 | prometheus 192.168.1.41:9090 |