0%

prometheus和grafana的安装和使用

传说地球上本没有火种,那时人类的生活非常困苦。普罗米修斯为了给人类造福,就冒着生命危险,从太阳神阿波罗那里去偷走了一个火种,给人类带来了光明,是一位让人敬仰的神。他因此而受到宙斯的处罚,被绑在高加索山,每日忍受风吹日晒和鹫鹰啄食,后被赫拉克勒斯救出。

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(这一步不能省):

image-20220215173311851

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

image-20220215173409910

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

http://192.168.40.98:9090/

image-20220215174934193

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

image-20220215175144919

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
  • Prometheus配置文件添加监控项

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是否有了。

image-20220216100808899
  • 导入grafana模板,数据展示
image-20220215183334543

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

image-20220215183626806

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

image-20220215185843612

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
  • 添加模板编号 7362
image-20220216144528572

4. 参考资料

给作者打赏,可以加首页微信,咨询作者相关问题!