Azure LogAnalyticsワークスペースに様々なログを取り込んでみます。他にも色々とやってますので下記エントリも確認お願いします!
今回はすでにAzure LogAnalyticsに接続しているLinuxVMに対してApacheを構成し、そのログを取り込んで検索可能となるところまでやってみたいと思います。
対象VMのAzure上での確認
対象のVMはlalinuxvmというlinux vmです。OSはCentOS 7です。



Apacheの導入~動作確認
まずは、VMにSSHでアクセスし、Apacheを導入します。


httpdをインストール
sudo yum install httpd
Apacheを起動
sudo systemctl start httpd
このままだとNSGにブロックされてアクセスできないのでHTTPポート(TCP/80)をオープンします。



これで、外部からHTTPでアクセス可能となりました。

アクセスすることで標準の場所(/var/log/httpd/access_log, /var/log/httpd/error_log)にログが出力されていることが確認できます。

カスタムログを使って収集する方法
Apacheのログ収集にはいくつかやり方があります。例えば、ApacheのログをSyslogに出力させ、Syslogを収集することも可能です。
ですが、ここではまずは素直に生成されているログを「カスタムログ」を使って収集する方法を見てみます。
カスタムログの追加をクリックします。

サンプルログを要求されます。サンプルのログを参照します。ここではフォーマットが分かればいいのでsshのターミナルでログの一部分をテキストファイルにコピペしたうえで保存し、参照させる程度でもよいと思います。もちろん、オリジナルのファイルを取得してもよいです。

ログのフォーマットに応じて、1レコードの区切りを改行かタイムスタンプを指定します。今回の場合は改行でよいですね。

コレクションパスとしてはApache側のログの生成ルールと合わせる必要があります。まずは、/var/log/httpd/access_logのみを指定して動作を確認します。

カスタムログの名前を指定します。

作成します。

カスタムログが作成されました。

収集されて検索可能となるまでにはしばらく時間がかかりますので、待ちます。 その後収集したカスタムログは、まずカスタムログ名をそのまま検索することで、全量のデータが取得できます。

実際のデータはRowDataという列に格納されていることがわかります。
同様にして、エラーログも収集可能です。フォーマットが異なるので、別のカスタムログとして定義するのが良いかと思います。

RowDataの中身をさらに列に分割して検索、管理したくなります。そしてそれは可能ですが、これはまた検索クエリの解説記事で扱うことにしたいと思います。
本エントリとしては、「ログが収集できた」というところで一区切りとしたいと思います。
Azure LogAnalyticsワークスペースに様々なログを取り込んでみます。他にも色々とやってますので下記エントリも確認お願いします!