找回密码
 立即注册
搜索
查看: 1448|回复: 8

[软件] 生命在于折腾第四季,pve数据监控的搭建

[复制链接]
     
发表于 2025-3-9 00:26 | 显示全部楼层 |阅读模式
本帖最后由 高卢鸡 于 2025-3-11 22:58 编辑

回顾之前的折腾系列,已经发了五个帖子,从最初的家用硬件搭建下载机,使用esxi虚拟平台,到后来买idc垃圾,换成开源的proxmoxVE虚拟平台,虚拟机包括软路由、openmediavault,乃至用上了pve特色的lxc容器化技术,折腾的内容越来越多,对linux的了解也从退出vi都不会,到略微了解了一些常用的命令。
目前大奶已经是双系统,archlinux+windows10,除了工作需要用cad之外,基本都进入arch系统。
对于这个homelab的要求,也从单纯为了使用,逐渐转变为搭建了消息、监控等平台,可以对系统运行进行简单监测,掌握运行状态的程度。同时接入了homeassistant系统,与小米智能家居的设备一道,共同开始搭建智能化的家居生活,解决生活中诸如回家开灯,起夜上卫生间等需求。
第二季中贴出了设备的外观,第三季更新了网络拓扑图,本季懒得更新了,因为虚拟的系统有点多,就贴一张pve的管理界面吧。

里面lxc的数量已经超过必须的vm数量了。我一般使用alpine linux,这个发行版官网形容是3s:small、simple、secure,容器内不到8mb的系统,还有相当数量的软件包。
我这里aria2、syncthing、docker都是搭建在alpine linux里的,很方便。
——————————
扯了半天,该回到正题了。上面提到的alpine linux,使用比较简便,在这里就当个容器系统,所需的功能也不多,d老师甚至百度搜索都能找到方法,就不赘述了。
前段时间看b站,看到了通过pve+influxdb+grafana搭建数据监控,掌握pve的运行情况,比pve本身的管理界面更酷,更方便,所以本着折腾的原则,我又开始了浪费时间的活动。
首先介绍一下influxdb,一个使用十分广泛的开源时序数据库,grafana是一个可视化、查询、警报观测平台,我不是学计算机的,只是个外行, 就不班门弄斧的介绍了。说真的,数据库是啥,为啥用数据库,我还是前几天上b站看了东南大学老师的课才了解了一些,虽然原来也搭建nextcloud也用过mysql。
跑个题,推荐一下Proxmox Helper Scripts,github上的一个项目,很多工具的搭建可以一键解决,实现了即开即用,就不用我这样的折腾了。贴上地址:https://community-scripts.github.io/ProxmoxVE/
上面提到的p+i+g中,influxdb我使用脚本轻松的搭建完成了,选的是influxdb2。之后折腾之心闲不住了,grafana我自己手动搭建吧,然后就。所以本次最开始说一下alpine linux下安装grafana的坑吧。
alpine里有grafana的软件包,influxdb在3.17版本的alpine下有,更新版就只有py3-influxdb,还有一个aws版本。所以用脚本搭建influxdb我还是避免了大坑,脚本用的系统是debian。
安装好grafana之后,web界面无法打开,怪事,按照搜到的几个教程,都是装上就可以啊,grafana的官网安装方法也是直接安装就好了,不需要其他设置。
问了一下d老师,给出的解决方法包括
1.检查服务状态
  1. rc-service grafana status
复制代码

正常

2.检查监听端口和地址
  1. cat /etc/grafana/grafana.ini
复制代码
确保监听地址为0.0.0.0
文件路径不对,是/etc/grafana.ini,里面http_addr值没设定。

3.检查防火墙/网络规则(用iptables或ufw)
  1. iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
  2. service iptables save
复制代码
  1. ufw allow 3000/tcp
复制代码

我发现lxc里的alpine没装iptables和ufw。

4.验证端口是否监听
  1. netstat -tuln | grep 3000
复制代码

我这里查到监听的是127.0.0.1。

5.本地访问测试
  1. curl http://localhost:3000
复制代码

我这里没装curl,wget可以正确下载到html 。
后面文件权限、docker运行的特殊情况,其他计算机验证的解决方法就不贴了,与我的状况不一样,或者根本就是我的问题。

又换了几个问题,这个命令可以查看运行的程序。
  1. ps aux | grep grafana
复制代码

得到下面的输出
supervise-daemon grafana --start --respawn-delay 2 --respawn-max 5 --respawn-period 1800 --user grafana grafana /usr/bin/grafana -- server -config /etc/grafana.ini -homepath /usr/share/grafana cfg:paths.data=/var/lib/grafana/data cfg:paths.plugins=/var/lib/grafana/plugins cfg:paths.provisioning=/var/lib/grafana/provisioning cfg:server.http_addr=127.0.0.1 cfg:log.mode=syslog

发现运行的grafana被设置了监听的地址为127.0.0.1,但是我在grafana.ini里设置了http_addr为0.0.0.0,启动程序参数也有grafana.ini,可见是传递新的参数cfg:server.http_addr=127.0.0.1造成的。

查看/etc/init.d/grafana,里面有一个命令是
command_args="server $GRAFANA_OPTS"

传递参数"$GRAFANA_OPTS",我注释了这一行,然后重启服务,可以正常访问了。看来是这个参数的问题了。
通过搜索找到了红迪上的一个问题Grafana on Alpine Linux not loading on a remote machine.
发现了/etc/conf,d/grafana这个文件里就是$GRAFANA_OPTS参数
GRAFANA_HOME=/var/lib/grafana
GRAFANA_OPTS="-config /etc/grafana.ini -homepath /usr/share/grafana
cfg:paths.data=$GRAFANA_HOME/data
cfg:paths.plugins=$GRAFANA_HOME/plugins
cfg:paths.provisioning=$GRAFANA_HOME/provisioning
cfg:server.http_addr=127.0.0.1
cfg:log.mode=syslog"
rc_need=logger

赶紧改掉,重启服务,可以正常访问了。第一步搭建系统搞定了。
————————————————————————————
开始第二步打通数据。
中文的教程找了好几个,大多是pve新建虚拟机安装influxdb1.8+grafana,通过cli配置influxdb,我装的2.0,cli操作不太一样,没搞懂。
https://www.cnblogs.com/lynetwork/articles/17575864.html
https://blog.51cto.com/sery/3434056
https://blog.csdn.net/caiyqn/article/details/106380171
找了一下外文的,找到两个通过web页面操作的
https://tcude.net/monitoring-proxmox-with-influxdb-and-grafana/
https://www.thomas-krenn.com/en/wiki/InfluxDB2_%2B_Grafana_Configuration_of_a_metric_server_for_Proxmox_VE
pve官方wiki也有链接influxdb的介绍
https://pve.proxmox.com/wiki/External_Metric_Server
首先influxdb2已经不支持upd信息传输了,修改配置文件开启udp已经不需要了。
进入influxdb页面,新建用户,填写organizations,务必复制出现的token,influxdb好像可以查到,但是2里是不会在出现的(教程里这样写),我在页面里没查到怎么再次显示token。
新建buckets,名字proxmox。

API TOKENS里可以看到一个以用户名命名的Tokens,这里无法复制token。

然后进入proxmoxVE的指标服务器,添加influxdb,服务器填写ip地址或dns解析地址(如果设定了),端口8086,协议http or https(influxdb2不支持udp了),组织就是刚才填写的organization,插槽是buckets。我的例子里分别是homelab和proxmox。令牌是刚才务必复制的token。

之后回到influxdb,在Data Explorer里查看可否找到数据,如下图,表示成功将pve的数据导入到influxdb2里了。


最后进入grafana,借用几张图



第三张图中,3是influxdb的地址,4里关闭basic auth,打开skip tls verify。
5、6、7就是刚才在influxdb里记住,填写到proxmox里的内容,我的是homelab、prxmox,以及务必记住的token。
保存之后,如果成功就可以看到如下图


之后就是在grafana的官网https://grafana.com/grafana/dashboards/?pg=get&plcmt=selfmanaged-box1-cta2找自己喜欢的监控界面



最后监控界面惊艳登场

感谢上面帖子作者的供图,有些我就直接拿了。



评分

参与人数 3战斗力 +5 收起 理由
entstehung + 2 好评加鹅
Betalo + 1 好评加鹅
拥挤的屋顶 + 2 好评加鹅

查看全部评分

回复

使用道具 举报

发表于 2025-3-9 16:07 来自手机 | 显示全部楼层
有趣。回去弄一个。不过我grafana直接上docker了,压根没感觉到啥坑。

—— 来自 realme RMX3888, Android 15, 鹅球 v3.4.98
回复

使用道具 举报

发表于 2025-3-9 17:10 来自手机 | 显示全部楼层
我的all in boom折腾了一圈之后,换成了飞牛os,用了小半个月感觉还挺省心的至于稳定性的话还有待观察

—— 来自 Sony XQ-EC72, Android 15, 鹅球 v3.4.98
回复

使用道具 举报

     
发表于 2025-3-9 19:47 来自手机 | 显示全部楼层
用容器部署一下zabbix+grafana,写在一个docker compose里面,一键拉起来,pve主机+所有vm都可以监控到
回复

使用道具 举报

     
发表于 2025-3-9 20:55 | 显示全部楼层
数据是influxdb采集的?还是pve推送的?
如果要监控到pve下各vm的数据的话 这套模式能走通吗
回复

使用道具 举报

     
 楼主| 发表于 2025-3-9 22:20 | 显示全部楼层
紧那罗 发表于 2025-3-9 20:55
数据是influxdb采集的?还是pve推送的?
如果要监控到pve下各vm的数据的话 这套模式能走通吗 ...

pve支持influxdb2,直接推送的,如果不支持推送,2带了telegraf,可以采集多种系统的数据。
回到你的问题,vm的数据是指vm内系统的数据,还是vm在pve下的资源占用,例如cpu、内存、io等?
如果是vm内的数据,需要看系统,选择telegraf的对应plugin,或者手动python写一个接口对接telegrfa。我在咨询d老师时,老师回答过pve不支持influxdb2,手写一个python。
回复

使用道具 举报

     
 楼主| 发表于 2025-3-9 22:22 | 显示全部楼层
sonic3908 发表于 2025-3-9 19:47
用容器部署一下zabbix+grafana,写在一个docker compose里面,一键拉起来,pve主机+所有vm都可以监控到 ...

你这个想法好,我当初是想把ha的数据也导入influxdb,所以就单独起了一个lxc跑
回复

使用道具 举报

发表于 2025-3-10 18:42 来自手机 | 显示全部楼层
你给的那个图的dashboard,不支持influxdb 2的数据

—— 来自 realme RMX3888, Android 15, 鹅球 v3.4.98
回复

使用道具 举报

     
 楼主| 发表于 2025-3-10 19:06 来自手机 | 显示全部楼层
lhw369 发表于 2025-3-10 18:42
你给的那个图的dashboard,不支持influxdb 2的数据

—— 来自 realme RMX3888, Android 15, 鹅球 v3.4.98 ...

借用的图,我没截图,抽空改一下

—— 来自 Xiaomi 2206123SC, Android 15, 鹅球 v3.4.98
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-3-12 19:03 , Processed in 0.060755 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表