テーマ
Dynatraceのダッシュボードに、以下のようなネットワーク機器のインターフェイスの状態の一覧表があるとします。
これは、SNMP経由でネットワークスイッチから定期的にデータを取得し、インターフェイスの状態を一覧表示したものです。
up(1)
とdown(2)
といった文字では瞬時に判別しづらいので以下のように表示させたい、というのが今回のテーマです。
一目瞭然ですね!
どのようにして実現しているか
この一覧表はDQLというクエリ言語を用いて書いたクエリで生成されています。信号表示の無い、オリジナルのクエリは以下のようなものです。
fetch `dt.entity.snmp:com_dynatrace_extension_snmp_generic_device_interface`
| filter opStatus != "notPresent(6)"
| fields description, opStatus, highspeed
| sort description asc
各行の役割は以下の通りです。
- SNMP経由で取得している、ネットワークスイッチのインターフェイス一覧を取り出す
-
opStatus
がnotPresent(6)
である行を取り除く、つまり実在するインターフェイスだけに絞り込む -
description
,opStatus
,highspeed
のフィールド (列) だけを表示させる -
description
ここではインターフェイス名でソートする
どのようなフィールドがあるかを調べるにはdescribe
を使います。
ではどのようにして信号表示を追加しているのでしょうか。
fetch `dt.entity.snmp:com_dynatrace_extension_snmp_generic_device_interface`
| filter opStatus != "notPresent(6)"
| fieldsAdd Status = if(opStatus == "up(1)", "🟢", else:"🔴")
| fields Status, description, opStatus, highspeed
| sort description asc
オリジナルに対して以下の1行だけを追加しています。
| fieldsAdd Status = if(opStatus == "up(1)", "🟢", else:"🔴")
ここではfieldsAdd
を使って、新たにStatusという名前のフィールドを追加しています。値は、opStatus
がup(1)
の時は"🟢"を、それ以外では"🔴"という文字をセットしています。文字ですので"👍"と"👎"や、"🙆"と"🙅"など自由に設定できますが、ここで凝ると一目瞭然でなくなってきますね。
数値データを取るメトリクスに対してであれば、適宜しきい値を決めて、それを超えると"🔴"、といった信号表示フィールドを追加することも可能です。
データを後から整形・加工したい
このようにfieldsAdd
は非常に強力で、データを見やすく、表現力豊かにできる機能であることを感じていただけたかと思います。
Dynatraceでは、データが取り込まれる時点で、あらかじめ決められた処理が行われます。ログ行から属性を切り出すなどもその一例です。このような処理を取り込み時点だけでなく、後から、つまりデータ利用時にできるのがとても便利です。
後から、こんなフォーマットのデータがほしいとか、いくつかの属性を組み合わせて新しい属性を作りたいといったことが自由にでき、過去のデータにさかのぼって適用できます。
これらの機能を活用して、より見やすくてわかりやすいダッシュボードを、自由度高く作ってみてください。
Dynatraceフリートライアル → https://www.dynatrace.com/ja/trial/