天天看点

【IPFS应用开发】--zabbix监控接口配置

在IPFS应用开发、调试、测试、发布、运行、运维过程中,发现了一个问题——对ipfs节点的数据监控很重要。这些数据可以很直观的判断出是否要扩容,硬件瓶颈在哪,需要如何增加资源。

【IPFS应用开发】--zabbix监控接口配置

    • 监控数据的持久化储存
    • 准备工作
    • IPFS节点安装zabbix-agent
    • 配置IPFS内容
    • 添加仪表盘,完成大屏显示

监控数据的持久化储存

目标:在上传一些文件是可以体现出来流入流量突发、数据盘空闲空间减少、ipfs节点储存数据增加。

【IPFS应用开发】--zabbix监控接口配置

在ipfs webui项目里已经有了一个简单的监控

【IPFS应用开发】--zabbix监控接口配置

但是我要的信息还是太少,没有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 [email protected] 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.conf

DBPassword=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
           

IPFS节点安装zabbix-agent

安装

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、内存、磁盘、网口。

CPU监控

【IPFS应用开发】--zabbix监控接口配置
【IPFS应用开发】--zabbix监控接口配置

内存监控

【IPFS应用开发】--zabbix监控接口配置

系统盘监控

【IPFS应用开发】--zabbix监控接口配置

数据盘监控

【IPFS应用开发】--zabbix监控接口配置

网卡带宽监控

【IPFS应用开发】--zabbix监控接口配置

配置IPFS内容

在节点上运行命令

ipfs stats repo

【IPFS应用开发】--zabbix监控接口配置

通过http api 获取数据。

【IPFS应用开发】--zabbix监控接口配置

获取失败,原来我将端口绑定到了IP地址上了。

【IPFS应用开发】--zabbix监控接口配置

通过http api 获取数据。

curl -s http://172.16.0.65:5001/api/v0/stats/repo | jq .RepoSize

【IPFS应用开发】--zabbix监控接口配置

修改

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

命令,可以获取到实时数据。

【IPFS应用开发】--zabbix监控接口配置

在zabbix上创建属于IPFS节点的模板。配置——模板——创建模板——填写名字——添加即可。

打开新创建的IPFS模板创建监控项。监控项——创建监控项——填写名字——填写键值IPFS_repo——单位B——添加

【IPFS应用开发】--zabbix监控接口配置

为主机添加IPFS模板,等待一会,可以在主机的最新信息中查看到监控到的数据值,因为没有选应用集,没有分类,在other一栏中。

【IPFS应用开发】--zabbix监控接口配置

点开图形可以看到简易图表。

【IPFS应用开发】--zabbix监控接口配置

添加仪表盘,完成大屏显示

仪表盘——添加仪表盘——创建仪表盘。

添加构建——类型图形——选择对应的数据。

【IPFS应用开发】--zabbix监控接口配置
【IPFS应用开发】--zabbix监控接口配置

效果图

【IPFS应用开发】--zabbix监控接口配置

我还有多个节点,并且我只关心网卡流入、流出、数据盘空闲大小、ipfs连接节点、ipfs储存大小,可以在一个大屏展示图中显示。

【IPFS应用开发】--zabbix监控接口配置

当我添加一些数据时监控反应出来的情况如下:

【IPFS应用开发】--zabbix监控接口配置