【IBM Cloud】IBM Cloud Monitoring with Sysdigを使って、LinuxのVirtual Server Instanceの監視を行なってみた

## はじめに
今回はIBM CloudのモニタリングサービスであるIBM Cloud Monitoring with Sysdig（IBM Cloud Monitoring）をプロビジョニングし、立ち上げたVirtual Server Instance（VSI）をLinuxエージェントにて監視する流れを整理したいと思います。
今回の内容にはIBM Cloudの[アカウント](https://cloud.ibm.com/docs/account?topic=account-accounts)（無料利用可能）が前提となっています。
## IBM Cloud Monitoringのプロビジョニング
まず監視に使用するIBM Cloud Monitoringをプロビジョニングします。
IBM Cloudコンソールに入り、左上の`ナビゲーション・メニュー`をクリックし、`可観測性`→`モニタリング`に入ります。
![スクリーンショット 2024-02-19 14.41.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/cc209611-6011-01cb-03f0-3117dcf5b7f8.png)
![スクリーンショット 2024-02-19 14.42.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/057f7128-e5be-fd21-058e-cf3a159d4264.png)

インスタンスを作成するため、右上の`作成`をクリックします。
![スクリーンショット 2024-02-19 14.42.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/c9bb413e-e5e9-09b3-7e53-f7ed9432de4b.png)

インスタンス作成画面にて、インスタンスのロケーションやプランを選択します。
今回ロケーションは「Tokyo」を選び、プランは「段階課金制」にしていますが、今回の検証にはLiteプランでも可能ですので、適切に設定してください。
下にスクロールすると、インスタンス名やリソース・グループを指定する欄が表示されます。こちらも自由に設定してください。
全ての設定が完了したら右側の`作成`にてインスタンスをプロビジョニングします。
![スクリーンショット 2024-02-19 14.42.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/288d4ec4-958a-340c-5528-dc8e1505fce5.png)
![スクリーンショット 2024-02-19 14.56.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/ab7b28c6-8b72-0d60-dc59-944cf50a41d5.png)

インスタンスが作成されると以下の概要画面が表示されます（プロビジョニングは数秒~数分で完了します）。
![スクリーンショット 2024-02-19 14.42.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/bb53347b-976d-8436-1d87-e26efb44fe19.png)

## VSIのプロビジョニング
次は監視を行う対象のVSIを立ち上げます。
今回はVirtual Server for VPCを作成しましたが、同じくVPC環境を利用する場合は[こちら](https://qiita.com/Sungyun_Moon/items/82e4fbe5056c7918bc54)を参考にVPCやサブネット、SSHなどの設定を行なってください。

IBM Cloudコンソール画面から`ナビゲーション・メニュー`→`VPCインフラストラクチャ`→`仮想サーバー・インスタンス`をクリックします。
![スクリーンショット 2024-02-19 15.07.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/bfa2f7e5-acaa-0a81-4d0c-ed77778d666f.png)

インスタンス作成のため、右側の`作成`をクリックします。
![スクリーンショット 2024-02-19 15.08.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/348a504f-8aa9-5650-193b-f9545b0ca9e3.png)

インスタンスの設定を行います。
今回ロケーションは上記同様に「東京」にしています。
![スクリーンショット 2024-02-19 15.09.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/d14953ca-117a-6c3d-2f41-e28166efd294.png)

また、OSとスペックを選択します。今回私はCentOSを選んでおり、スペックは最小構成を選びました。
また、前提条件として作成したSSH鍵も選択します。
![スクリーンショット 2024-02-19 15.09.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/cab3782d-58c2-73ac-320f-7e584e0e5b54.png)

同様に前提条件として作成したVPCやサブネットを選択します。
全ての設定が完了したら、右側の`仮想サーバーの作成`をクリックします。
![スクリーンショット 2024-02-19 15.10.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/081f04c0-e9c4-7e54-1a60-ce9f9103788d.png)

サーバーが立ち上がると以下のような概要画面が表示されます。
下にスクロールしネットワーク・インターフェース欄の`鉛筆マーク`をクリックし、浮動 IP（Floating IP）を取得します。
![スクリーンショット 2024-02-19 15.30.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/be78a103-83b7-4214-a359-7b922ab634c5.png)
![スクリーンショット 2024-02-19 15.30.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/e4bd9ca5-6af4-5907-2653-32ad097ce3fb.png)

## Linux エージェントのデプロイ
ターミナルを開き、IBM Cloudにログインします。ログインはCLIを使用したワンタイム・パスコードを利用すると便利です。
右上のプロフィールアイコンをクリックし、`CLIとAPIにログイン`をクリックしますと、以下のログインCLIが表示されます。
IBM Cloud CLIをコピーしコマンド入力にてログインを行います。
また、リージョンも`4.jp-tok`を選択します。
![スクリーンショット 2023-01-27 14.52.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/85389613-4b70-eda8-43d4-a0da1211064c.png)
![スクリーンショット 2023-01-27 14.52.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/04c3ad3e-31da-6abc-804c-506a5536429d.png)

```shell:ログイン結果
API エンドポイント: https://cloud.ibm.com
認証中です...
OK

ターゲットのアカウント XXX (xxxxxxxxxx) <-> xxxxxx


リージョンを選択します (または Enter キーを押してスキップします):
1. au-syd
2. in-che
3. jp-osa
4. jp-tok
5. kr-seo
6. eu-de
7. eu-es
8. eu-gb
9. ca-tor
10. us-south
11. us-south-test
12. us-east
13. br-sao


数値を入力してください> 4
ターゲットのリージョン jp-tok

API エンドポイント:      https://cloud.ibm.com
Region:              jp-tok
ユーザー:              xxxxxx@ibm.com
アカウント:             XXX (xxxxxxxxxx) <-> xxxxxx
リソース・グループ:       リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください
CF API エンドポイント:   
組織:                    
スペース:  
```

先ほど取得したFloting IPを使ってpingを飛ばし、サーバーが問題なく稼働しているか確認します。
```shell:ping
ping xxx.xxx.xxx.xxx
```

```shell:ping結果
PING xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx): 56 data bytes
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=0 ttl=49 time=23.752 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=49 time=9.283 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2 ttl=49 time=18.704 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=3 ttl=49 time=12.145 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=4 ttl=49 time=9.096 ms
```

sshを使ってサーバーにアクセスします。
```shell:
ssh root@xxx.xxx.xxx.xxx
```

上記で作成したIBM Cloud Monitoringのインスタンスを開き、メニューから`モニタリング・ソース`に入ります。
![スクリーンショット 2024-02-19 18.43.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/9d7bd2c3-954f-4ed1-4d38-bd869ecd56c9.png)

Linuxカテゴリーを選択し、記載されているコマンドを入力していきます。
![FireShot Capture 059 - Monitoring Sources - IBM Cloud - cloud.ibm.com (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/eeb68308-97a3-d056-2a12-f16ee4b88483.png)


:::note info
コンソール記載の手順の場合、カーネル・ヘッダーがインストールされていないなどの要因でうまくインストールされない場合があります。その際にはコンソール記載の手順が前後する可能性があります。
そのため、検証される際には以下の手順の方がスムーズかと思います。
:::

まず、モニタリング・エージェントをインストールするときには、エージェントで[カーネル・ヘッダー・ファイル](https://docs.sysdig.com/en/docs/installation/troubleshooting/kernel-header-troubleshooting/)が使用されるため、まずはカーネル・ヘッダーをインストールする必要があります。
以下ディストリビューションに沿ったコマンドを入力します。

```shell:RHEL、CentOS、Fedora Linux　などの場合
yum -y install kernel-devel-$(uname -r)
```

```shell:Debian、Ubuntu Linux　などの場合
apt-get -y install linux-headers-$(uname -r)
```

その後、エージェントインストールのコマンドを入力します。
エンドポイントはプライベートかパブリックかによってコマンドが異なります。必要に応じて入力してください。
（今回はプライベートにしています。）

```shell:エージェントインストール
curl -sL https://ibm.biz/install-sysdig-agent | sudo bash -s -- --access_key MONITORING_ACCESS_KEY --collector COLLECTOR_ENDPOINT --collector_port 6443  --tags TAG_DATA --additional_conf 'sysdig_capture_enabled: false\nfeature:\n    mode: monitor_light'
```

```shell:エージェントインストールの結果
* Detecting operating system
Package dkms-3.0.12-1.el7.noarch already installed and latest version
* Installing Sysdig public key
* Installing Sysdig repository
* Installing kernel headers
Package kernel-devel-3.10.0-1160.102.1.el7.x86_64 already installed and latest version
* Installing Sysdig Agent
Creating symlink /var/lib/dkms/draios-agent/12.20.0/source -> /usr/src/draios-agent-12.20.0
Sign command: /lib/modules/3.10.0-1160.102.1.el7.x86_64/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub

Building module:
Cleaning build area...
make -j2 KERNELRELEASE=3.10.0-1160.102.1.el7.x86_64 -C /lib/modules/3.10.0-1160.102.1.el7.x86_64/build M=/var/lib/dkms/draios-agent/12.20.0/build....
Signing module /var/lib/dkms/draios-agent/12.20.0/build/sysdigcloud-probe.ko
Cleaning build area...

sysdigcloud-probe.ko.xz:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/3.10.0-1160.102.1.el7.x86_64/extra/
Adding any weak-modules
depmod....
WARNING: Could not find cacert.pem file for python3 certifi package.
         Some appchecks might not work correctly. To correct this,
         run 'pip install certifi' and then re-run the installer.
HMAC : (Module_Integrity) : Pass
SHA1 : (KAT_Digest) : Pass
SHA2 : (KAT_Digest) : Pass
SHA3 : (KAT_Digest) : Pass
TDES : (KAT_Cipher) : Pass
AES_GCM : (KAT_Cipher) : Pass
AES_ECB_Decrypt : (KAT_Cipher) : Pass
RSA : (KAT_Signature) : RNG : (Continuous_RNG_Test) : Pass
Pass
ECDSA : (PCT_Signature) : Pass
ECDSA : (PCT_Signature) : Pass
DSA : (PCT_Signature) : Pass
TLS13_KDF_EXTRACT : (KAT_KDF) : Pass
TLS13_KDF_EXPAND : (KAT_KDF) : Pass
TLS12_PRF : (KAT_KDF) : Pass
PBKDF2 : (KAT_KDF) : Pass
SSHKDF : (KAT_KDF) : Pass
KBKDF : (KAT_KDF) : Pass
HKDF : (KAT_KDF) : Pass
SSKDF : (KAT_KDF) : Pass
X963KDF : (KAT_KDF) : Pass
X942KDF : (KAT_KDF) : Pass
HASH : (DRBG) : Pass
CTR : (DRBG) : Pass
HMAC : (DRBG) : Pass
DH : (KAT_KA) : Pass
ECDH : (KAT_KA) : Pass
RSA_Encrypt : (KAT_AsymmetricCipher) : Pass
RSA_Decrypt : (KAT_AsymmetricCipher) : Pass
RSA_Decrypt : (KAT_AsymmetricCipher) : Pass
	name:     	OpenSSL FIPS Provider
	version:  	3.0.8
	build:    	3.0.8
INSTALL PASSED
* Setting access key
* Setting collector endpoint
* Setting collector port
* Setting connection security
* Adding additional configuration to dragent.yaml
Restarting dragent (via systemctl):                        [  OK  ]
```
これでエージェントのインストールは完了です。

## IBM Cloud Monitoringダッシュボードで確認
上端の`ダッシュボードを開く`をクリックし、IBM Cloud Monitoringダッシュボードに入ります。
![スクリーンショット 2024-02-19 18.57.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/77bd0a10-c14c-aba8-e3f4-05d86eb4d61c.png)

Monitoringエージェントが導入され、監視できる項目がグループ化されていることがわかります。
主に監視できる項目は以下となります。
1. statsd
2. sysdig_agent
3. sysdig_datastream
4. sysdig_fs
5. sysdig_host
6. sysdig_license
7. sysdig_program
8. sysdig_ts

![スクリーンショット 2024-02-19 18.59.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/57bc68cc-c058-ff67-ae87-17041da29faa.png)

各カテゴリーは以下のような[メトリック](https://docs.sysdig.com/en/docs/sysdig-monitor/using-monitor/metrics/metrics-library/prometheus-format/)を確認することができます。

<dl>
  <dt>1. statsd</dt>
  <dd>StatsDに関するメトリック</dd>
  <dt>2. sysdig_agent</dt>
  <dd>appcheck、Prometheus、StatsD統合から受信した時系列の合計数　等</dd>
  <dt>3. sysdig_datastream</dt>
  <dd>メトリック・ストリーミングを使用してエクスポートされた時系列の数　等</dd>
  <dt>4. sysdig_fs</dt>
  <dd>ファイルシステムの利用可能なスペース、ファイルシステムの空き領域の割合、ファイルシステムの使用済みスペース、使用中のすべてのファイルシステムの合計値　等</dd>
  <dt>5. sysdig_host</dt>
  <dd>コンテナやホストの数、CPU使用率、ファイルを開く際/アクセス時のエラーの数、1秒あたりのファイル読み取り操作の数、ファイルの読み取り時間、システムコールエラー数　等</dd>
  <dt>6. sysdig_license</dt>
  <dd>エージェント（ホストやworker node）から繋げている台数（デフォルト上限は1,000台）</dd>
  <dt>7. sysdig_program</dt>
  <dd>各プログラムの CPU コア使用率、使用されているファイル記述子の割合、ファイルを開く/アクセス時のエラー数、ファイルの書き込み時間、サーバー (アウトバウンド) 接続の数、受信ネットワークリクエストの数　等</dd>
  <dt>8. sysdig_ts</dt>
  <dd>20 分間隔でユーザーについて取り込まれた時系列の数、10 秒のウィンドウごとにユーザーについて取り込まれた時系列の数　等</dd>
</dl>

![スクリーンショット 2024-02-21 10.20.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626032/53678a3a-f0f8-bac7-f0b6-73a5dbe210e5.png)


## モニタリング・エージェントの削除
もしエージェントが不要になった場合、デプロイ時同様にコマンドを入力することで簡単に削除することができます。
なお、削除の際も同様にディストリビューションによってコマンドが異なります。

```shell:RHEL、CentOS、Fedora Linux　などの場合
sudo yum erase draios-agent
```

```shell:Debian、Ubuntu Linux　などの場合
sudo yum erase draios-agent
```