APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Application Insightsを使わずに、AKS上のアプリログをお手軽に確認する

f:id:thanaism:20210804171416p:plain

はじめに

Azureコンテナソリューショングループの過部です。
当社ではAzure × コンテナをソリューションとしたSIや内製化支援サービスを提供しています。 その一環として、日々の学びをこのブログでアウトプットしていきます。

今回は、Application Insightsを使わずに、Container Insightsを用いて、AKS上のアプリログをお手軽に確認する方法を紹介します。

なぜApplication Insightsを使わないのか

Application Insightsとは、AzureにおけるAPM(アプリケーション性能監視)サービスであり、Azure上でアプリ監視を行う際には、まず候補として挙がってくるでしょう。 アプリケーションの色々な側面を監視でき、可用性テスト、分散トレース、プロファイラ、アプリケーションマップ等々、機能も充実しています。

とはいえ、システムの開発段階でとりあえずアプリログを確認するためだけに、既存のコードを書き換えたり(※Javaを除く)、監視構成を考えたりするのは正直面倒です。

その点、Container Insightsの場合だと、Azure Portal上から1-Clickで有効化することができます。

Container Insightsのお手軽さを分かって頂けたところで、早速Container Insightsに触れていきたいと思います。

今回代わりに使うContainer Insightsについて

Container Insightsとは、Azure Monitorの機能の一部で、コンテナワークロードのパフォーマンスを監視してくれるサービスです。 AKSクラスタでAzure Monitorを有効化するだけで、自動でメトリックとログを収集してくれるようになります。

Azure Monitor有効化時の挙動をもう少し詳しく紹介すると、

  1. Azure Monitorを有効化する
  2. omsagentが、AKSのkube-system namespaceにデプロイされる
  3. omsagentが、Fluent Bit,Prometheus,Telegraf等のツールを用いてログ、メトリックを収集する
  4. omsagentが、Log Analyticsワークスペースにログ、メトリックを送信する

という流れになっています。

omsagentについてより詳しく知りたい方は、omsagentのソースコードリポジトリを参照ください。 https://github.com/microsoft/Docker-Provider/tree/ci_dev/kubernetes

Container Insightsを用いたアプリログの確認手順

事前準備

以降の作業ではAKSクラスタが必要になります。お持ちでない方は、下記のMicrosoftチュートリアルを参考に、「AKSクラスタの作成」~「アプリケーションの実行」までを行ってください。

https://docs.microsoft.com/ja-jp/azure/aks/kubernetes-walkthrough-portal

[設定]Azure MonitorをAKSクラスタで有効化する

Container Insightsを有効化するために、Azure Monitorを有効化します。

1. Azure Portal上で今回使うAKSクラスタを選択

f:id:p1k42:20210803172235p:plain

2. Azure Monitorを有効化したいので、左側の列から"監視 / 分析情報"を選択 → "有効化"を選択

f:id:p1k42:20210803161227p:plain ※Azure Portal上でAKSクラスタを作成する際はデフォルトで有効化されているので、この手順は省略可能です。

Container Insightsの設定に関する操作はこれだけで終わりです。

次にアプリログを確認していきましょう。

[確認手順]アプリログの確認

1. コンテナのログを確認したいので、左上の列から"コンテナー"を選択

f:id:p1k42:20210803142052p:plain

2. 確認対象のコンテナ(今回はazure-vote-front)を選択
3. ログを表示したいので、"分析で表示する"→ "コンテナーログの表示"を選択

f:id:p1k42:20210805144044p:plain

4-1. ログ一覧が表示される

f:id:p1k42:20210805143915p:plain kubectl logs POD_NAME実行時と同等のログが保存されていることを確認できます。

4-2. 特定のログをクリックして展開した場合

f:id:p1k42:20210805143935p:plain

最後に

今回は、Container Insightsを用いてAKS上のアプリログをお手軽に確認する方法を紹介しました。
しかし、Container Insightsの場合だと、標準出力、標準エラー出力レベルのログ収集しかできません。
以下の情報が必要な場合は、Application Insightsの導入をおすすめします。

  • 要求レート、応答時間、およびエラー率
  • 依存率、応答時間、およびエラー率
  • 例外
  • ページ ビューと読み込みのパフォーマンス
  • Web ページからの AJAX 呼び出し
  • ユーザー数とセッション数
  • パフォーマンス カウンター
  • ホスト診断
  • アプリの 診断トレース ログ
  • カスタム イベントとメトリック

こちらより一部抜粋


別記事にて、Angularアプリを題材にしたApplication Insightsの機能紹介を行っているので、ぜひこちらもどうぞ techblog.ap-com.co.jp