0%

Prometheus+Grafana搭建监控系统

基本概念

Prometheus

时间序列化数据库,将数据打上标签,以时间维度存储。

Grafana

Prometheus中存储的数据,通过Grafana很优美的展现出来。

Prometheus:

登录linux系统,输入以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#创建data文件夹
mkdir /data/

cd /data/

#下载
wget https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz

#解压
tar -zxvf prometheus-2.23.0.linux-amd64.tar.gz -C /usr/local/

cd /usr/local

#转移文件夹
mv prometheus-2.23.0.linux-amd64/ prometheus/

cd prometheus/

#查看版本号
./prometheus --version

prometheus.yml文件,此文件很关键!!!

添加用户 prometheus ,此用户用于启动服务:

1
2
3
4
#创建用户组
groupadd prometheus
#创建用户,没有登录权限
useradd -g prometheus -s /sbin/nologin prometheus

赋予权限:

1
chown -R prometheus:prometheus /usr/local/prometheus/

创建prometheus运行数据目录/data/prometheus-data,并赋予权限:

1
2
3
mkdir /data/prometheus-data

chown -R prometheus:prometheus /data/prometheus-data

设置开机启动:

1
2
3
4
5
touch /usr/lib/systemd/system/prometheus.service

chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service

vi /usr/lib/systemd/system/prometheus.service

prometheus.service,ExecStart启动参数,请根据实际情况增加或修改,详细可以查看官方,本文内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=prometheus

# --storage.tsdb.path是可选项,数据目录存放位置
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus-data
Restart=on-failure

[Install]
WantedBy=multi-user.target

保存后退出。

设置启动:

1
2
3
4
5
6
7
8
#开机启动
systemctl enable prometheus

#服务启动
systemctl start prometheus

#服务状态
systemctl status prometheus

防火墙配置,以firewalld为例,开放9090端口:

1
2
3
4
5
6
7
8
9
10
11
#服务状态
systemctl status firewalld.service

#服务状态
firewall-cmd --state

#开放端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent

#服务重启
systemctl reload firewalld

网址访问:ip地址:9090

1
localhost:9090

exporter是什么?

Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。exporter来源主要2个方面,一个是社区提供的,一种是用户自定义开发。

常用exporter:https://prometheus.io/docs/instrumenting/exporters/

Prometheus 官方提供的 Node Exporter 来完成对Linux系统运行数据的采集。以 Node Exporter 为例。

网址:https://github.com/prometheus/node_exporter/releases

执行以下命令:

1
2
3
4
5
6
7
cd /data/

wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz

tar zxvf node_exporter-1.0.1.linux-amd64.tar.gz

mv node_exporter-1.0.1.linux-amd64/node_exporter /usr/local/prometheus_node_exporter

为node_exporter创建用户:

1
useradd -rs /bin/false prometheusNodeUser

设置开机启动:

1
2
3
4
5
touch /usr/lib/systemd/system/prometheus_node_exporter.service

chown prometheusNodeUser:prometheusNodeUser /usr/lib/systemd/system/prometheus_node_exporter.service

vi /usr/lib/systemd/system/prometheus_node_exporter.service

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=prometheus node exporter
After=network.target

[Service]
User=prometheusNodeUser
Group=prometheusNodeUser
Type=simple
ExecStart=/usr/local/prometheus_node_exporter

[Install]
WantedBy=multi-user.target

保存后退出。

设置启动:

1
2
3
systemctl enable prometheus_node_exporter
systemctl start prometheus_node_exporter
systemctl status prometheus_node_exporter

防火墙配置,以firewalld为例,开放9100端口:

1
2
3
4
5
6
7
systemctl status firewalld.service

firewall-cmd --state

firewall-cmd --zone=public --add-port=9100/tcp --permanent

systemctl reload firewalld

网址访问,ip地址:9100/metrics:

1
localhost:9100/metrics

在Prometheus Server上添加已配置的节点导出程序Target,输入以下命令:

1
2
3
4
5
#备份文件
cp /usr/local/prometheus/prometheus.yml /usr/local/prometheus/prometheus.yml_bak

#修改prometheus.yml文件
vi /usr/local/prometheus/prometheus.yml

在scrape_configs配置下添加以下配置,IP和端口请根据实际情况修改,

1
2
3
4
- job_name: 'node_exporter_centos_108'
scrape_interval: 5s
static_configs:
- targets: ['192.168.0.108:9100']

如图:

重启Prometheus服务:

1
systemctl restart prometheus

登录Prometheus服务器界面,并检查目标,

1
http://192.168.0.108:9090/classic/targets

Grafana

网址:https://grafana.com/

1
2
3
4
5
cd /data

wget https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm

yum install grafana-7.3.6-1.x86_64.rpm

配置文件目录,配置文件目前采用默认:

1
cat /etc/grafana/grafana.ini

设置开机启动:

1
2
3
systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server

防火墙配置,以firewalld为例,开放3000端口:

1
2
3
4
5
6
7
systemctl status firewalld.service

firewall-cmd --state

firewall-cmd --zone=public --add-port=3000/tcp --permanent

systemctl reload firewalld

网址访问,ip地址:3000:

1
localhost:3000

输入用户名和密码:admin和admin,

如图:

配置数据源,将Grafana和Prometheus关联起来,点击Configuration->Data Sources->Add data source,选择Prometheus,

如图:

在URL输入Prometheus服务地址,

如图:

增加一个仪表盘,点击Import,输入:https://grafana.com/dashboards/1860 ,点击load,

如图:

效果如下:

layicr 微信

微信

layicr 支付宝

支付宝