はじめに
Ubuntuにsnmpdを導入し、CentOS7側のmrtgからデータを取得し、グラフにしてみました。
Ubuntu側はKubernetesクラスターのノードなので、ip link | wc -l
の出力は82とかになっています。
今回はとりあえず全部のトラフィックを取得してグラフにすることを目指します。
環境
MRTGホスト 1台
- OS: CentOS7
- HW: HP MicroServer gen8
- IP: 192.168.1.1
SNMPdホスト (K8sクラスター) 4台
- OS: Ubuntu 20.04 (LTS)
- HW: TX120 S3p
- IP: 192.168.100.51-54
作業ログ
Ubuntu側にsnmpdを導入する
ansibleを使って制御するようになっているので、適当に設定を行なって、全台にsnmpdパッケージを追加しました。
次のような/etc/snmp/snmpd.confファイルを作成し、配布しています。
## $ sudo grep -v ^# /etc/snmp/snmpd.conf | grep -v ^$ の出力
sysLocation Kubernetes Cluster Host
sysContact YasuhiroABE <yasu@yasundial.org>
sysServices 72
master agentx
agentaddress udp:161,udp6:[::1]:161
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
rocommunity public 192.168.1.1
rocommunity public localhost
rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
rouser authPrivUser authpriv -V systemonly
主な変更点は、以下のとおりです。
- sysLocationとsysContactを適当に編集した
- agentaddressで161ポートを開放した
- rocommunityにmrtgホストを追加した
CentOS側のMRTGホストの設定
作業自体は、シンプルにcfgmakerとindexmakerを実行した。
$ cfgmaker public@192.168.100.51 public@192.168.100.52 public@192.168.100.53 public@192.168.100.54 | sudo tee /etc/mrtg/mrtg.conf
$ echo "WorkDir: /var/www/mrtg/" | tee -a /etc/mrtg/mrtg.conf
$ sudo indexmaker /etc/mrtg/mrtg.conf | sudo tee /var/www/mrtg/index.html
CentOSではmrtgコマンドの定期自動実行は設定されないため、手動で/etc/cron.d/mrtgファイルを配置した。(参考情報 Server World - CentOS7 MRTGインストール)
Ubuntu 20.04をMRTGホストにした場合の設定
$ cfgmaker public@192.168.100.51 public@192.168.100.52 public@192.168.100.53 public@192.168.100.54 | sudo tee /etc/mrtg.cfg
$ sudo indexmaker /etc/mrtg.cfg | sudo tee /var/www/mrtg/index.html
Ubuntu 20.04をホストにした場合には、/etc/cron.d/mrtg ファイルは配置されていたので、手動で作成する必要はなかった。
Ubuntu 22.04をMRTGホストにした場合の設定
mrtg.cfg が CentOS と同様に /etc/mrtg/ 以下に配置するように変更されている。
$ cfgmaker public@192.168.100.51 public@192.168.100.52 public@192.168.100.53 public@192.168.100.54 | sudo tee /etc/mrtg/mrtg.cfg
$ sudo indexmaker /etc/mrtg.cfg | sudo tee /var/www/mrtg/index.html
Ubuntu 22.04をホストにした場合には、/etc/cron.d/mrtg ファイルは配置されていないが、/etc/init.d/mrtg が配置されて systemd の管理下にある。
そのため次の要領でmrtgを定期的に実行する。
$ sudo systemctl enable mrtg.service
$ sudo systemctl start mrtg.service
結果の閲覧
CentOS, Ubuntuのいずれをホストにしても、/var/www/mrtg/ディレクトリにファイルが配置されているため、rsyncなどで手元のシステムにコピーし、内容を確認しています。
以上