はじめに
私が業務で経験した技術やハマった事象と解決方法について紹介していきます。
監視業務でテレメトリを扱う際に、Openconfigに準拠したものを扱う技術が多くなってきているのでそれらを紹介できればと考えています。
今回はその中でもgNMIについて紹介します。
gNMIとは
gNMI(gRPC Network Management Interface)とは、ネットワーク機器の設定とテレメトリ情報の取得を行うためのプロトコルです。gRPCを使用することで、効率的かつセキュアな通信を実現することができます。
gNMIの機能
gNMIの主な機能として下記が挙げられます。
1.ネットワーク機器の設定および設定情報の取得
2.テレメトリ情報の取得
2.1 リクエストとレスポンスによる取得
2.2 ストリーミングによる取得
gNMIを扱う際にはクライアントツールを用いることが多いため、クライアントツールの使い方も合わせて紹介します。
クライアントツール(gNMIc)
gNMIc(gNMI client)は、gNMI(gRPC Network Management Interface)プロトコルを使用してネットワーク機器と通信し、設定変更やテレメトリ情報の取得などを行うためのクライアントツールです。
gNMIcのインストール
gNMIcのインストールは非常に簡単で、下記のコマンドを実行することでインストールが可能です。
bash -c "$(curl -sL https://get-gnmic.openconfig.net)"
インストール後は後述のコマンドを使って機器からテレメトリを取得することが可能です。
gNMIcのコマンド
gNMIcで利用できるコマンドの一部と概要について下記に記載します。単純にデータを取得する場合、getを使い、データを定期的に取得する場合や値の更新を契機にデータ取得したい場合などにはsubscribeを使って取得します。
また、対象の機器がサポートしているgNMIのバージョンやデータモデルをcapabilitiesで確認することも可能です。
コマンド | 概要 | オプション | 備考 |
---|---|---|---|
get | データを取得する | ||
set | 設定を変更する | ||
subscribe | ストリーミングでデータを取得する | once:一度のみ取得、POLL:指定されたpolling期間で取得、STREAM:連続して取得(定期的 or 値の更新に合わせて) | |
capabilities | サポートしている機能の一覧を取得する |
gNMIcでのデータ取得
情報の取得(get)
機器に設定されている設定情報や単発でテレメトリを取得する際は下記のコマンドを実行します。
gnmic -a <IPアドレス>:<ポート番号> -u <ユーザ> -p <パスワード> --insecure get --path <取得対象のコンフィグのパス> --timeout 30s
取得対象のコンフィグのパスは、「Yangファイル名:項目のパス」の形式で記載します。
情報の取得(subscribe)
データを定期的に取得する場合や値の更新を契機にデータ取得したい場合などには下記のコマンドを実行します。
gnmic -a <IPアドレス>:<ポート番号> -u <ユーザ> -p <パスワード> --insecure sub --path <取得対象のコンフィグのパス> timeout 1m -e proto --stream-mode ON_CHANGE
情報の取得(yaml,get)
設定ファイルを読み込み、情報を取得する場合は下記のコマンドを実行します。
gnmic --config ./<configファイル名> [取得方法(get/sub)]
今回は簡単な実行方法までを紹介しました。次回以降で使っていて困ったことや監視システムとの連携方法とかを紹介していければと思います。
おわりに
テレメトリの収集は従来SNMPとか使っていましたが、Openconfig等のオープン化の流れもあり、netconfやgRPC、gNMIなども選択肢として挙がってくるため、使えるようになると監視の幅が出てくるとかと思います。
興味を持っていただけましたら、試してみてはいかがでしょうか。
参考URL
gNMI (https://github.com/openconfig/gnmi)
gNMIc (https://github.com/openconfig/gnmic)
gNMIc (https://gnmic.openconfig.net/)
JANOG52 gNMIcを活用したマルチベンダー環境でのテレメトリ技術の実績 (https://www.janog.gr.jp/meeting/janog52/wp-content/uploads/2023/06/janog52-gnmic-ogawa.pdf)