コラム
Azure MonitorでAzure Database for PostgreSQLのログ監視を行う
-
TAG
Azure -
UPDATE
2021/05/10
はじめに
こんにちは。BTCクラウドCoEの松波です。 今回はAzure Database for PostgreSQLのログ監視をAzure Monitorで実施してみたいと思います。
ログをAzure Monitorに送信する
Azure Database for PostgreSQLのログは、デフォルト設定ではAzure Monitorに連携されないため、明示的に送信するよう設定する必要があります。 ログの転送は、Azure Database for PostgreSQL画面の「診断設定」メニューから実施します。宛先として3つの中から選ぶことができますが、Azure MonitorはLog Analyticsと統合されているため、Log Analyticsワークスペースを選びます。
なお、デフォルト設定では、PostgreSQLのログは短期保管用ログストレージに出力される仕様となっており、最大容量は1GBまで、保管期間は最大7日間となってます(※1)。 ログの保管期間としてはかなり短いので、仮に監視要件が無かったとしてもいずれかの宛先に転送した方が良さそうです。 ちなみに、Log Analyticsなどへの転送を行う場合は、logging_collectorをオフに設定して短期保管用ログストレージへの出力をオフにすることが推奨されてます。(※1)
Azure Monitorでのクエリ
Azure Monitorに送られたログは、Log Analyticsやモニターの画面からクエリを実行することで、参照可能です。クエリ言語はSQLチックなKusto Query Language、略してKQLです。余談ですが、Share PointでもKQLを使いますが、SharePointの方はKeyword Query Languageの略称で別物です。
まず、ログの内容を見るために簡単なクエリを実行してみます。 PostgreSQLのログはAzure Monitor上で、Category==”PostgreSQLLogs”として扱われるため、クエリでそのように指定します。
AzureDiagnostics
| where Category == "PostgreSQLLogs"
クエリを実行すると、該当のログが画面に表示されます。
ログの内容を見てみると、ログ生成の時刻、ログレベル、ログメッセージがそれぞれTimeGenerated、errorLevel_s、Messageにマッピングされていることがわかります。 例えば、直近10分以内のログレベルFATALのものを抽出するようなクエリは以下のようになります。
AzureDiagnostics
| where Category == "PostgreSQLLogs"
| where errorLevel_s == "FATAL"| where TimeGenerated > ago(10min)
アラート通知
上記クエリで検知された場合、指定のメールアドレスに通知するとします(実際にはFATALをすべてを検知対象とするとログイン時のパスワード間違いなどもすべて検知してしまうので、もう少しチューニングは必要です)。メール通知には、Azure Monitor アラートの機能を使います。ここでは詳細は割愛しますが、クエリの画面で「新しいアラートルール」という項目をクリックして、メール送信するためのアクショングループを指定することで設定可能です。
なお、アラート通知メールからはログメッセージがわからないため、Azure Portalでログの詳細を確認する必要があります。
おわりに
ログ監視の基本的な手順を記載しました。今回はAzure Database for PostgreSQLを題材にしましたが、他サービスでも同様のことができますので是非試してください。
※1 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-server-logs
-
PICK UP
ピックアップ
-
ピックアップコンテンツがありません
-
RANKING
人気の記事
-
-
1
クラウドセキュリティ - 汝、疑ってかかれ
クラウドセキュリティ - 汝、疑ってかかれ
2021/11/16
-
2
インターネットと通信しないVPC内にAWS Sto…
インターネットと通信しないVPC内にAWS Storage Gatewayを構築…
2021/02/01
-
3
NAT Gatewayのコスト分析で、S3ゲートウ…
NAT Gatewayのコスト分析で、S3ゲートウェイエンドポイントのありがたさ…
2022/06/01
-
4
EKSを理解する(第1回)eksctl・IAM・R…
EKSを理解する(第1回)eksctl・IAM・RBAC
2020/04/09
-
5
IAMを理解する第2回(IAMポリシー編)
IAMを理解する第2回(IAMポリシー編)
2020/06/02
-
-
ARCHIVE
アーカイブ
-
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (3)
- February 2022 (1)
- January 2022 (1)
- December 2021 (1)
- November 2021 (2)
- September 2021 (1)
- August 2021 (2)
- June 2021 (1)
- May 2021 (1)