この記事の目的
Cisco Catalystシリーズにおいて、snmp_exporterを利用したスループット計測を行う記事はよく見かけましたが
Cisco ASAシリーズにて、スループット計測を行おうとしたとき、少しだけハマったので備忘録としてメモを残しておきます。
なお、Grafana Labsで提供されているこちらをだいぶ改変させてもらっています。
結論
Grafanaのダッシュボード生成時、Variablesで定義した変数の中に特殊文字(空白やシングルクォート)が入っていると、グラフの描画に失敗します。
正しくデータを抜き出せるように正規表現を頑張る。
環境および前提
- Prometheus
- Grafana
- snmp_exporter
上記のアプリケーションはそれぞれ稼働しているものとします。
Grafanaでダッシュボードを作成する前に、Prometheus(snmp_expoter)で正しく値が取得できているかどうか確認しておきましょう。
また、一部私の環境に特化している箇所があるかもしれませんが、適宜読み替えていただけると助かります。
ダッシュボード作成
Prometheus側の設定
ここではわかりやすいように、Prometheus側の設定(prometheus.yml)で、新しくjob_nameを定義しておきます。
job_name名はsnmp_asa
としました。
Variables
ダッシュボードのVariablesから以下のように定義しましょう。
具体的には以下のようなパラメータです。
* General
* Name: Host
* Type: Query
* Query Options
* Query: query_result(sysName{job="snmp_asa"})
* Regex: .*sysName="(.*?)".*
* General
* Name: Device
* Type: Query
* Query Options
* Query: query_result(sysName{job="snmp_asa",sysName="$Host"})
* Regex: .*instance="(.*?)".*
* General
* Name: Interface
* Type: Query
* Query Options
* Query: query_result(ifInOctets{job="snmp_asa",instance="$Device"})
* Regex: .*ifDescr=.*'(.*?)'.*
* Selection Option
* Multi-value
$Interface
変数でインタフェース名の一部分を抜き出してあげる必要があります。
うまくインタフェース名が抜き出せると以下のようになります。
あとは、この抜き出せたインタフェース名を使い正規表現で抽出したいデータを引っ掛けていきましょう。
ダッシュボード側
Add Panelするか、最初に紹介したこちらのダッシュボードをインポートして、いじっていきましょう。
Legendはそれぞれ、InとOutを付与してみましょう。
### Input側
irate(ifInOctets{job='snmp_asa',instance='$Device',ifDescr=~'.*$Interface.*'}[5m]) * 8
### Output側
irate(ifOutOctets{job='snmp_asa',instance='$Device',ifDescr=~'.*$Interface.*'}[5m]) * 8
また、GeneralタブでTitleを Adaptive Security Appliance $Interface interface
のようにしてあげれば以下の図のようになります。
また、GeneralタブのRepeating機能で複製すれば以下のようになるかと思います。