在IPFS应用开发、调试、测试、发布、运行、运维过程中,发现了一个问题——对ipfs节点的数据监控很重要。这些数据可以很直观的判断出是否要扩容,硬件瓶颈在哪,需要如何增加资源。
目标:在上传一些文件是可以体现出来流入流量突发、数据盘空闲空间减少、ipfs节点储存数据增加。
在ipfs webui项目里已经有了一个简单的监控
但是我要的信息还是太少,没有CPU、内存、机器磁盘方面的监控,仅仅只有实时流入流出的数据,并且没有做持久化储存,关闭网页后无法再看到,我还有多个节点,无法一次查看所有节点的信息情况。
在这里我使用zabbix作为监控平台,它不仅仅可以监控CPU、内存、机器磁盘,还可以配置自定义项目去监控ipfs节点的信息。
在本文操作之前已经存如下配置:
1 Zabbix服务器
2 IPFS linux节点(Ubuntu18)
我使用树莓派作为Zabbix
a. 安装 数据库
wget https://repo.zabbix.com/zabbix/4.4/raspbian/pool/main/z/zabbix-release/zabbix-release_4.4-1+buster_all.deb dpkg -i zabbix-release_4.4-1+buster_all.deb apt update
b. 安装Zabbix server,Web前端,agent
apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
c. 创建初始数据库
mysql -uroot -p password mysql> create database zabbix character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; mysql> quit;
导入初始架构和数据,系统将提示您输入新创建的密码。
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
d. 为Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.confDBPassword=password
e. 为Zabbix前端配置PHP
编辑配置文件 /etc/zabbix/apache.conf, uncomment and set the right timezone for you.php_value date.timezone Europe/Riga
f. 启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:systemctl restart zabbix-server zabbix-agent apache2 systemctl enable zabbix-server zabbix-agent apache2
g. 配置Zabbix前端
连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix
根据Zabbix文件里步骤操作: Installing frontend
https://www.zabbix.com/cn/download?zabbix=4.4&os_distribution=raspbian&os_version=10_buster&db=mysql&ws=apache
使用x86的虚拟机作为IPFS节点
节点配置为 2核心,4G内存,16G系统盘,1T数据盘(sdb)# 格式化并挂载磁盘 pvcreate /dev/sdb vgcreate store /dev/sdb lvcreate -l +100%free -n ipfs store mkfs.ext4 /dev/store/ipfs mkdir /root/.ipfs/ mount -t ext4 /dev/store/ipfs /root/.ipfs/ echo "/dev/store/ipfs /root/.ipfs/ ext4 defaults 0 2">> /etc/fstab
#从我内网地址,以服务的形式安装ipfs节点. script_path=http://172.16.0.5/cdn/script/ipfs ver=v0.4.22 wget ${script_path}/go-ipfs_${ver}_linux-amd64.tar.gz -O go-ipfs_${ver}_linux-amd64.tar.gz tar -zxvf go-ipfs_${ver}_linux-amd64.tar.gz cp go-ipfs/ipfs /usr/local/bin/ipfs chmod +x /usr/local/bin/ipfs wget ${script_path}/ipfs.service -O /lib/systemd/system/ipfs.service ipfs init ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]" ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "[\"true\"]" ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "[\"PUT\", \"POST\", \"GET\"]" #ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080 #ipfs config Addresses.API /ip4/172.16.0.65/tcp/5001 systemctl enable ipfs.service systemctl start ipfs.service
安装
wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
dpkg -i zabbix-release_4.4-1+bionic_all.deb
apt update
apt -y install zabbix-agent
修改配置文件vim /etc/zabbix/zabbix_agentd.conf
将Server(zabbix服务器地址)、ServerActive(主动推送数据的zabbix服务器地址),改成zabbix服务器地址。将Hostname 配置成自己喜欢的名字。
登录zabbix服务器添加linux主机。配置——主机——创建主机。
填写主机名称为自己喜欢的名字。agent代理程序的接口 填写IPFS节点的地址。在模板选项卡中添加Template OS Linux基础模板即可。
在zabbix主机列表中看到IPFS节点上线并在可用性中亮起ZBX,在自动发现里检查一下自动发现规则就完成了IPFS节点的添加。
此时可以看到作为Linux的基础数据。CPU、内存、磁盘、网口。
在节点上运行命令ipfs stats repo
通过http api 获取数据。
获取失败,原来我将端口绑定到了IP地址上了。
通过http api 获取数据。curl -s http://172.16.0.65:5001/api/v0/stats/repo | jq .RepoSize
修改vim /etc/zabbix/zabbix_agentd.conf
添加
UnsafeUserParameters=0
UserParameter=IPFS_repo,curl -s http://172.16.0.65:5001/api/v0/stats/repo | jq .RepoSize
这样就得到了一个键值对,键名为IPFS_repo,以为我这里只关心2个参数repo大小,和peers连接数量,所以我只添加了2个。
UnsafeUserParameters=0
UserParameter=IPFS_peers,curl -s http://172.16.0.65:5001/api/v0/swarm/peers | jq '.Peers|length'
UserParameter=IPFS_repo,curl -s http://172.16.0.65:5001/api/v0/stats/repo | jq .RepoSize
此时在zabbix服务器上执行zabbix_get -s 172.16.0.65 -p 10050 -k IPFS_repo
命令,可以获取到实时数据。
在zabbix上创建属于IPFS节点的模板。配置——模板——创建模板——填写名字——添加即可。
打开新创建的IPFS模板创建监控项。监控项——创建监控项——填写名字——填写键值IPFS_repo——单位B——添加
为主机添加IPFS模板,等待一会,可以在主机的最新信息中查看到监控到的数据值,因为没有选应用集,没有分类,在other一栏中。
点开图形可以看到简易图表。
仪表盘——添加仪表盘——创建仪表盘。
添加构建——类型图形——选择对应的数据。
效果图
我还有多个节点,并且我只关心网卡流入、流出、数据盘空闲大小、ipfs连接节点、ipfs储存大小,可以在一个大屏展示图中显示。
当我添加一些数据时监控反应出来的情况如下: