【Oracle Cloud】OCI Loggingのカスタム・ログでApacheのアクセスログを取り込んでみた

##はじめに
Oracle CloudのOCI Loggingでは、カスタム・アプリケーションや他のクラウド・プロバイダのログを取得することができる、カスタム・ログという機能があります。
今回は、カスタム・ログを用いてApacheのアクセスログをOCI Loggingに取り込む方法を紹介します。

##Apacheの設定
Oracle CloudのComputeインスタンスを作成します。今回、OSはCentOS 7で作成しました。
yumでApacheをインストールし、Apacheを起動します。

```
//Apacheのインストール
$ sudo yum -y install httpd

//Apacheの起動
$ sudo systemctl start httpd
```

index.htmlファイルを作成します。

```
$ sudo sh -c 'echo "test for custom log" > /var/www/html/index.html'
```
今回はログを確認できればよいので、curlで`http://localhost:80`にアクセスします。

```
$ curl http://localhost:80
test for custom log
```
Apacheのアクセスログは、`/var/log/httpd/access_log`に出力されます。
先ほどcurlでアクセスした際のログが出力されていることを確認します。

```:/var/log/httpd/access_log
::1 - - [25/May/2021:14:54:31 +0000] "GET / HTTP/1.1" 200 20 "-" "curl/7.29.0"
```

Apacheのアクセスログのフォーマットは、`/etc/httpd/conf/httpd.conf`で確認できます。

```:/etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
```

##OCI Loggingの設定
ログの出力が確認できたので、OCI Loggingの設定を行なっていきます。

まず、動的グループを作成します。動的グループ内のインスタンスがログ収集の対象になります。
メニューの「アイデンティティとセキュリティ」→「アイデンティティ」→「動的グループ」→「動的グループの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/3954e547-237c-6668-a81f-37a02232d6e0.png)

今回はコンパートメント内のインスタンスをログ収集の対象にしたいので、
ルールに`instance.compartment.id = 'コンパートメントOCID'`を入力し、「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/94f2c193-2f14-056c-5eb8-0342cdb553d3.png)

次にログ・グループを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/df0f95be-9410-bcf4-0d58-5694a4937daf.png)

ログ・グループの名前を入力し、「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/39e6a9c4-1db9-5f97-8d1d-49c595fcb7cc.png)


ログ・グループの作成が完了したら、カスタム・ログの設定を行っていきます。
「カスタム・ログの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/274392df-417a-e535-7482-087cab1d2caa.png)

カスタム・ログ名を入力し、「カスタム・ログの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/a331a368-d8c0-4e64-7c76-c5cf2f4c9327.png)

エージェント構成を設定していきます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/dacd08d6-372a-a1f5-f33a-adf3bd275834.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/639c2675-0888-fe4c-7d51-97e053faf65f.png)
ここでは下記の2項目を設定していきます。
#####ホスト・グループの選択
グループタイプ：動的グループ
グループ：作成した動的グループを選択

※動的グループを選択すると、ロギング・サービスの使用を許可するポリシーを作成するボタンが表示されるので、クリックしてポリシーを作成します。

#####ログ入力の構成
入力タイプ：ログ・パスを選択
名前の入力：任意の名前を設定
ファイル・パス：Apacheのアクセスログのパス`/var/log/httpd/access_log`を設定
高度なパーサー・オプション：APACHE2を選択

※パーサー・オプションはAPACHE2以外も用意されています。詳細は下記ドキュメントの「ログ入力およびパーサー
」をご覧ください。
https://docs.oracle.com/ja-jp/iaas/Content/Logging/Concepts/custom_logs.htm
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/b78f5d23-8621-7532-949b-89f50878c7d9.png)

ここまででエージェント構成の設定が完了したので、「カスタム・ログの作成」をクリックします。
##ログの確認

ログ収集が行われていることを確認します。作成したログ名をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/bb5158fe-1d41-576d-dad0-4642deeab394.png)

画面下部の「ログの探索」に、取得したログが表示されます。
表示されない場合は、「時間によるフィルタ」を長めに設定してみてください。(デフォㇽトは5分に設定されています）
また、ログの時間はUTCとして取り込まれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226871/a895aff7-b418-ca73-cf38-80dbc1a9524e.png)

ログが正しくパースされて取り込まれていることが分かります。

```json
  "logContent": {
    "data": {
      "agent": "curl/7.29.0",
      "code": 200,
      "host": "::1",
      "method": "GET",
      "path": "/",
      "size": 20,
      "tailed_path": "/var/log/httpd/access_log"
    }
```
##まとめ
無事に、カスタム・ログでApacheのアクセスログをOCI Loggingに取り込むことができました。

##参考リンク
https://docs.oracle.com/ja-jp/iaas/Content/Logging/Concepts/custom_logs.htm
https://qiita.com/k_kane/items/8e9457ffcecb6f7d6e1b