Prometheus + Grafana + node_exporter实现多台服务器性能监控
Posted Mr.zhou_Zxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus + Grafana + node_exporter实现多台服务器性能监控相关的知识,希望对你有一定的参考价值。
Prometheus + Grafana + node_exporter实现多台服务器监控
1 Prometheus安装
##1. 安装
[root@zxy_master software]# tar -zxvf prometheus-2.17.1.linux-amd64.tar.gz -C /opt/apps/
[root@zxy_master apps]# mv prometheus-2.17.1.linux-amd64/ prometheus-2.17.1
## 环境变量
[root@zxy_master prometheus-2.17.1]# vim /etc/profile
export FLINK_HOME=/zxy/apps/flink-1.13.0
export PROMETHEUS_HOME=/zxy/apps/prometheus-2.17.1
export PATH=$PATH:$FLINK_HOME/bin:$PROMETHEUS_HOME
[root@zxy_master prometheus-2.17.1]# source /etc/profile
[root@zxy_master prometheus-2.17.1]# mkdir data
##2. 启动
[root@zxy_master prometheus-2.17.1]# ./prometheus --storage.tsdb.path="/zxy/apps/prometheus-2.17.1/data/" --log.level=debug --web.enable-lifecycle --web.enable-admin-api --config.file="/zxy/apps/prometheus-2.17.1/prometheus.yml"
[root@zxy_master prometheus-2.17.1]# nohup ./prometheus --storage.tsdb.path="/zxy/apps/prometheus-2.17.1/data/" --log.level=debug --web.enable-lifecycle --web.enable-admin-api --config.file="/zxy/apps/prometheus-2.17.1/prometheus.yml" > out.log 2>&1 &
storage.tsdb.path:指标存储的基本路径
log.level:[info,debug,warn,error]
web.enable-lifecycle: 可以通过http请求来开启/关闭/重启Prometheus的服务
web.enable-admin-api: 管理元的API操作
config.file:指定prometheus配置文件路径
## 云服务器开启端口9090,虚拟机关闭防火墙
##3. 查看web ui
http://master.spunsugar.top:9090
2 Grafana安装
配置Prometheus使用,给使用者更直观的可视化展示
## 1.安装
[root@zxy_master software]# tar -zxvf grafana-6.7.3.linux-amd64.tar.gz -C /zxy/apps/
[root@zxy_master bin]# pwd
/zxy/apps/grafana-6.7.3/bin
## 配置环境变量
[root@zxy_master bin]# vim /etc/profile
export FLINK_HOME=/zxy/apps/flink-1.13.0
export PROMETHEUS_HOME=/zxy/apps/prometheus-2.17.1
export GRAFANA_HOME=/zxy/apps/grafana-6.7.3/bin
export PATH=$PATH:$FLINK_HOME/bin:$PROMETHEUS_HOME:$GRAFANA_HOME/bin
[root@zxy_master bin]# source /etc/profile
## 2.启动
[root@zxy_master grafana-6.7.3]# bin/grafana-server -config conf/sample.ini
## 后台启动
[root@zxy_master grafana-6.7.3]# nohup bin/grafana-server -config conf/sample.ini > out.log 2>&1 &
## 指定配置文件启动:sample.ini
## 云服务器开启端口3000,虚拟机关闭防火墙
## 3.查看webui
http://master.spunsugar.top:3000
初始账号:admin
初始密码:admin
重设密码
主要页面
3 node_exporter收集器
在Prometheus架构中,exporter是负责收集数据并将信息汇报给Prometheus Server的组件。官方提供了node_exporter内置了对主机系统的基础监控
## 可直接下载安装
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
## 1.离线安装
[root@zxy_master software]# tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /zxy/apps/
[root@zxy_master apps]# mv node_exporter-0.18.1.linux-amd64/ node_exporter-0.18.1
## 环境变量
[root@zxy_master node_exporter-0.18.1]# pwd
/zxy/apps/node_exporter-0.18.1
[root@zxy_master node_exporter-0.18.1]# vim /etc/profile
export FLINK_HOME=/zxy/apps/flink-1.13.0
export PROMETHEUS_HOME=/zxy/apps/prometheus-2.17.1
export GRAFANA_HOME=/zxy/apps/grafana-6.7.3/bin
export NODE_HOME=/zxy/apps/node_exporter-0.18.1
export PATH=$PATH:$FLINK_HOME/bin:$PROMETHEUS_HOME:$GRAFANA_HOME/bin:$NODE_HOME
[root@zxy_master node_exporter-0.18.1]# source /etc/profile
## 2.启动
[root@zxy_master node_exporter-0.18.1]# node_exporter &
## 后台启动
[root@zxy_master node_exporter-0.18.1]# nohup ./node_exporter > out.log 2>&1 &
##云服务器开启端口9100,虚拟机关闭防火墙
## 3.查看Web-ui
http://master.spunsugar.top:9100
Node Exporter页面
Metrics
4 Prometheus配置监控node_exporter所在主机
配置服务发现功能
[root@zxy_master prometheus-2.17.1]# mkdir sd_config
[root@zxy_master prometheus-2.17.1]# vim prometheus.yml
[root@zxy_master prometheus-2.17.1]#
## 添加job_name = 'node'
- job_name: 'node'
file_sd_configs:
- files: [/zxy/apps/prometheus-2.17.1/sd_config/node.yml]
refresh_interval: 5s
检查配置文件是否配置正确
[root@zxy_master prometheus-2.17.1]# ./promtool check config prometheus.yml
Checking prometheus.yml
WARNING: file "/zxy/apps/prometheus-2.17.1/sd_config/node.yml" for file_sd in scrape job "node" does not exist
SUCCESS: 0 rule files found
[root@zxy_master prometheus-2.17.1]#
配置服务发现文件
[root@zxy_master prometheus-2.17.1]# cd sd_config/
[root@zxy_master sd_config]# ls
[root@zxy_master sd_config]# vim node.yml
[root@zxy_master sd_config]# cat node.yml
## ****.***.**.**需要替换为IP,安全起见,这里使用*代替
- targets:
- ***.***.**.**:9100
[root@zxy_master sd_config]#
重启Prometheus
[root@zxy_master sd_config]# ps -ef | grep prometheus
root 16393 29315 0 16:39 pts/0 00:00:03 ./prometheus --storage.tsdb.path=/zxy/apps/prometheus-2.17.1/data/ --log.level=debug --web.enable-lifecycle --web.enable-admin-api --config.file=/zxy/apps/prometheus-2.17.1/prometheus.yml
root 24572 29315 0 17:53 pts/0 00:00:00 grep --color=auto prometheus
[root@zxy_master sd_config]# kill -9 16393
[root@zxy_master prometheus-2.17.1]# nohup ./prometheus --storage.tsdb.path="/zxy/apps/prometheus-2.17.1/data/" --log.level=debug --web.enable-lifecycle --web.enable-admin-api --config.file="/zxy/apps/prometheus-2.17.1/prometheus.yml" > out.log 2>&1 &
5 Prometheus实现监控Linux
内存使用率
## 查看内存
[root@zxy_master /]# free
total used free shared buff/cache available
Mem: 8008636 505636 135668 46932 7367332 7141432
Swap: 0
## Prometheus查看内存使用率
100-(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes)/node_memory_MemTotal_bytes*100
磁盘使用率
## 查看磁盘
[root@zxy_master /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 24K 3.9G 1% /dev/shm
tmpfs 3.9G 880K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 99G 13G 82G 14% /
tmpfs 783M 0 783M 0% /run/user/0
overlay 99G 13G 82G 14% /var/lib/docker/overlay2/38d43acc23be98028fe11489bac6f72193b61bf4280325eb2129f8a869f799db/merged
## Prometheus查看磁盘使用率
100 -node_filesystem_free_bytesmountpoint="/",fstype=~"xfs|ext4" /node_filesystem_size_bytesmountpoint="/",fstype=~"xfs|ext4" *100
CPU使用率
## 查看CPU
[root@zxy_master /]# top
top - 20:04:34 up 23 days, 22:41, 4 users, load average: 0.00, 0.02, 0.05
Tasks: 131 total, 1 running, 130 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8008636 total, 155752 free, 510188 used, 7342696 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 7136884 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1758 root 20 0 1078220 123824 18628 S 1.0 1.5 405:07.77 YDService
1 root 20 0 51916 4200 2632 S 0.0 0.1 6:26.97 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:01.06 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:10.85 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:09.41 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
## Prometheus查看CPU使用率
100 - avg(irate(node_cpu_seconds_totalmode="idle"[5m])) by(instance)*100
6 Grafana图形化监控Linux
6.1数据源配置
添加数据源1
添加数据源2
配置数据源
数据源配置成功
6.2 自定义表盘
回到Home页面,点击New dashboard
添加查询项
添加查询条件
修改监控图标名称title
保存仪表盘
命名仪表盘
6.3 Master主机监控面板-内存监控
6.3 Mater主机监控面板-CPU监控和磁盘监控
若是还需要监控其他内容,只需要添加pannel即可
添加磁盘监控
磁盘监控添加成功
按照如上方法添加CPU仪表盘
6.4 设置时间查看范围
7 在线仪表盘模板
7.1 Import dashboard
7.2 Grafana查找相关模板
7.2.1 官网
7.2.2 搜索相关模板
7.2.3查看相关模板,获取模板dashboard id
7.3 通过dashboard id使用模板
7.4 设置name以及Prometheus,然后Import
7.5 模板使用成功
7.6 根据以上方式,尝试更新模板
dashboard id : 7276
可以在prometheus中添加新的服务器分组
通过选择分组名称,实现监控多台服务器
8.Prometheus + Grafana + node_exporter实现多台服务器监控
8.1 说明
1.在以上的操作中,Prometheus、Grafana、node_exporter都部署在我的master主机上
目前能通过配置监控master主机的性能
2.我想要通过Prometheus、Grafana、node_exporter同时监控多台服务器性能
3.计划:1.在我的slave主机上安装node_exporter并启动
4.计划:2.修改master主机上prometheus的相关配置,参考章节4 Prometheus配置监控node_exporter所在主机
8.2 slave主机部署node_exporter
## 解压
[root@zxy_slave1 software]# tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz -C /zxy/apps/
[root@zxy_slave1 apps]# mv node_exporter-0.18.1.linux-amd64/ node_exporter-0.18.1
## 配置环境变量
[root@zxy_slave1 node_exporter-0.18.1]# pwd
/zxy/apps/node_exporter-0.18.1
[root@zxy_slave1 node_exporter-0.18.1]# vim /etc/profile
export NODE_HOME=/zxy/apps/node_exporter-0.18.1
export PATH=$PATH:$NODE_HOME
[root@zxy_slave1 node_exporter-0.18.1]# source /etc/profile
## 后台启动
[root@zxy_slave1 node_exporter-0.18.1]# nohup ./node_exporter > out.log 2>&1 &
## 云服务器开启端口9100,虚拟机关闭防火墙
## 查看Web-ui
http://slave.spunsugar.top:9100/
8.3 修改master主机Prometheus配置
[root@zxy_master prometheus-2.17.1]# ls
console_libraries consoles data LICENSE NOTICE out.log prometheus prometheus.yml promtool sd_config start.sh tsdb
[root@zxy_master prometheus-2.17.1]# vim prometheus.yml
## 为便于区分,将刚刚配置的node任务名称改为master,同时将sd_config目录下的node.yml也改为master.yml
## 新增slave1任务
- job_name: 'master'
file_sd_configs:
- files: [/zxy/apps/prometheus-2.17.1/sd_config/master.yml]
refresh_interval: 5s
- job_name: 'slave1'
file_sd_configs:
- files: [/zxy/apps/prometheus-2.17.1/sd_config/slave1.yml]
refresh_interval: 5s
8.4 检查prometheus配置是否成功
[root@zxy_master prometheus-2.17.1]# ./promtool check config prometheus.yml
Checking prometheus.yml
WARNING: file "/zxy/apps/prometheus-2.17.1/sd_config/master.yml" for file_sd in scrape job "master" does not exist
WARNING: file "/zxy/apps/prometheus-2.17.1/sd_config/slave1.yml" for file_sd in scrape job "slave1" does not exist
SUCCESS: 0 rule files found
[root@zxy_master prometheus-2.17.1]#
8.5 修改node.yml,添加slave1.yml
## 进入配置目录
[root@zxy_master prometheus-2.17.1]# cd sd_config/
## 查看到目前是node.yml
[root@zxy_master sd_config]# ls
node.yml
## 按照我的计划,未便于区分,将node任务改为master,将node.yml改为master.yml
[root@zxy_master sd_config]# mv node.yml master.yml
[root@zxy_master sd_config]# ls
master.yml
## cat查看配置内容
[root@zxy_master sd_config]# cat master.yml
## ****.***.**.**需要替换为IP,安全起见,这里使用*代替
- targets:
- ***.***.**.**:9100
## 添加slave1.yml
[root@zxy_master sd_config]# vim slave1.yml
## 添加如下两行
## ****.***.**.**需要替换为IP,安全起见,这里使用*代替
- targets:
- ***.***.**.**:9100
[root@zxy_master sd_config]# cat slave1.yml
## ****.***.**.**需要替换为IP,安全起见,这里使用*代替
- targets:
- ***.***.**.**:9100
[root@zxy_master sd_config]#
8.6 重启Prometheus
## 使用ps命令查看Prometheus进程
[root@zxy_master prometheus-2.17.1]# ps -ef |grep prometheus
root 638 1699 0 00:06 pts/1 00:00:00 grep --color=auto prometheus
root 24822 1 0 Apr13 ? 00:00:26 ./prometheus --storage.tsdb.path=/zxy/apps/prometheus-2.17.1/data/ --log.level=debug --web.enable-lifecycle --web.enable-admin-api --config.file=/zxy/apps/prometheus-2.17.1/prometheus.yml
## 强制杀死Prometheus进程
[root@zxy_master prometheus-2.17.1]# kill -9 24822
## 自定义脚本后台启动Prometheus
[root@zxy_master prometheus-2.17.1]# sh start.sh
## 再次使用ps查看进程,确保启动成功
[root@zxy_master prometheus-2.17.1]# ps -ef |grep prometheus
root 999 1 4 00:07 pts/1 00:00:00 ./prometheus --storage.tsdb.path=/zxy/apps/prometheus-2.17.1/data/ --log.level=debug --web.enable-lifecycle --web.enable-admin-api --config.file=/zxy/apps/prometheus-2.17.1/prometheus.yml
root 1102 1699 0 00:07 pts/1 00:00:00 grep --color=auto prometheus
[root@zxy_master prometheus-2.17.1]#
-
start.sh
nohup ./prometheus --storage.tsdb.path="/zxy/apps/prometheus-2.17.1/data/" --log.level=debug --web.enable-lifecycle --web.enable-admin-api --config.file="/zxy/apps/prometheus-2.17.1/prometheus.yml" > out.log 2>&1 &
8.6 查看Prometheus的Web-ui查看配置情况
http://master.spunsugar.top:9090
master主机和slave1主机配置成功
8.7 Grafana 查看配置效果
http://master.spunsugar.top:3000
8.7.1 Master主机
8.7.2 Slave1主机
9.Prometheus + Grafana + node_exporter效果图
10 Prometheus、Grafana、node_exporter安装包
以上是关于Prometheus + Grafana + node_exporter实现多台服务器性能监控的主要内容,如果未能解决你的问题,请参考以下文章