IBM Log Analysis with LogDNAで収集したログをアーカイブする

# はじめに

別記事「[IBM Log Analysis with LogDNAで、IBM Cloud Kubernetes Service(IKS)のログを監視・アラート通知する](https://qiita.com/hisato_imanishi/items/cdfe71a98919d3dfe38f)」では、IKSから出力されるログを、IBM Cloudのログ収集・参照・監視サービスである「IBM Log Analysis with LogDNA」（以降、LogDNA）に収集し、監視する手順を書きました。

LogDNAのインスタンス作成時、いくつかの料金プランから選択することができますが、保管期間は最長でも30日間となり、それ以前のログは消えてなくなることになります。

直近のログのみ見えればよいというケースもありますが、過去にさかのぼって状況を確認したいとか、監査上の理由で保管期間が決められているためログを残しておく必要があるなど、実際のシステム運用においては30日間でログが消えてしまっては困る場合が多いと思います。

そのため、収集したログは多くの場合、アーカイブしたうえで保管しておき、必要に迫られた場合に引っ張り出して参照できるようにすることになります。しかし、そのための仕組み作りはオンプレのシステムではそれなりに手間がかかります。ログをアーカイブする、ログを保管するためのサーバに移送する、サーバのディスクも無限ではないため定期的にテープ/ディスクバックアップを取って古いものを削除する、（ログが極めて重要な場合）ディスク障害に備えてディスクの二重化を図るなど。

が、クラウドサービスを使用していれば、ログのアーカイブもお手軽に実施できます。

当記事では、LogDNAが収集したログを定期的にIBM Cloud Object Storage（以降、ICOS）にアーカイブする手順を紹介します。

なお、ICOSは、AWSのS3に相当するサービスで、非常に高い耐久性を備えたストレージサービスになります。また、ストレージのサイズも拡張性に優れ（エクサバイトまで）、古いファイルを自動的に削除するといった機能も備えており、ログの保管には最適です。


# 前提事項

別記事「[IBM Log Analysis with LogDNAで、IBM Cloud Kubernetes Service(IKS)のログを監視・アラート通知する](https://qiita.com/hisato_imanishi/items/cdfe71a98919d3dfe38f)」を実施済みで、LogDNAのインスタンスは作成済みとします。

# ICOSのインスタンス・バケットの作成

IBM Cloudの[ICOSのページ](https://cloud.ibm.com/catalog/services/cloud-object-storage
)にアクセスします。


「ライト」プランを選択し、「作成」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/32291ff7-9959-2e86-d07a-4f999cf77595.png)

「バケットの作成」（赤枠部分）をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/86d8cfb5-ae5e-bbc9-6f3f-2556fb266886.png)

「カスタム・バケット」（赤枠部分）をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/448e1230-f36c-507f-1ae0-89f8c8671001.png)


「固有のバケット名」にネーミングルールに沿った任意のバケット名を入力し、「ロケーション」を「us-south」を選択し（LogDNAのインスタンスをダラスで作成しているため）、バケットを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/2080c717-5d34-6976-96d5-d7540b2179b2.png)

# ICOSのバケットへの権限付与

作成されたバケットで、「サービス資格情報」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/ba235ade-6747-3312-332d-8a7b14ad556b.png)

「名前」はデフォルトのまま、「役割」を「リーダー」に設定し、「追加」ボタンをクリックします。
<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/e524949d-667e-df40-5521-c955980989f5.png">

以下のようにサービス資格情報が作成されます。
サービス資格情報名の左隣の下矢印（赤枠部分）をクリックすると、各種の資格情報がJSON形式で表示されます。
その中で、**「apikey」、「resource_instance_id」の2項目の値をメモ**しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/f7fe8d0d-aa7a-2517-a8e5-5eef83af3b20.png)



次に、[IAMのサービスIDのページ](https://cloud.ibm.com/iam/serviceids)にアクセスします。

先ほど作成したサービス資格情報をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/b133c1f1-baf3-3232-0175-adb2a8f80137.png)


「アクセス・ポリシー」タブを選択し、「アクセス権限の割り当て」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/ce579061-4d94-1af8-0bb0-19d1669b1e5e.png)

作成したバケットに対する書き込み権限を付与します。
権限割り当て対象のサービスとして「Cloud Object Storage」を選択し、以下の通り入力します。

- サービス・インスタンス　：　作成したICOSのインスタンス
- リソース・タイプ　：　「bucket」と入力
- リソースID　：　ICOSのバケットの名前を入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/3e63d530-5a24-3434-d2a6-634eb1d0a79c.png)

画面下部の「サービス・アクセス」で「ライター」にチェックを入れ、「追加」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/cac646b0-003f-6fbc-984e-500c730dc2e6.png)

画面右側のアクセス・サマリーを確認し、「割り当て」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/13fb5d95-f2e2-7045-1b15-14bcb91a760a.png)


ICOSで作成したバケットのページに戻り、画面左側の「構成」をクリックし、「バケットの構成」ページを表示します。
エンドポイントが記載されているので、**プライベートのエンドポイントをメモ**しておきます（赤枠部分）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/4a732d38-73a3-7220-5b7c-7795f85b9a6b.png)


# LogDNAの設定

[LogDNA](https://cloud.ibm.com/observe/logging)のページにアクセスします。

「LogDNAの表示」をクリックし、LogDNAのダッシュボードを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/5fa90e94-af98-df78-4e74-16e7b6dc8838.png)

画面左側の歯車アイコンをクリックし、「ARCHIVING」をクリックします。
「Enabling Archiving」を「ON」にし、「Provider」で「IBM Cloud Object Storage」を選択します。
「Bucket」、「Endpoint」、「API Key」、「Instance ID」にそれぞれ以下の値を入力し、「Save」ボタンをクリックします。

- Bucket　：　ICOSのバケット名
- Endpoint　：　上記でメモした「プライベートのエンドポイント」
- API Key　：　上記でメモした「apikey」
- Instance ID　：　上記でメモした「resource_instance_id」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/db9f2fef-8f3e-e84f-94ef-2070ac2f2cac.png)

これでアーカイブの設定が完了です。


# 結果確認

最初のアーカイブ処理は、上記の設定が完了した後、24時間が経過した後になります。
すぐにアーカイブ処理を実行することはできません。

そのため、24時間以上経過するのを待った後、ICOSの対象バケットを確認します。

以下のように、gzで圧縮されたファイルがバケットに格納されていれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/2f0bce60-c614-d585-60d9-54c6f4582fc3.png)

もし設定に不備があり、アーカイブが失敗している場合、24時間放置するとアーカイブの設定が自動的にOFFになるので、不備の内容を修正したうえで、上記のアーカイブ設定で再度ONに設定してください。