OpenShift on IBM Cloud 上にコンテナアプリを動かしてIBM Log Analysis with LogDNAでログ監視しアラート機能でメールを飛ばしてみる

## はじめに

IBM Cloud 上の Red Hat OpenShift Kubernetes Services (以下、通称ROKS) 上でサンプルアプリを稼働させ、そのコンテナアプリケーションが吐き出すログを、IBM Cloud のログ管理サービスである IBM Log Analysis with LogDNA でログ監視できるようにして、アプリログの出力に対してアラート機能によりメールを飛ばせるようにするまでの手順を、一通り試してみました。

## 全体ステップ

1. OpenShift Kubernetes Servies を発注する
1. OpenShift上にサンプルアプリケーションをデプロイする
1. Log Analysis with LogDNA を発注する
1. OpenShiftのログをLogDNAで閲覧できるようにする
1. LogDNAで（監視対象の）アプリケーションログのViewを作る
1. 作成したViewに対してアラートを設定してメールを飛ばす

## ステップ１： OpenShift Kubernetes Servies の発注

IBM Cloudのカタログのサービスから「Containers」カテゴリーを選んで、「Red Hat OpenShift on IBM Cloud」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/eba6511f-ba55-c80e-f3d1-a0eeac1aed4d.png)
OpenShiftのバージョン、ロケーション、フレーバー（サーバの種類）、台数などを選択しオーダーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/5b6b966f-8216-b27b-1927-c0d8f9cd9904.png)
３０分程度でクラスターが立ち上がってきます。　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/e03bc258-3ed0-404b-fa1c-f4cf930b63ff.png)
＃「Ingress状況」のステータス（不明）は、少し時間が経過した後「正常」になります

上部の「OpenShift Webコンソール」ボタンを押すとOpenShiftのポータル画面にアクセスできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/67d3c119-18b3-0702-f7a9-08b684978e70.png)

## ステップ2: OpenShift上にサンプルアプリケーションをデプロイする

OpenShiftのポータル画面の左のメニューより、管理者パースペクティブをDeveloperに切り替えて、「+追加」より「create a Project」を押して、「my-sample-project」を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/808ad21e-d503-d768-8fed-7a01438c4da8.png)
同じく「+追加」から、上部に「プロジェクト:my-sample-project」になっている状態で、サンプルアプリ（nodejs-sample）を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/e87cd885-9590-5367-2fa3-1078265108f6.png)
「トポロジー」で、Deploymentのステータスを示す（アイコンの周りの）円の色が、水色から青色（Running）に変わるのを待って、「URLを開く」でサンプルアプリの稼働確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/a3f113c3-e678-a493-1ff1-1e5f17906bca.png)
Deploymentアイコンを押して「View Logs」からPodのログを確認します。（以下では、ブラウザーから3回アクセスしたログが出ています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/dc8c3cf1-3cd9-42bc-2a8f-62e5530b8f14.png)

## ステップ3： Log Analysis with LogDNA を発注する

IBM Cloudのサービスから「ロギングとモニタリング」カテゴリーを選んで、「IBM Log Analysis with LogDNA」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/a102d559-9254-fd97-17f5-9e9dafd6d284.png)
料金プランを選択し、作成ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/ebd154f7-75a2-7ffd-c987-09974f084ea2.png)
＃ ストリーミングでのログ閲覧については、無料の「ライト」プランの選択が可能です。今回は、アラートを設定しメールを飛ばしたかったので、「7日間のログ検索」プランを選択しました。

## ステップ4： OpenShiftのログをLogDNAで閲覧できるようにする

IBM Cloudのナビゲーション・メニューから、リソースリストで、Servicesカテゴリーにある「IBM Log Analysis with logDNA」のサービスのリンクを押し、さらに、ロギングメニューにて「ログ・ソースの追加」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/5c6fff7a-c8a4-3116-bae3-6c1c4e28be08.png)
OpenShiftのタブを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/22e23e3a-b5ac-d496-d55a-2bf9e9268c6f.png)
上記記載の５つのocコマンドをターミナルにて実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/24263760-6a83-321a-f522-092cf2f384c4.png)


---
補足： ローカルPCのCLI（ターミナルやコマンドプロンプトなど）からocコマンドでIBM Cloud上のOpenShiftのクラスター（サーバ）に接続し、ocコマンドを実行する方法について

・ocコマンドがローカルにない場合
OpenShiftのダッシュボードの上部の？マークを押して「コマンドラインツール」を選択し、自身の環境に合わせて、コマンド（バイナリー）をダウンロードしてセットアップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/7342bf16-6722-8ecf-271d-0e61fd70accc.png)
・ocコマンドからOpenShiftのクラスター（サーバ）に接続する方法
OpenShiftのコンソール上部の自身のIDを押し、メニューから「ログインコマンドのコピー」を選択。次の画面で「Display Token」を押し「Log in with this token」の下の oc コマンドをコピーし、コンソールにペーストして実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/4cc34e34-b597-3116-3a5e-0890a5aa0303.png)

---

（ステップ４続き）
「IBM Log Analysis with logDNA」のサービスのロギングメニューにて「ダッシュボードを開く」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/3995dd94-eb74-59aa-7304-145b976018b4.png)
＃背景色やテーマなどはSettings → USER PREFERENCE で変更できます。

OpenShiftのログがLogDNAに取り込まれて、リアルタイムに表示されていることが確認できます。

## ステップ5: LogDNAで（監視対象の）アプリケーションログのViewを作る

デフォルトのViewでは、OpenShiftの全ログが閲覧対象になっているので、「Sources」から、閲覧対象としたいPodを検索（検索窓にステップ２の最後で確認したPod名の一部を入力）し、該当Podを選択してApplyを押して、ログの絞り込みを行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/a5fb3dc8-f9e9-e254-6146-523d64f53525.png)
＃リストに対象リソースが出てこない場合は、リストの再生成を実行させるため、ブラウザーのリロードを行ってください。

今絞り込んだ、監視対象Podログだけを見るViewを保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/3d9aa577-426d-5201-9c06-0c3a782df13a.png)

## ステップ6: 作成したViewに対してアラートを設定してメールを飛ばす

Viewのメニューより、「Attach an alart」を選択し、「View-specific aleat」にて「Email」を選び、メールのRecipientsなどを設定して、「Save Alert」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/75145b03-91bf-53ec-b826-1c8f5343b140.png)
＃上記の設定により、該当のView（nodejs-sample-view）に表示されるログに対して、30秒以内に1行以上ログが現れたら、30秒毎のタイミングで1通のメールが飛ばされるようになります。

設定したアラートの動作確認をするため、先のサンプルアプリのURL（ステップ２の「URLを開く」）にもう一度アクセスし、Podのログにアクセスログが表示されるのを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/062ca20b-3541-8190-b486-d9702df0374c.png)
＃上記、左側がアクセス前のログの状態で、右側がブラウザーから再アクセス後に１行ログが追加されたところ

アラートメールが送られてきたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355635/b284c706-e1e7-ad3d-1864-2b6edb82f71d.png)

---

以上、IBM Cloud上にて、OpenShiftとLoggingのマネージドサービスの新規オーダーを行い、コンテナアプリの起動、OpenShiftログでの確認、ログのアラート設定を行う事によるアラートメールの受信確認まで、一連の手順についてご紹介させていただきました。

まだ、IBM CloudやOpenShiftなどを、あまり触ったことの無い方にとって、何かのご参考になれば幸いです。