【服务器监控】grafana+Prometheus+node exporter详细部署文档

我们在进行测试时,不可能一直手动看着服务器的性能消耗,这时候就需要有个工具替我们监控服务器的性能消耗。这里记录下grafana+Prometheus+nodeExporter的组合用于监控服务器。

简单介绍:

grafana:看板工具,所有采集的性能数据都会展示在这个看板上,官网: link

Prometheus: 监控系统,数据的采集、存储、查询等主要功能都是在它这里,参考文档: link

node_exporter:其是Prometheus的一个采集组件,可以用来采集机器上的数据,并暴露接口给Prometheus,以此将数据传过去。

这是prometheus官网的架构图,可以参考这个看一下

我这里简单概述一下我们使用到的功能,即node_exporter采集机器节点上的性能数据,并将数据传给Prometheus处理,grafana再从Prometheus那里获取数据展示在看板上。(exporter有多种类型,比如采集容器的,mysql的,这里node_exporter直接是采集整个机器的)

本文grafana和Prometheus是使用docker安装部署的,如果机器上未装docker,可参考链接: link

本文为最新的安装流程,可直接按照该流程安装部署。

1.安装grafana

命令为:

复制代码
docker run -d -p 3000:3000 --name=grafana grafana/grafana-oss

2.安装Prometheus

1.配置Prometheus的配置文件

复制代码
mkdir -p /opt/monitor/prometheus
tee /opt/monitor/prometheus/prometheus.yml <<- 'EOF'
global:
  # 拉取规则
  scrape_interval: 10s
  # 执行规则频率
  evaluation_interval: 10s
  
scrape_configs:
  - job_name: prometheus  # 任务名
    static_configs:
      - targets: ['localhost:9100']  # 地址和端口,注意如果是docker安装的话,这个loalhost要替换成ip地址
EOF

这里的地址如果是采集本机的,写localhost即可,要是采集其它机器的,可以填对应的ip(这里的端口不是9090,而是9100,与下面的node_exporter对应的;而且如果是docker安装的话,这个loalhost要替换成机器的ip地址,不然容器内部根据localhost可识别不了机器实际的ip)

2.用配置文件部署启动Prometheus

复制代码
docker run -d -p 9090:9090 -v /opt/monitor/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name=prometheus prom/prometheus

3.安装node_exporter

这里安装node_exporter是手动安装的,为什么不用docker直接安装呢,这是因为docker安装的exporter是在容器里面的,从容器里采集机器本机的数据的时候并不完全,有时会导致和实际数据相差较大(本人已踩过坑),这里建议手动安装到机器上。

下载地址: link

直接下载下来传到机器上并解压

然后我们配置服务启动项

复制代码
tee /etc/systemd/system/node_exporter.service <<- 'EOF'
[Unit]
Description=node_exporter
After=network.target

[Service]
ExecStart=/opt/monitor/node_exporter/node_exporter --web.listen-address=:9100

[Install]
WantedBy=multi-user.target
EOF

配置完成后,我们启动服务

复制代码
systemctl enable node_exporter  # 不是root用户前面都加一下sudo
systemctl start node_exporter
systemctl status node_exporter

4.监控服务串联

至此,我们各个模块都是各自安装完了,接下来我们把它们连成一个整体,首先看下node_exporter和Prometheus能否正常访问。

node exporter和Prometheus

查看node_exporter:可以浏览器直接访问http://192.168.238.128:9100/,这里192.168.238.128就是我linux机器的地址

显示无法访问。。。排查了一下,防火墙忘记关了。自己内网用的机器平时可以把防火墙关了(docker安装的服务端口未被防火墙限制,手动安装的服务端口会被限制)

这时再重新访问下

这里就是其采集的信息,可以看出采集服务已正常可用了。

然后我们看下Prometheus,浏览器直接访问http://192.168.238.128:9090/

也没问题,我们在上面输入框输点东西试一下数据能不能传上来

复制代码
100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))

可以看出数据已经传上来了,这里时间不太对,应该是时区的问题吗,暂时不用管。至此,node exporter和Prometheus的对接正常了。

grafana配置

然后我们登录grafana:http://192.168.238.128:3000/

这里初始用户名密码是admin/admin,登录后可以修改下密码,grafana这里我们主要是配置下数据源以及展示模版,因为Prometheus那里的数据还没有和grafana对接,而且展示的数据也未经进一步处理,展示效果一般。

配置数据源:

进去找一下data sources,几个版本的grafana位置是不一样的,这个自己找一下即可

这里选择Prometheus

配置页面配置下名称(可使用默认的),以及连接的url,这个就是Prometheus的地址和端口,即我们上面访问的http://192.168.238.128:9090/

其他的默认即可,最后点击这个save&test,连接正常会弹出绿色的提示

到这里数据源就配置完成了。

导入监控模版:

这时候的数据都是Prometheus处理过的,虽然也有图表,但是比较简单,我们可以导入一个看板的模版,使其展示更加丰富,更加友好。(也可以自己写新的)

我们访问https://grafana.com/grafana/dashboards/这个网址,上面有已有的模版,可以查看下哪个适合我们

在这边搜索node exporter可以搜索出所有node exporter的模版

这里我们就选用第一个,点击进去

这里有两个选项,一个是复制id,一个是下载json,这里我们直接复制id好了。这个json其实就是模版文件了,但是我们也可以用id来自动导入。

然后我们进入自己搭建的grafana页面,点击这个import(各个版本的UI略有不同,按键位置可能也不同)

这里输入刚刚复制的id,然后点击load

加载完成后进入这个页面

这里选我们刚刚配好的数据源

然后点击import,就跳转到看板页面了,如果页面没有数据,可查看左上角这几个选项是不是正确;或者可以等一会,也有可能数据还没有上传上来。

至此,监控服务就部署好了,无论是做性能还是可靠性,我们可以对服务器进行长时间监测了。

问题记录:

实际部署时,也遇到了一些其他问题,这里记录下:

1.导入Node Exporter Full监控模版(id为1860)时,grafana一直报找不到方法,这个主要是1860这个模板和grafana当前版本不兼容,更新grafana即可。

2.监控数据不准确的问题,这个上面已经提到,解决办法是node_exporter手动直接安装在服务器上。

3.Prometheus可添加多个监控节点,网络能正常连通即可,修改Prometheus配置文件后需重启下服务。

相关推荐
茉莉玫瑰花茶7 小时前
工作流的常见模式 [ 1 ]
java·服务器·前端
南京码讯光电技术有限公司10 小时前
工业无线AP选型指南:从WiFi 5到WiFi 6+5G CPE,如何构建全覆盖、零漫游、高可靠的智能工厂网络?
服务器·网络·5g
二宝哥10 小时前
Linux虚拟机网络配置
linux·运维·服务器
陳103011 小时前
Linux:进程间通信 和 简单进程池
linux·运维·服务器
jimy111 小时前
改.bashrc,直观地判断本地repo是否有改动
linux·服务器
zt1985q11 小时前
本地部署网页监控工具 Webmonitor 并实现外部访问
运维·服务器·网络·网络协议
匆匆那年96712 小时前
远程 Linux 校园网认证操作手册(本地浏览器法)
linux·运维·服务器
dog25012 小时前
为何新增网络路径反而引入额外时延
服务器·网络·php
newnazi13 小时前
RedHat10 安装MS SQL Server2025
linux·服务器·数据库
QuestLab13 小时前
③-进阶篇:vLLM实战——多卡部署、压测与排障
linux·服务器·网络