基本概念
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
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:
在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:
输入用户名和密码:admin和admin,
如图:
配置数据源,将Grafana和Prometheus关联起来,点击Configuration->Data Sources->Add data source,选择Prometheus,
如图:
在URL输入Prometheus服务地址,
如图:
增加一个仪表盘,点击Import,输入:https://grafana.com/dashboards/1860 ,点击load,
如图:
效果如下: