LogDNAでIBM Cloud Kubernetes Serviceのログ監視をしてみた

# IBM Log Analysis with LogDNA の東京リージョンがサービスインしていた

6月4日(火)にIBM Log Analysis with LogDNA の東京リージョンがサービスインしていたので早速、東京にプロビジョニングしたIBM Cloud Kubernetes Service (IKS)のログ監視を試してみました。その時の手順を備忘録として残しておきます。

IBM CloudのLogDNAはなんぞやなどは下記の投稿やサイトを見ると理解できることでしょう。

@asasaki さんのLogDNA で IBM Cloud のログ監視をしてみた
https://qiita.com/asasaki/items/c8aee30ee7151740d624

IBM Log Analysis with LogDNA　入門チュートリアル
https://cloud.ibm.com/docs/services/Log-Analysis-with-LogDNA?topic=LogDNA-getting-started

IBM Log Analysis with LogDNA による Kubernetes クラスター・ログの管理
https://cloud.ibm.com/docs/services/Log-Analysis-with-LogDNA?topic=LogDNA-kube&locale=ja#kube

# 手順概要
IBM Log Analysis with LogDNA の導入は3ステップのみで簡単です。

1. IBM CloudポータルにてIBM Log Analysis with LogDNA インスタンスを注文
2. LogDNAのインスタンスにログを送信するようにIKSのワーカーノードにLogDNAエージェント設置
3. LogDNA Web UIで転送されたログの確認

※ただし、本番運用を考えるとIAM でユーザー・アクセス権限の設定、FWのポリシーについて考慮も行わなければならないです。今回は評価なのでマスターアカウントでサクッと終わらせます。

# 事前準備
２つのワーカーノードをtok02にプロビジョニング、guestbookアプリをデプロイしておきました。

```
$ kubectl get nodes 
NAME            STATUS   ROLES    AGE   VERSION
10.212.24.215   Ready    <none>   76s   v1.13.6+IKS
10.212.24.219   Ready    <none>   32s   v1.13.6+IKS

$ kubectl get pod
NAME                        READY   STATUS              RESTARTS   AGE
guestbook-f7cbbccd7-knhr7   1/1     Running             0          17m
guestbook-f7cbbccd7-lzg9r   1/1     Running             0          20m
```

# 手順1. IBM Log Analysis with LogDNA インスタンスを注文

IBM Cloudポータルでカタログ→Developer Toolの順に遷移するとIBM Log Analysis with Log DNAが表示される。
<img width="737" alt="スクリーンショット 2019-06-05 16.33.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209170/7927fe14-f092-fe62-11a3-d2215abfd620.png">

注文が完了するとIBM Log Analysis with Log DNAのインスタンスが表示される
※IBM Cloudポータルでリソース・リスト→Observability→ Loggingの順に遷移
<img width="746" alt="スクリーンショット 2019-06-05 17.00.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209170/838f743a-e7b9-d62c-d931-2fa1fa9e269c.png">

# 手順2. LogDNAのインスタンスにログを送信するようにIKSのワーカーノードにLogDNAエージェント設置

- LogDNAの取り込み鍵(Ingestion Key)をKubernetesのSecretとして保管   
logdna-agent-key=xxxxxxのxxxxxxの箇所に取り込み鍵(Ingestion Key)を記述

```
$ kubectl create secret generic logdna-agent-key --from-literal=logdna-agent-key=xxxxxx
secret/logdna-agent-key created
```

- 登録したsecretの確認

```
$ kubectl get secret logdna-agent-key
NAME               TYPE     DATA   AGE
logdna-agent-key   Opaque   1      16s
```
- LogDNAエージェントをDaemonSetとしてIKSにデプロイする。

```
$ kubectl create -f https://assets.jp-tok.logging.cloud.ibm.com/clients/logdna-agent-ds.yaml
daemonset.extensions/logdna-agent created
```

LogDNAエージェントはワーカーノードに１つづつLogDNAエージェントPodが展開されます。すなわち ワーカーノードの数＝LogDNAエージェントポッドの数になります。 
今回の場合は２つのワーカーノードがあるので２つのlogdna-agent Podが起動します。

```
$ kubectl get pod -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP               NODE            NOMINATED NODE   READINESS GATES
guestbook-f7cbbccd7-knhr7   1/1     Running   0          18m   172.30.107.195   10.212.24.219   <none>           <none>
guestbook-f7cbbccd7-lzg9r   1/1     Running   0          21m   172.30.107.193   10.212.24.219   <none>           <none>
logdna-agent-5wzbm          1/1     Running   0          46s   172.30.249.205   10.212.24.215   <none>           <none>
logdna-agent-th5d4          1/1     Running   0          46s   172.30.107.197   10.212.24.219   <none>           <none>
```
PodがRunningになるとワーカーノード上のすべてのネームスペースから kube-system ログを含むログを転送します。すべてのコンテナーのStdout と Stderr も自動的に収集されて転送されます。

# 手順3. LogDNA Web UIで転送されたログの確認

WebUIにはリアルタイムで生成されているIKSクラスターのログが表示されます。
フリープランでは確認できるのは最新のログのみです。
ログのフィルタリング、ログの検索、ビューの定義、 アラートの構成の機能を利用するには、 IBM Log Analysis with LogDNAを有料プランにアップグレードする必要があります。
<img width="744" alt="スクリーンショット 2019-06-05 17.04.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209170/7e94739f-7d0f-a774-7301-0f45871bee77.png">

- 有料プランに変更後のLogDNA Web UI画面
<img width="747" alt="スクリーンショット 2019-06-05 17.05.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209170/760187d7-a37c-5ecd-5c8c-1fcd4bbe2002.png">

- 画面上部で、転送時に設定したtag、転送元ホスト名、アプリ名、ログレベルで絞込みができる
- 画面下部で、文字列検索、日付の絞り込みができる

# まとめ
IBM Log Analysis with LogDNAの東京リージョンが開設されたので、勢いで環境を作って見ました。
手順を見ていただければ、お分かりの通り、２つのアクションでログのリアルタイム監視ができてしまいます。

- マウスをクリックして、IBM Log Analysis with LogDNA インスタンスをプロビジョニング
- kubectlの２つのコマンドで、IKSにログエージェントが展開されて、ログの転送が開始します。

IKSの東京リージョンは有料なので、気軽に試すにはIKSのUS-Nouthの無料クラスターが使えます。簡単なのでぜひ試して見てください。

#追記(6/5)
IBM CloudコミュニティのイベントでLogDNAについてLTしました。

- IBM Log Analysis with LogDNAを評価した話
https://www.slideshare.net/DaisukeHiraoka/ibm-log-analysis-with-logdna

- bmxug.tokyo #10 これから始めるIBM Cloud相談会(最新技術解説あります！)
  https://bmxug.connpass.com/event/131569/