OSSを活用したSNMPデータの可視化方法 ~Grafana x OcNOS~

はじめに
本記事では、SNMP(Simple Network Management Protocol)データの可視化方法について、Open Source Software(OSS)のGrafana ダッシュボードを使用した可視化方法についてご紹介します。
第9回記事でもSONiCを例にOSSを活用したSNMPデータの可視化について触れていましたが、今回はOcNOSを例に可視化までの各種ツールの設定方法などをさらに詳細に説明しようと思います。OcNOSについては第4回記事でも触れておりますので、こちらもぜひ確認してみてください。
OSSツールを使用するためコストはかからず、ツールを動かすサーバーと監視対象のネットワーク機器さえあれば、これまで文章として見ていたSNMPデータを図として見ることができます。
他にもOpen Networkingに関わる記事がありますので、以下「記事一覧はこちら」からご興味のある記事をご覧ください。
SNMPデータの可視化に使用したOSSツールの設定について、下記の様な簡易的なネットワーク構成図を一例に説明します。
今回の内容は、
① telegrafを使用してホワイトボックススイッチからMIB情報を取得し、influxDBに保存するための設定
② InfluxDBとGrafanaへのアクセス確認
③Grafanaのダッシュボードの可視化例
についてご紹介します。
各種ツールの概要については、第9回記事をご参照ください。

簡易的なネットワーク構成図
SNMPとは?
まずは可視化するSNMPの概要について説明します。
SNMPとは、ServerやSwitchなどの通信機器に対し、ネットワーク経由で監視/制御するためのアプリケーション層プロトコルになります。
下記の様に管理する側のSNMPマネージャーと管理される側のSNMPエージェントにより構成され、Packetの廃棄数などの情報のやり取りをおこないます。その際にSNMPマネージャーがUDP Port = 162を使用し、SNMPエージェントがUDP Port = 161を使用します。

SNMPの動作イメージ図
SNMP通信におけるデータ交換のためのMIB
続いて、SNMPで情報のやり取りに使用されるMIB(Management Information Base)について説明します。
MIBとは、SNMPエージェントが所持している機器情報の集合体を指します。このMIBにはPacketの受信数や廃棄数などがあり、MIBをやり取りすることでInterface使用状況等が確認することが可能です。
また、MIBはツリー構造になっています。MIBにある情報をオブジェクトと呼び、OID(Object ID)が割り当てられています。
MIBのツリー構造図
例えば、下記の様にそれぞれのオブジェクトにOIDが割り当てられています。
オブジェクト | OID | 説明 |
SysName | 1.3.6.1.2.1.1.5 | 機器のホスト名 |
interface | 1.3.6.1.2.1.2 | Interface状態やTrafficなどの様々な情報 |
ifInOctets | 1.3.6.1.2.1.2.2.1.10 | 各Interfaceが受信した総byte数 |
各種OSSツールの設定
telegrafの設定ファイル編集
ホワイトボックススイッチからSNMPのMIB情報を取得するために、下記コマンドでtelegraf設定ファイル(telegraf.conf)を編集します。設定が正しく反映されますと、ホワイトボックススイッチのMIB情報がtelegrafによって取得されて、influxDBに保存されます。
$ sudo vi /etc/telegraf/telegraf.conf
※ 以下の画像はtelegraf.confの編集例です。AgentとはMIB情報を出力するホワイトボックススイッチを指します。各種設定項目は以下の通りです。
interval:Agentのデータ(MIB情報)を収集する間隔
# Configuration for telegraf agent
[agent]
## Default data collection interval for all inputs
interval = "20s"
Agentデータの収集interval
url:出力先のinfluxDBのURL
database:influxDBに使うツール(telegraf)
# Configuration for sending metrics to InfluxDB
[[outputs.influxdb]]
## The full HTTP or UDP URL for your InfluxDB instance.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## urls will be written to each interval.
# urls = [ "unix:///var/run/influxdb.sock"]
# urls = [ "udp://127.0.0.1:8089"]
urls = [ "http://127.0.0.1:8086"]
## The target database for metrics; will be created as needed.
## For UDP url endpoint database needs to be configured on server side.
database = "telegraf"
出力先のinfluxDB
agents:データ収集をする対象機器のIP
timeout:データ収集のリクエスト出して応答を待つ時間
version:SNMPのversion
agent_host_tag:データホストを参照するために使用されるタグ
community:データを取得したいSNMPのコミュニティ名
retries:再試行を試す回数
# # Retrieves SNMP values from remote agents
[[inputs.snmp]]
# ## Agent addresses to retrieve values from.
# ## format: agents = ["<scheme://><hostname>:<port>"]
# ## scheme: optional, either udp, udp4, udp6, tcp, tcp4, tcp6.
# ## default is udp
# ## port: optional
# ## example: agents = ["udp://127.0.0.1:161"]
# ## agents = ["tcp://127.0.0.1:161"]
# ## agents = ["udp4://v4only-snmp-agent"]
agents = ["udp://192.168.0.70:161"]
#
# ## Timeout for each request.
timeout = "5s"
#
# ## SNMP version; can be 1, 2, or 3.
version = 2
#
# ## Agent host tag; the tag used to reference the source host
agent_host_tag = "agent_host"
#
# ## SNMP community string.
community = "SNMPServer"
#
# ## Number of retries to attempt.
retries = 3
SNMP関連の設定 – AgentのIP、Timeoutまでの時間など
name:MIBのオブジェクト名
oid:SNMPのOID(今回は数字ではなく名称で設定)
[[inputs.snmp.field]]
name = "sysUpTime"
oid = "DISMAN-EVENT-MIB::sysUpTimeInstance"
#
# Interfacec metrics
#
[[inputs.snmp.table]]
name = "ifTable"
oid = "IF-MIB::ifTable"
inherit_tags = [ "sysName" ]
[[inputs.snmp.table.field]]
name = "ifName"
oid = "IF-MIB::ifName"
is_tag = true
[[inputs.snmp.table.field]]
name = "ifDescr"
oid = "IF-MIB::ifDescr"
is_tag = true
[[inputs.snmp.table]]
name = "ifXTable"
oid = "IF-MIB::ifXTable"
inherit_tags = ["sysName"]
[[inputs.snmp.table.field]]
name = "ifName"
oid = "IF-MIB::ifName"
is_tag = true
[[inputs.snmp.table.field]]
name = "ifDescr"
oid = "IF-MIB::ifDescr"
is_tag = true
取得するMIB情報 – 標準/拡張MIBなど
service_address:UDP port番号
# # Receive SNMP traps
[[inputs.snmp_trap]]
# ## Transport, local address, and port to listen on, Transport must
# ## be "udp://", Omit local address to listen on all interfaces.
# ## example: "udp://127.0.0.1:1234"
# ##
# ## Special permissions may be required to listen on a port less than
# ## 1024. See README.md for datails
# ##
service_address = "udp://:162"
# ## Timeout running snmptranslate command
timeout = "5s"
# ## Snmp version, defaults to 2c
version = "2c"
SNMP Trapの設定 – UDP Port、Timeout、SNMP ver.など
telegraf、influxDB、Grafanaの起動
各種OSSツールをUbuntuサーバで起動します。
$ sudo systemctl daemon-reload
$ sudo systemctl start influxdb.service
$ sudo telegraf --config /etc/telegraf/telegraf.conf &
$ sudo systemctl start grafana-server.service
influxDBへのアクセス確認
influxDBへアクセスできるかどうか、Web上でhttp://192.168.0.80:8086にアクセスして確認します。
※ 今回の使用versionはGUIをサポートしていないため、404 page not foundと表示されます。(アクセス自体は成功しています。)
Grafanaへアクセス確認
Grafanaへアクセスできるかどうか、influxDBと同様にWeb上でhttp://192.168.0.80:3000にアクセスして確認します。
最初のアクセスでは下記のUserとPasswordを使用します。
User:admin
Password:admin
※ LoginするとPassword変更を求められます。

GrafanaのHome画面
Grafanaダッシュボードの可視化例
Grafanaダッシュボード作成方法を使用してダッシュボードを設定すると、以下のようにスイッチに関する様々な情報を表示させることが可能です。
下記可視化例の表示内容としては、以下の情報が含まれています。
①スイッチの起動時間
②インターフェースのリンク情報や接続情報
③CPUの温度や使用率等の負荷情報
④ファン回転数
⑤インターフェースを通過した全てのトラフィックや、特定のパケット(ユニキャストパケットなど)のみのトラフィック情報

ダッシュボード可視化例
以上が、SNMP を用いてホワイトボックススイッチのMIB情報を取得するまでの設定及び、Grafanaダッシュボードの可視化例になります。
第11回では、Grafanaダッシュボードの作成方法についてご紹介します。
最後に
マクニカではオープンネットワーキングを実際に体験し、試験や検証をおこなえる環境をリモートで提供するサービスのご用意があります。
本サービスでは、ネットワークOSの操作性の検証、様々なメーカーのネットワークOSやホワイトボックススイッチ、光トランシーバーを組み合わせた試験をおこなえます。

リモート検証サービス イメージ図
気軽にオープンネットワーキングの検証をおこなえるサービスとなっており、基本構成での利用は無償になっています。
ご利用可能なネットワークOSやホワイトボックススイッチについて、具体的なユースケース、またお申し込み方法はダウンロード資料よりご確認いただけます。資料は下記「マクニカ ネットワークOS リモート検証サービス」よりアンケートにご回答いただきますとご案内メールに記載されているURLよりダウンロードができます。
こんな方がリモート検証サービスを利用しています。

実際に利用いただいた方の声をご紹介します。
古河ネットワークソリューション株式会社 様
「昨今リモートのサービス環境が増えていますが、その中でも評価機材へのアクセス性が良く好印象でした。
ご提供頂いた資料も分かり易く、目的とした検証を円滑に進めることができました。」
関連する情報
資料一覧はこちら
マクニカが取り扱う製品のご紹介のほか、
BGPクロスネットワーク自動構築ファイルやネットワーク運用試験評価レポートなど、オープンネットワーキングに関する資料を掲載しております。
詳細はこちら
製品ページTopへ
IP Infusion
オープンネットワーキングプロバイダのマーケットリーダーとして、キャリア、サービスプロバイダ、データセンターなど600社以上のお客様に信頼性の高いネットワークソリューションを提供しています。
お問い合わせ・資料請求
株式会社マクニカ Edgecore Networks 担当
- TEL:045-470-9831
- E-mail:projectmonstar@macnica.co.jp
平日 9:00~17:00