Open3

AKSのノードメトリクスをSlackに通知する

akiraakira

ダッシュボードで表示するこういう図をSlackに毎朝通知したい。

akiraakira

まずはAzure Portalでできることを調べる

こういうのはAzure Portalでできれば、CLIであとでどうにでもなりそうなのでまずはこれを画像ダウンロードできるか調べる。

ダッシュボードの作成

いくつか見たいメトリクスがあってこれを1枚絵にしたいので、まずはダッシュボードを作成する。
公式を見て、さっとダッシュボード作成

Azure portal でダッシュボードを作成する

ダッシュボードを編集

ダッシュボードに埋め込む図を作成する。]

  1. AKSのリソースにアクセスして左側ペーンの監視という項目のメトリックをクリック
  2. 欲しい項目を選択(例えばCPU Usage Percentage)
  3. ノードごとに見たいので、分割を適用するをクリックして、Name of the nodeを選択するとノードごとに分かれる
  4. ダッシュボードにピン留めする

これで欲しいデータをダッシュボードにピン留めして良い感じに並べる

ちなみにメトリックの表示をカスタムするのは右側のグラフの設定を選べば多少カスタムできる。

ダッシュボードをexportする

ダッシュボードにエスポートボタンがあるので試してみる。

  1. ダウンロード
  2. 出力

この2つが選べるが、ダウンロードはダッシュボード自体の情報をjsonにまとめたものなので、あとでCLIとかで同じダッシュボードとか作る時に使えそうだけど、今回は使わなそう。
出力はプリントが起動するのでpdfへの出力は可能

pdfに出力してストレージに保存してAzure Functionでpngとかに変換すれば、Slackへ通知できそうな感はある。

メトリック自体からデータを抽出

メトリックの画面に共有ボタンがあるのでここから何ができるか

  1. Excelへの出力
  2. API仕様へのリンク(Azure 監視 REST API のチュートリアル

出力したExcelを見るとメトリックのグラフの生データ入ってたので、これを使えばグラフは作れそう。
APIもあるのでこれ使えば生データの取得は普通にできそう。

まとめ

方法としては、

  1. ダッシュボードのpdf出力 -> 画像ファイルに変換をAzure Functionで行う
  2. APIで取得した生データからグラフを作って通知する

この2つになりそう。

akiraakira

Power BIを使う

ダッシュボードのpdf出力 -> 画像ファイルに変換は面倒なので直接画像ファイルを取得する方法を調べたらPower BIを使うとできそうなので調べた。

Log Analyticsを設定

色々データを取得するのにLog Analyticsが必要っぽいので、まずはLog Analyticsのワークスペースを作成する。

AKSのリソースにアクセスして左側ペーンの監視という項目の分析情報をクリック

これでContainer Insightsが有効になって色々なメトリクスを取得できる。
ただ、ログとかがすごい多いと有料になってしまうので、確認要(Log Analyticsワークスペースにいって、使用量と推定コストという項目を見ればok)

クエリ作成

Log Analyticsの使い方はLog Analytics のチュートリアルを参照してください。

すごいシンプルに使用メモリとかを見るクエリはこんな感じ

Perf
| where TimeGenerated > ago(3d)
| where CounterName == "memoryRssBytes"

Power BIにエクスポート

クエリ作成のところでエクスポートがあってPower BIにエクスポートというのがあるのでこれをクリック

そうするとテキストファイルがダウンロードできるのでこれを使ってPower BIを設定する。

Application Insights のデータを Power BI に入力する

ただ、Power BIデスクトップが必要で、Macbookしか持ってない自分はできないことにここで気づいた。