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实现多台服务器性能监控的主要内容,如果未能解决你的问题,请参考以下文章

istio+prometheus+grafana 流量监控

Prometheus / Grafana 反单调性

Prometheus+Grafana监控MySQL浅析

Prometheus + Grafana 部署说明之安装

监控利器Prometheus——Prometheus+Grafana监控SpringBoot项目业务指标监控

kubernetes 安装 Prometheus + Grafana