#sFlowによるKVM仮想スイッチ(Linux Bridge)フローモニタリングと仮想マシン性能管理
###構成
ホスト・仮想マシンの構成は、
ホストOS(trafficsentinelkvm.flownetsecure.com):192.168.10.51
上に、2つの仮想マシン
compute-vm01:192.168.10.52
compute-vm02:192.168.10.53
を作成
本構成の作成方法は、
CentOS8KVM及び仮想マシンのセットアップ
を参照
###ホストOS上の設定
sFlowによるKVM仮想スイッチ(Linux Bridge)フローモニタリングと仮想マシン性能管理を実現するために Host sFlow をホストOSにインストールする
sFlow(厳密には,「Host sFlow」)によってフロー情報と仮想マシン性能情報がコレクタ(この例では、TrafficSentinel:192.168.10.111)に送出される
#####現在のネットワーク構成
[root@trafficsentinelkvm ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
link/ether 9c:5c:8e:c0:0a:d2 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 9c:5c:8e:c0:0a:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.51/24 brd 192.168.10.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet6 2400:4150:9020:b00:63d5:a6ad:6606:2f50/64 scope global dynamic noprefixroute
valid_lft 289sec preferred_lft 289sec
inet6 fe80::483e:9fae:62e6:5175/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:52:d6:e5 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:52:d6:e5 brd ff:ff:ff:ff:ff:ff
6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:54:bd:55 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe54:bd55/64 scope link
valid_lft forever preferred_lft forever
7: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:f4:1c:43 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fef4:1c43/64 scope link
valid_lft forever preferred_lft forever
#####SNMPのインストール
[root@trafficsentinelkvm ~]# dnf install net-snmp
[root@trafficsentinelkvm ~]# dnf install net-snmp-utils
######snmpd.confの設定
基本的にはインターフェース関連の情報があれば問題無いが、
全体監視項目全体を利用可能にする為、以下を設定;
[root@trafficsentinelkvm ~]# vi /etc/snmp/snmpd.conf
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1
######適用
[root@trafficsentinelkvm ~]# systemctl enable snmpd
Created symlink /etc/systemd/system/multi-user.target.wants/snmpd.service → /usr/lib/systemd/system/snmpd.service.
[root@trafficsentinelkvm ~]# systemctl start snmpd
[root@trafficsentinelkvm ~]# systemctl status snmpd -l
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2021-05-04 09:51:11 JST; 1min 10s ago
Main PID: 5677 (snmpd)
Tasks: 1 (limit: 99689)
Memory: 17.3M
CGroup: /system.slice/snmpd.service
mq5677 /usr/sbin/snmpd -LS0-6d -f
5月 04 09:51:11 trafficsentinelkvm.flownetsecure.com systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
5月 04 09:51:11 trafficsentinelkvm.flownetsecure.com snmpd[5677]: NET-SNMP version 5.8
5月 04 09:51:11 trafficsentinelkvm.flownetsecure.com systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
######ファイアウォールポート設定
[root@trafficsentinelkvm etc]# sudo firewall-cmd --add-port 161/udp --permanent
success
[root@trafficsentinelkvm etc]# sudo firewall-cmd --add-port 162/udp --permanent
success
[root@trafficsentinelkvm etc]# sudo firewall-cmd --reload
success
######SNMPWALKにて動作確認
[root@trafficsentinelkvm ~]# snmpwalk -v 2c -c public -O e 127.0.0.1
インターフェース単位のMIB値の応答
###Host Flowのインストール
https://sflow.net/downloads.php
よりダウンロード
[root@trafficsentinelkvm ~]# rpm -i hsflowd-centos8-<version>.x86_64.rpm
[root@trafficsentinelkvm ~]# sudo systemctl enable hsflowd
Synchronizing state of hsflowd.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable hsflowd
Created symlink /etc/systemd/system/multi-user.target.wants/hsflowd.service → /usr/lib/systemd/system/hsflowd.service.
[root@trafficsentinelkvm ~]# sudo vi /etc/hsflowd.conf
編集箇所抜粋;
sflow {
agent.cidr = 192.168.0.0/16
agent = br0
polling = 30
sampling = 400
sampling.http = 50
sampling.app.myapp = 100
collector { ip=192.168.10.111 udpport=6343 }
pcap { dev = br0 }
pcap { dev = lo }
pcap { speed=0- }
kvm { }
tcp { }
}
[root@trafficsentinelkvm ~]# service hsflowd start
Starting hsflowd (via systemctl): [ OK ]
設定適用内容は、以下で確認
[root@trafficsentinelkvm ~]# cat /etc/hsflowd.auto
# WARNING: Do not edit this file. It is generated automatically by hsflowd.
rev_start=1
hostname=trafficsentinelkvm.flownetsecure.com
sampling=400
header=128
datagram=1400
polling=30
sampling.app.myapp=100
sampling.http=50
agentIP=192.168.10.51
agent=br0
ds_index=1
collector=192.168.10.111 6343
rev_end=1
サンプリングレートの変更は、/etc/hsflowd.conf の
sampling N on interfaces with ifSpeed:
sampling.100M = 100
sampling.1G = 1000
sampling.10G = 10000
sampling.40G = 40000
で設定するようだが、うまく適用できない。
この部分にバグがあるようなので、
サンプリングレートを変更したい場合は、
https://github.com/sflow/host-sflow/commit/ac45d20cf93ea057b37ece423341021fbfbb3918
で、SourceからのBuildになる(Source版でBugFix済)。
###TrafficSentinelでの表示例
######ホストマシン性能情報:trafficsentinelkvm.flownetsecure.com
コレクタは、無償版のsFlowTrendでも同等の情報表示が可能
参照:sFlowTrendのインストール