OpenShiftにInstanaを導入しアプリのパフォーマンス監視を行う（１）- Instanaエージェント導入編

# はじめに
この連載では、Red Hat OpenShift on IBM Cloud（ROKS）のホスト環境にアプリケーションをデプロイし、Instanaエージェントを導入して監視を行う手順を記載します。以下のように３回に分けて解説を行います。
1. Instanaエージェント導入編
1. アプリのデプロイ編
1. パフォーマンス監視編

本記事はInstanaエージェント導入編になります。

# Instanaとは
InstanaはIBMが提供するアプリケーションのパフォーマンス管理（APM）ツールです。導入することで、複雑なシステムにいてもいつ・どこで・何が起きているかの把握が容易になります（可観測性、Observability）。

Instanaの特徴には以下のようなものがあります。
+ 導入が簡単
　ホストにInstanaエージェントをインストールすれば、稼働しているテクノロジー（OS、ミドルウェア、クラウドサービス、ランタイムなど）を自動検出し、センサーと呼ばれるデータ収集のモジュールを自動でロード。あとから加わった変更も検知してくれるため、変化の激しい環境にも追従できる。

+ 依存関係を視覚化
　サービス間の依存関係をアイコンで可視化するため、データの流れを把握しやすい。インシデントが起きたサービスはアイコン色がかわり、問題個所を素早く把握することができる。

+ インシデントの原因をAIが自動解析
　AIを使い異常なふるまいをインシデントとして認識。インシデントが発生するときっかけとなった動作はトリガーイベントとして報告し、関連するイベントまでまとめて表示する。根本原因を特定するための情報を集約してくれるため、簡単に問題特定が可能。

このような自動化やGUIでの操作により、特別なスキルがなくても扱いやすくなっています。

# 検証環境
この連載では以下の環境で進めていきます。
+ OCPバージョン：4.10系（だったと思います...）
+ Instanaバージョン：Build251

# 必要なもの
+ OpenShiftクラスター
+ Instanaライセンス
    Instanaエージェントのシステム要件については[こちら](https://www.ibm.com/docs/ja/instana-observability/current?topic=installing-instana-agents)をご覧ください。

+ OpenShift CLI
    [こちら](https://qiita.com/Tiger-Kid/items/06c9f240772ae6863887)の記事の「OpenShift CLIのダウンロード」を参考に、インストールを行います。
    インストールできたら、念のため下記コマンドで確認しておきましょう。
    ```zsh:terminal
    % oc version
    ```
# OpenShitにInstanaエージェントを導入する
### １. OpenShift CLIでクラスタへログイン
OpenShiftクラスタのWebコンソールに入り、アカウント名の右にある ▼ を押します。続けて、表示されたメニューから「ログインコマンドのコピー」を選択します。
![GetLoginToken_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/46c94b7a-0765-79d4-46d5-39c14bea3a98.png)
新規タブで開かれたページに「Display token」とあるので押します。
すると、「Login with this token」の下にログイン用のコマンドが表示されるので、コピーしてターミナルで実行します。
![DisplayToken_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/1b5d6135-b983-9fc8-4106-6729e1a9ada0.png)
```zsh:terminal
% oc login --token=xxxx~xxxxxxxx --server=https://xxxxxxxx:xxxx
Logged into "https://xxxxxxxx:xxxx" as "IAM#xxxx" using the token provided.

You have access to 73 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".
Welcome! See 'oc help' to get started.
```
上記のように出力されれば、ログインできています。
### ２. プロジェクトの作成
Instanaエージェントをインストールするためのプロジェクトを作成します。ここではinstana-agentというプロジェクト名にします。
```zsh:terminal
% oc new-project instana-agent
```
### ３. Security Context Constraintの設定
instana-agentプロジェクトのサービスアカウントに、privileged権限を付与します。
```zsh:terminal
% oc adm policy add-scc-to-user privileged -z instana-agent
```
Security Context Constraint(SCC)が何かについては[こちら](https://qiita.com/kimura-y/items/7ac0ef6f08c33683ab98)の記事が参考になります．
サービスアカウントについては[こちら](https://qiita.com/torippy1024/items/7aaac0a1b90b769e3a29)が参考になります。
### ４. Instana Agent Operatorのインストール
OpenShiftクラスタのWebコンソールへ入り、左のメニューから「Operator」>「Operator Hub」と進み、Instana Agent Operatorを探します。検索BOXに打ち込むと早いです。
![OperatorHub_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/b919429b-bc45-a134-7253-a26cb7ebf890.png)
出てきたものを選択し、インストールを押します。今回インストールするバージョンは2.0.13になります。
![InstallInstanaAgentOperator_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/21d41bad-6370-a450-26e5-e6a66980835e.png)
適宜設定を変更してインストールを行います。特に変更しなくてもOKです。
![InstallSettings_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/7c9e99ac-261b-4d86-65f5-cd3a540847ac.png)
    インストールが終わると「インストール済みのOperator」から確認できます。
    （諸事情により、この画像だけ環境が異なります）
    ![InstalledInstanaAgentOperator_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/10224253-e3c0-0787-f208-298d8357be7c.png)

### ５. エージェントの導入
まずInstanaのダッシュボードへ入り、エージェントの導入に必要な３つの情報を取得します。左のメニューから「...」を選び「エージェント」を選択します。
![InstanaDashBoard1_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/c3fb4024-f587-37be-3e33-f100dbcb727b.png)
左上の「Install Agents」を押します。
![InstanaDashBoard2_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/663df98e-816c-309d-597f-0d4cf71b89d6.png)
左のリストから「OpenShift」を選択し、サービス・エンドポイント、サービス・ポート、アプリケーション・キーの３つを控えておきます。
![InstanaDashBoard4_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/c4bd941d-df00-65ea-94ae-29ec73098a74.png)
OpenShiftクラスタのWebコンソールに戻ります。「インストール済みのOperator」から「Instana Agent Operator」を選択し、「Instana Agentの作成」を押します。
![CreateInstanaAgent_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/e0de5236-88c2-a963-78ee-53908e3800ed.png)
「YAMLビュー」を選択し、先ほど控えた３つの情報を書き込んでいきます。
・endpointHost に サービス・エンドポイント
・endpointPort に サービス・ポート
・key に アプリケーション・キー
をそれぞれ書き込み「作成」を押します。
![EditYAML_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/f773fd78-5da6-df6a-7463-0d1564b5560e.png)
「ワークロード」>「Pod」と進みます。instana等で検索をかけるか、Projectをinstana-agentへ変更すると、導入したエージェントが確認できます。
InstanaエージェントはDaemonSetとしてデプロイされるので、ノードの数だけPodが出来上がります。DaemonSetについては[こちら](https://thinkit.co.jp/article/13611)が参考になります。
![DeployedInstanaAgent_edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556016/0e3ed51b-f74c-e8a5-e3b4-043acee00fdf.png)

エージェントの導入は以上で完了です。お疲れ様でした。
次はInstanaで監視するアプリケーションをデプロイしていきます。

https://qiita.com/Sung-backyard-arson/private/3fc5fedf755157a3aaf1