カスタムメトリクスと言えば Cloudwatch、と言われるほど(?)AWSでは運用監視でよく使われてる機能ですが、AzureでもApplication Insightで同じようなことができるのは余り知られていないかと思います。
以下に使い方を紹介します。
情報入手
情報入手といっても、Azure Portalのブレードにチュートリアルとサンプルが隠れています。
サンプルの入手
Application Insightで「はじめに」→「カスタム メトリックとカスタム イベントでテレメトリを強化する」を選択します
「はじめに」がまず分かりにくい場所にあり、かなり下の方に配置されています。
「カスタムメトリックとイベントでテレメトリを強化する」に各言語のサンプルが置いてあります
今回は、「フリガナ」という謎翻訳 [^1] を押すと出てくる、rubyのサンプルを使用してみます。
カスタムメトリクスを登録してみる
キーの取得
メトリクスをputするためのキー(インストルメンテーションキー)を取得します。これはApplication Insightの「概要」で確認できます。
取得したサンプルを元に、メトリクスをputするスクリプトを作成
今回は1から100までの乱数を生成し、確認のためAzureとAWSの両方にputしてみます。
sample.rb
# !/usr/bin/ruby
require 'application_insights'
# 1から100までの乱数を生成
r = rand(100)
random_number = r + 1
# [Azure]乱数をTestMetricとしてput
tc = ApplicationInsights::TelemetryClient.new '<ここにインストルメンテーションキーを入力>'
tc.track_metric 'TestMetric', random_number
tc.flush
# [AWS]乱数をTestMetricとしてput
aws_command = '/usr/bin/aws cloudwatch put-metric-data --region ap-northeast-1 --namespace AZURE_METRIC_TEST --metric-name TestMetric --value ' + random_number.to_s + ' --unit Count'
result = `#{aws_command}`
exit 0
```
あとはこのスクリプトを定期的に実行し、結果を確認します。
# 結果確認
Azure Portalでデータが取得できたか確認します。
「メトリックエクスプローラ」を選択すると、いくつかデフォルトのグラフが表示されているので、「編集」ボタンをクリックしてグラフを構成します。

カスタムメトリクスが正常に送信されていれば一番下の「カスタム」に追加されているので、チェックしてグラフに追加します。

あとはグラフの期間や統計の種類を変更すれば結果が確認できます。
- Azureで取得されたグラフ

AWS Cloudwatchのグラフと比較すれば、同じ値が送信されていることが確認できます。
<img width="550" alt="awsCloudwatch" src="https://qiita-image-store.s3.amazonaws.com/0/172826/86c7ea84-107a-67dd-4192-a0bd4cfa6b43.png">
以上でカスタムメトリクスの使い方が確認できました。Application Insightでは他にカスタムイベントなども扱うことができます。
Azureの運用系は基本的にOMS(Operations Management Suite)に集約される方向かと思われますが、まだまだ色々なサービスに分散していて場所が分かりづらいです。こういった機能も早くOMSで一元管理できるようにしてもらいたいです。
[^1]: なぜフリガナなのか、ruby → "ルビー" → "ルビ" → "フリガナ" という経路(?)で訳されたと予想される。いくらフィードバックしても直らないのもなぜなのか。