监控工具之Prometheus

2016-11-16 17:23:56

Prometheus是一个开源的系统监控和报警的工具包,最初由SoundCloud发布,大多数组件是用go完成的。Prometheus 监控数据通过服务或静态配置来发现
,通过pull方式采集时间序列,通过http协议传输,支持通过中介网关的push时间序列的方式,不依赖分布式存储,支持图表和dashboard等多种方式,适用于监控所有时间序列的项目。

下图是Prometheus和它的组件的整体架构:
Prometheus架构

Prometheus通过直接或者短时jobs中介网关收集监控数据,在本地存储所有收集到的数据,并且通过定义好的rules产生新的时间序列数据,或者发送警报。Promdash或者其他使用API的clients可以将采集到的数据可视化。

快速安装配置教程:
Prometheus可通过二进制安装或者docker安装,这里我们使用二进制安装
下载最新版本 ,然后运行

1
2
3
tar xvfz prometheus-*.tar.gz
cd prometheus-*
./prometheus -config.file=prometheus.yml

http://localhost:9090 可以看到状态页。你也可以通过 http://localhost:9090/metrics 查看监控项
这里我们以监控mysql为例来说下部署流程
修改prometheus.yml,在文件最后添加:

1
2
3
4
5
6
7
8
9
- job_name: 'mysql'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9104']
labels:
instance: db1

重启prometheus服务:

1
# ./prometheus -config.file=prometheus.yml

再打开localhost:9090,查看Status ->Targets页面下,就可以看到配置的两个target:一个是prometheus本身,State为UP,另一个是mysql,State为DOWN,因为我们还没有配置监控mysql的服务。

安装mysql exporter
这里可以直接使用docker或者下载二进制包解压

1
docker pull prom/mysqld-exporter

mysql exporter 需要连接mysql

1
2
CREATE USER 'mysqlexporter'@'localhost' IDENTIFIED BY 'mysqlexporter';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqlexporter'@'localhost'

如果使用docker

1
2
3
docker run -d \          
-p 9104:9104 \
-e DATA_SOURCE_NAME="mysqlexporter:mysqlexporter@(localhost:3306)/data_store" prom/mysqld-exporter

如果使用二进制包

1
2
3
4
5
6
7
8
tar zxf mysqld_exporter-* -C /usr/local/prometheus_exporters
cd /usr/local/prometheus_exporters
$ cat << EOF > .my.cnf
[client]
user=mysqlexporter
password=mysqlexporter
EOF
$ ./mysqld_exporter -config.my-cnf=".my.cnf"

我们再次回到Status->Targets页面,可以看到两个Target的状态已经变成UP了

ref

prometheus.io


您的鼓励是我写作最大的动力

俗话说,投资效率是最好的投资。 如果您感觉我的文章质量不错,读后收获很大,预计能为您提高 10% 的工作效率,不妨小额捐助我一下,让我有动力继续写出更多好文章。