はじめに
前編では、ルータのTelemetryデータをInfluxDB上に格納するところまで行いました。
Model Driven Telemetry環境を構築してみた -前編-
後編では、Grafanaによるデータの可視化を行っていきます。
1. Grafanaのセットアップ
(1) Grafanaのインストール
参考URL: Install Grafana and InfluxDB on CentOS 7
インストールの前に、grafana.repoファイルに設定を追加します。
$ cat <<EOF | sudo tee /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
続いて、yumレポジトリからインストールを行います。
$ sudo yum -y install grafana
Firewallが有効化されている場合は、TCP3000を許可の上サービスを再起動します。
(AWSの場合、セキュリティグループでTCP3000を許可)
$ sudo firewall-cmd --add-port=3000/tcp --permanent
$ sudo firewall-cmd --reload
サービスのスタートを行います。再起動時、自動的に起動するようenableも行います。
$ sudo systemctl start grafana-server
$ sudo systemctl enable grafana-server
(2) Grafanaへのログイン
参考URL: How to Install TIG Stack (Telegraf, InfluxDB, and Grafana) on Ubuntu 18.04 LTS - Step7
Webブラウザからhttp://<サーバのIPアドレス>:3000
へアクセスします。初回ログイン時のユーザ名とパスワードはいずれもadminです。
パスワード変更を求められるので、任意のものに変更し、Saveボタンをクリックします。
(3) Grafanaへのデータソースの追加
「Add data source」をクリックし、InfluxDBのデータソースを追加します。
Time series databasesの「InfluxDB」をSelectします。
以下の画面で、URLとDatabaseを指定します。(必要に応じてUserとPasswordも指定。)
- URL: http://localhost:8086/
- Database: telegraf
設定後、「Save & Test」ボタンをクリックし、「Data source is working」と表示されたら成功です。
(4) Grafanaのダッシュボードセットアップ
設定例1: メモリ使用量
①Query設定
Home画面に戻り、「New dashboard」をクリックした後、「Add Query」をクリックします。
下の図の通り、メモリ使用量とメモリ合計量の2つのQueryを作成します。
デフォルトはGUIで入力する形ですが、まずはToggle text edit mode(右側の鉛筆マーク)をクリックし、以下のクエリを直接入力してみます。
-- QueryA: メモリ使用量を取得
SELECT "used_memory" FROM "Cisco-IOS-XE-memory-oper:memory-statistics/memory-statistic" WHERE "total_memory" >= 5000000
-- QueryB: メモリ容量を取得
SELECT "total_memory" FROM "Cisco-IOS-XE-memory-oper:memory-statistics/memory-statistic" WHERE "total_memory" >= 5000000
いずれもWHERE句で"total_memory" >= 5000000
を指定しています。前編の「3.(6) Telegrafの起動、DB検索」を見て頂くと分かる通り、同時刻に2種類のデータが取得されており、total_memoryが小さい方(3149400)をグラフ表示から除外するための設定です。
「ALIAS BY」を指定することで、グラフに表示されるパラメータの名称を指定できます。今回はそれぞれ「used_memory」、「total_memory」としています。
②Visualization設定
画面左側の「Visualization」をクリックし、「Axes > Left Y > Unit」でY軸の単位を「bytes」にします。
また、「Legend > Values」の「Max」と「Current」を有効化し、グラフ内に過去の最大値と現状の値が表示されるようにします。
③General設定
画面左側の「General」をクリックし、Titleを「Memory」とします。
左上の「Go Back」ボタンをクリックすると、作成したダッシュボードが表示されていると思います。
設定例2: CPU使用量
①Query設定
続いて、CPU使用量のパネルを追加します。画面右上の「Add panel」(グラフのマーク)をクリックします。
「Add Query」をクリックし、以下のクエリを入力します。
-- QueryA: CPU使用率を取得
SELECT "five_seconds" FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization"
「ALIAS BY」は「util_five_seconds」としています。
②Visualization設定
「Axes > Left Y > Unit」でY軸の単位を「percent(0-100)」にします。
また、「Legend > Values」の「Max」と「Current」を有効化し、グラフ内に過去の最大値と現状の値が表示されるようにします。
③General設定
画面左側の「General」をクリックし、Titleを「CPU」とします。
設定例3: インターフェースのステータス、カウンター情報
参考URL: GrafanaとInfluxDBでネットワークリソースの視覚化
①Query設定
最後に、インターフェースのカウンター情報を表示します。例として、in方向のバイトカウント(in_octets)とout方向のバイトカウント(out_octets)を表示させてみます。今回はデフォルトのGUIをそのまま使いました。
カウンターは累計値のため、直前の値との差分を取る必要があります。そのため、SELECTで「non_negative_derivative(10s)関数」を使用し、直前の10秒前の値との差分を算出しています。値を1秒単位に変換し、さらに単位をバイトからビットに変換するため、「math(*8/10)関数」も使用しています。GROUP BYでは「fill(none)」を選択します。
②Visualization設定
「Axes > Left Y > Unit」でY軸の単位を「bits/sec」にします。
また、「Legend > Values」の「Max」と「Current」を有効化し、グラフ内に過去の最大値と現状の値が表示されるようにします。
③General設定
画面左側の「General」をクリックし、Titleを「Bandwidth」とします。
同様に、in方向のパケットカウント(in_unicast_pkts)とout方向のパケットカウント(out_unicast_pkts)でパネル「Packet Count」、in方向のエラーパケットカウント(in_errors)とout方向のエラーパケットカウント(out_errors)でパネル「Error Count」を作成し、各パネルの配置を調整したのが下の図です。
設定が終わったら、画面右上の「Save dashboard」ボタンでダッシュボードを保存します。
終わりに
今回は最低限の時系列グラフ表示のみを行いましたが、バー、テーブル等様々な表示形式にも対応しています。加えて、アラームを上げたり、Templateを使って効率的にダッシュボード作成ができたりするようです。
まだ使い始めたばかりなので、今後色々とカスタマイズしてみたいと思います。