传说地球上本没有火种,那时人类的生活非常困苦。普罗米修斯为了给人类造福,就冒着生命危险,从太阳神阿波罗那里去偷走了一个火种,给人类带来了光明,是一位让人敬仰的神。他因此而受到宙斯的处罚,被绑在高加索山,每日忍受风吹日晒和鹫鹰啄食,后被赫拉克勒斯救出。
1. prometheus
1.1 安装
https://prometheus.io/download/
1 2 3
| wget https://github.com/prometheus/prometheus/releases/download/v2.33.3/prometheus-2.33.3.linux-amd64.tar.gz sudo tar zxvf prometheus-2.33.3.linux-amd64.tar.gz -C /opt sudo mv /opt/prometheus-2.33.3.linux-amd64 /opt/prometheus
|
1.2 启动
1
| sudo vi /usr/lib/systemd/system/prometheus.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Unit] Description=prometheus service [Service] User=root ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data --web.enable-admin-api TimeoutStopSec=10 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
|
启动
1 2 3 4
| sudo systemctl daemon-reload sudo systemctl enable prometheus sudo systemctl restart prometheus sudo systemctl status prometheus
|
浏览器打开IP:9090端口即可打开 prometheus 自带的监控页面。
http://192.168.40.98:9090/
2. Grafana
2.1 安装
1 2 3 4 5 6
| sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list sudo apt-get update sudo apt-get install grafana
|
2.2 启动
1 2 3
| sudo systemctl daemon-reload sudo systemctl enable grafana-server sudo systemctl start grafana-server
|
2.3 配置
浏览器访问IP:3000端口,即可打开grafana页面,默认用户名密码都是admin,初次登录会要求修改默认的登录密码:
http://192.168.40.98:3000
点击主界面的“Add your first data source”并选择Prometheus(这一步不能省):

Dashboards页面选择“Prometheus 2.0 Stats”进行Import:

Settings页面填写普罗米修斯地址并保存:
http://192.168.40.98:9090/

切换到我们刚才添加的“Prometheus 2.0 Stats”即可看到整个监控页面(点击下面蓝色部分):

3. 监控示例
3.1 CPU, 内存,磁盘(node_exporter)
为了能够采集到主机的运行指标如CPU, 内存,磁盘等信息。我们可以使用 Node Exporter。Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从 https://prometheus.io/download/#node_exporter 获取最新的node exporter版本的二进制包。
1 2 3
| wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz sudo tar zxf node_exporter-1.3.1.linux-amd64.tar.gz -C /opt sudo mv /opt/node_exporter-1.3.1.linux-amd64 /opt/node_exporter
|
增加service
1
| sudo vi /usr/lib/systemd/system/node_exporter.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Unit] Description=node_exporter service [Service] User=root ExecStart=/opt/node_exporter/node_exporter TimeoutStopSec=10 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
|
1 2 3 4
| sudo systemctl daemon-reload sudo systemctl enable node_exporter sudo systemctl start node_exporter sudo systemctl status node_exporter
|
sudo vi /opt/prometheus/prometheus.yml
1 2 3 4 5
| - job_name: 'linux-node' static_configs: - targets: ['localhost:9100'] labels: instance: linux-node1
|
9100是node_exporter
的端口。
sudo systemctl restart prometheus
此时可以去prometheus看下target是否有了。


模板编号请去,grafana的官网 https://grafana.com/dashboards去查找, 我用的编号 8919

选择我们前文创建好的数据源,点击导入即可。

3.1 MySQL(mysqld_exporter)
1 2 3 4 5 6 7
| CREATE USER 'mysqld_exporter'@'127.0.0.1' IDENTIFIED BY 'mysqld_exporter';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'mysqld_exporter'@'127.0.0.1';
GRANT SELECT ON performance_schema.* TO 'mysqld_exporter'@'127.0.0.1';
flush privileges;
|
https://prometheus.io/download/#mysqld_exporter
1 2 3
| wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz sudo tar zxf mysqld_exporter-0.13.0.linux-amd64.tar.gz -C /opt sudo mv /opt/mysqld_exporter-0.13.0.linux-amd64 /opt/mysqld_exporter
|
- 设置配置文件,user为数据库登录用户,password为这个用户的密码:
1 2
| cd /opt/mysqld_exporter sudo vi .my.cnf
|
1 2 3 4 5
| [client] host=127.0.0.1 port=3306 user=mysqld_exporter password=mysqld_exporter
|
1
| sudo vi /usr/lib/systemd/system/mysqld_exporter.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Unit] Description=mysqld_exporter service [Service] User=root ExecStart=/opt/mysqld_exporter/mysqld_exporter --config.my-cnf=/opt/mysqld_exporter/.my.cnf TimeoutStopSec=10 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
|
1 2 3 4
| sudo systemctl daemon-reload sudo systemctl enable mysqld_exporter sudo systemctl start mysqld_exporter sudo systemctl status mysqld_exporter
|
- prometheus配置文件中加入mysql监控并重启:
1
| sudo vi /opt/prometheus/prometheus.yml
|
1 2 3
| - job_name: 'mysqld-node' static_configs: - targets: ['127.0.0.1:9104']
|
1
| sudo systemctl restart prometheus
|

4. 参考资料