在IPFS應用開發、調試、測試、發佈、運行、運維過程中,發現了一個問題——對ipfs節點的數據監控很重要。這些數據可以很直觀的判斷出是否要擴容,硬件瓶頸在哪,需要如何增加資源。
【IPFS應用開發】--zabbix監控接口配置
監控數據的持久化儲存
目標:在上傳一些文件是可以體現出來流入流量突發、數據盤空閒空間減少、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
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內容
在節點上運行命令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儲存大小,可以在一個大屏展示圖中顯示。
當我添加一些數據時監控反應出來的情況如下: