Instanaのイベント、チョットワカル#2

# はじめに
こんばんは。
金カムに爆ハマりしている古川がお届けします、
[Instana Observability Advent Calendar 2023](https://qiita.com/advent-calendar/2023/instana) 15日目です。

6日目は[Instanaのイベント、チョットワカル#1](https://qiita.com/komuroki/items/f55ff29ed5e75340b8e4)ということで、　　
Instanaの主要機能の1つである`イベント`機能について書きました。

今日はその続編です。今回は、イベントの構成要素や作成/管理に関するお話をします。　　


## 対象とする読者の方
- Instanaを検討中の方、利用開始してまもない方
- 「イベント」「アラート」「組み込みメトリック」などの各種用語や設定項目を前に挫折してしまった方。心が折れそうな方。

:::note info
[Instanaのイベント、チョットワカル#1](https://qiita.com/komuroki/items/f55ff29ed5e75340b8e4) を先に読んで頂いた方が、理解が深まると思うので、まだ#1をお読みでない方はそちらを先に読んでみてください！
:::

## ゴール
Instanaのイベント、チョットワカル！


# 本編
## イベントの構成要素（メトリックとイベント）


そもそもInstanaの`イベント`とは、「いつ、どこで、何が起きたか、どれくらい重要か」を示すものです。　　

- 「いつ」は読んで字の如くなので、割愛します。
- 「どこで」を示すのが後述する`スコープ`です。例えば、「ECサイトAで」「社内アプリケーションB」で「MySQL上で」などです。
 - 「何が起きたか」に関連するのが`メトリック`と`イベント`です。

:::note info
`メトリック`は監視項目を表していて、`イベント`はその監視項目がどんな状態にあるかを示しています。  
:::

例1. アプリケーション監視の場合：アプリケーションに対する「呼び出し数」がメトリックで、「呼び出し数が増えた(減った）」がイベントです。
![Screenshot 2024-08-19 at 13.54.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/004b0ded-f525-5b5c-953e-81acc8000b6d.png)


例2. サーバ監視の場合：「cpu.wait」がメトリックで、「CPUの入出力に多くの時間が費やされている」がイベントです。![Screenshot 2024-08-19 at 13.55.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/f9d9a1f0-3ed6-a2d9-f0c7-4ae552120d32.png)



 - 「どれくらい重要か」は、[Instanaのイベント、チョットワカル#1](https://qiita.com/komuroki/items/f55ff29ed5e75340b8e4) でお話した、`インシデント`なのか`問題`なのか、`クリティカル`なのか`警告`なのかということです。




  
＞「何が起きたか」に関連するのがメトリックとイベント
というお話をしましたが、ここをもう少しドリルダウンしてみます。　　


## メトリック
メトリックは以下2種類が存在します。
- `組み込みメトリック`
- `カスタムメトリック`

### 組み込みメトリック
`組み込みメトリック`は、Instanaにデフォルトで組み込まれている監視項目です。　
例：
- [PostgreSQLの組み込みメトリック]()
    - コネクションの使用率
- [IBM Db2の組み込みメトリック](https://www.ibm.com/docs/ja/SSE1JP5_current/src/pages/events_alerts/built-in-events-ref.html#ibm-db2)
    - 表スペース・ユーティリティー
    - HADR_CONNECT_STATUS

### カスタムメトリック
一方、`カスタムメトリック`は、「使いたい監視項目が`組み込みメトリック`では具備されていないな...」という時に使うものです。ただし、なんでも自由に設定できるわけではなく、Instanaのモニター対象のアプリケーションが明示的に公開しているメトリックのみ利用できます。例えば、[以下のカスタム・メトリックをInstanaで利用できます](https://www.ibm.com/docs/ja/instana-observability/current?topic=alerts-defining-custom-events#create-a-custom-event)
- Dropwizard メトリック
- Finagle メトリック
- JMX メトリック
- Prometheus メトリック
- statsd メトリック 
など

つまり、Instana内で組み込みメトリック以外で何のメトリックを利用できるかは、上記、監視ソフトウェアやサービスの仕様に依存するということです。

## イベント
- `組み込みイベント`
- `カスタムイベント`　の2種類が存在します。

### 組み込みイベント
- Instana側でデフォルトで用意されたイベント
    - 組み込みメトリックこと監視項目と、その状態の組み合わせのこと。
- `エンティティー・タイプ`ごと、つまり、Instanaの監視対象テクノロジーごとに様々なイベントが組み込みで用意されている。
- メリット：監視定義の手間を省くことができる。

例<br>
- ホストにおいて`Too many open file`(ファイルを開きすぎている)
- Tomcatにおいて`Threads number reached maximum`(スレッド数が最大値に達した)
 ![Screenshot 2023-12-15 at 18.53.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/bf9cbdf7-a4dc-2feb-7bb0-38b50a2a13a5.png)
      
### カスタムイベント
  - 自分で独自に作成できるイベント。
  - 実現したい監視定義が組み込みイベントで実装されていない時に利用。
  - `組み込みメトリック` or `カスタムメトリック` を紐づけることが可能。

例
IBM Db2の場合は、以下の組み込みメトリック及びイベントが具備されています。
- 組み込みメトリック：表スペース・ユーティリティー
- 組み込みイベント：表スペース・ユーティリティー・メトリックの状況(表スペースとそのメトリックに関連するイベントの確認を促すイベント)

でもこれだと具体性にちょっと欠けてしまいますよね？また、データベース監視の場合は表領域の使用率なども気になるところです。

このように「Instanaの組み込みイベントには具備されていないけど、もっとこういう監視をしたい!」という場合に、カスタムイベントを作成する必要があります。実装レベルでいうと、Instanaの設定>イベントページから「新規イベント」を選択して、新たにイベントを作成する必要があるということです。
![Screenshot 2024-08-19 at 14.36.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/69abb916-4b11-3a96-13b6-8d87b0db2914.png)

これを利用すれば、例えばですが、Db2の表領域使用率の監視も可能になります。<br>
<br>
最後にメトリックとイベントの関係性をまとめると以下の通りです。
- `組み込みイベント`に紐付くのは`組み込みメトリック`
- `カスタムイベント`に紐付くのは`組み込みメトリック` or `カスタムメトリック` 


## カスタムイベントの作り方
では、次はカスタムイベントの作り方について詳しく述べます。

:::note warn
組み込みイベントは、自分で作成する必要はないです。既に組み込まれたものだからです。Instanaの監視対象のアプリやインフラに問題が起これば、勝手にイベントとして起票されます。
:::

1. Instana GUIのTOP画面にて、左側のメニューバーから`設定`（歯車マーク）を選択。
2. `イベントとアラート`から `イベント`を選択。
![Screenshot 2023-12-15 at 18.42.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/7069c79a-8ca4-ccc3-f141-a9c96d3677b8.png)

3. 2の画面から`新規イベント`を選択。
![Screenshot 2023-12-15 at 18.46.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/5483d19b-c921-5350-8ef0-bc087b712dde.png)

4. `イベントの詳細`を入力（「何が起きたか」「どれくらい重要か」に相当）
    4-1.  `名前` `説明` `問題の重大度` `インシデントとして取り扱うか否か` `猶予期間`を入力します。
    ＊ `猶予期間`：条件に一致しなくなった場合にその`問題`をクローズするまでの時間。
![Screenshot 2023-12-15 at 19.00.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/ffc9af4f-5033-8b64-02db-f6747dab04cc.png)
![Screenshot 2023-12-15 at 19.04.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/a6d8b067-3196-c984-e992-b27c4b0e7e1a.png)

5. `条件`を入力（「何が起きたか」に相当）
    5-1. ソース：`組み込みメトリック` `カスタムメトリック`のいずれかを選択。
     `組み込みメトリック`を選択した場合：(A)へ。  
         `カスタムメトリック`を選択した場合：(B)へ。

    (A)
    5-2. エンティティー・タイプ：何のメトリックをイベントに紐づけるのかを
    　　　　　　　　　　　　　　選択。今回はJVMを例とする。
    5-3. 時間枠：プルダウンから任意の時間を選択。
    5-4. 任意のメトリックを選択。　　
    　　 JVMであれば、スレッド数などに関するメトリックが取得可能。
![Screenshot 2023-12-15 at 19.13.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/1cfcbad7-c3d4-096b-0883-571d49c0de1e.png)

    (B)
    5-2. エンティティ-・タイプ：以下から任意のものを選択。
            - Dropwizard メトリック
            - Finagle メトリック
            - JMX メトリック
            - カスタム・パフォーマンス・カウンター
            - Prometheus メトリック
            - statsd メトリック    
    5-3. 時間枠：プルダウンから任意の時間を選択。
    5-4. 任意のメトリックを選択。
![Screenshot 2023-12-15 at 19.16.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/aa1e4773-f56f-5204-1a9d-995fb388d60a.png)

6. `スコープ`を設定（「どこで」に相当）
当該イベントのスコープを選択する。選択肢は以下の３通り。
![Screenshot 2023-12-15 at 22.58.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492942/71bbacba-ac23-1d1a-79f2-1de9e86547c6.png)

# まとめ
- メトリックは `組み込みメトリック` `カスタムメトリック`　の2種類が存在。　　
- イベントは `組み込みイベント` `カスタムイベント`　の2種類が存在。　　
- イベントは`組み込みメトリック`と`カスタムメトリック`に紐づく。
    - 作成の必要性や紐づくメトリックによって、イベントの呼称が変わる。
        - `組み込みイベント`（作成不要）に紐付くのは`組み込みメトリック`
        - `カスタムイベント`（要作成）に紐付くのは`組み込みメトリック` or `カスタムメトリック`　　
        
- カスタムイベントのユースケース： 「組み込みイベントではちょっと監視が物足りない。もっと自社の運用に合わせて監視設定をカスタマイしたい」という場合利用。
- 裏を返せば、そのようなケースがない場合は、組み込みイベントの利用で十分。これを使えば、実装の手間は省けて、迅速に監視をスタートできる。

# おわりに
いかがでしたでしょうか？言語化/体系化するのに、思いの外時間がかかりました。。。でもこういう情報があれば、設計や実装もスムーズにいくと思うので、どこかで誰かのお役に立てていれば嬉しく思います！

ではでは、皆様良い週末を！


# 改訂履歴
2024/8/19 組み込みイベント/メトリック、カスタムイベント/メトリックの説明を全体的に修正。