OCI Log AnalyticsにOSコマンド・スクリプトの機能が追加されました。まずはこちらのスライドをご覧ください。

OS上で実行させるスクリプトの実行結果Monitoringのようなメトリックデータを生成したりグラフ化させるということが可能です。今回は、ディスク容量を確認するdfコマンドの結果を収集して、グラフ化させるための一連の手順を紹介します。
OSコマンド・スクリプトは、管理エージェントが実行し、Log Analyticsにアップロードするという方式になります。事前に管理エージェントが動作しているインスタンスが必要になりますので、無い場合はこちらを参考にインスタンスを準備して下さい。
管理エージェントが実行するスクリプトを準備
#OSコマンドのスクリプトは以下のディレクトリに配置する
# 管理エージェントの場合: /opt/oracle/mgmt_agent/agent_inst/state/laStorage/os_cmd/scripts
# Cloud Agentの管理エージェント・プラグインの場合: /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/state/laStorage/os_cmd/scripts
#下記のdfコマンドのスクリプトを指定ディレクトリに作成する (ここではCloud Agentの場合)
sudo vi /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/state/laStorage/os_cmd/scripts/dfresult.sh
#ファイルの実行権限をCloud Agentのユーザーに付与
sudo setfacl -m u:oracle-cloud-agent:rwx /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/state/laStorage/os_cmd/scripts/dfresult.sh
#Cloud AgentのユーザーとしてファイルアクセスできればOK
sudo -u oracle-cloud-agent head -5 /var/lib/oracle-cloud-agent/plugins/oci-managementagent/polaris/agent_inst/state/laStorage/os_cmd/scripts/dfresult.sh
#ディスク使用率を出力するスクリプト
#!/bin/sh
df -B1 --output=source,size,used,avail,pcent,target | tail -n +2
フィールドの作成
dfの実行結果の値に対してマッピングさせる独自フィールドを定義する
フィールド -> フィールドの作成をクリックし、名前をfilesystem、データ型を文字列で作成

同様の手順で以下の組み合わせとしてユーザー定義フィールドを作成する
| フィールド名 | データ型 |
|---|---|
| filesystem | 文字列 |
| size | 長 (long) |
| used | 長 (long) |
| available | 長 (long) |
| use% | 長 (long) |
| mounted on | 文字列 |
パーサーの作成
dfの結果を解析してフィールドにマッピングするパーサーを作成する
パーサー -> パーサーの作成 -> 正規表現タイプをクリック

任意の名前を付け、下記のdfの結果をコピーして、サンプルのログ・コンテンツに張り付けて次に

dfの結果
devtmpfs 6063357952 0 6063357952 0% /dev
tmpfs 6116732928 0 6116732928 0% /dev/shm
tmpfs 6116732928 9244672 6107488256 1% /run
tmpfs 6116732928 0 6116732928 0% /sys/fs/cgroup
/dev/mapper/ocivolume-root 38099222528 36104892416 1994330112 95% /
/dev/sda2 1063256064 407007232 656248832 39% /boot
/dev/sda1 104634368 6246400 98387968 6% /boot/efi
ログの赤字の部分をドラッグし、フィールドをfilesystemを選択してフィールドの抽出を実行

同様の手順で、 2番目の値->size, 3番目の値->used, 4番目の値->available, 5番目の値->use% (※ドラッグは%の前の数字のみ), 6番目の値->mount onを指定する。

ソースの作成
任意の名前、ソースタイプはOS Command、エンティティタイプは、Host(Linux)、パーサーは作成したパーサーを指定、コマンドは先ほど作成したスクリプトのファイル名を指定して作成。
実行間隔(デフォルト30秒)を変更したい場合は、エージェント収集プロパティからCustomized Scheduleを変更できる
関連付けられていないエンティティから、実行するエンティティをチェックしてアソシエーションの追加をクリックする

しばらく待ってログ・エクスプローラーにdf結果のログが出力されていれば完了
ログ・エクスプローラーでをグラフを作成
ログデータを基にMonitoringのような線グラフを作成する
ログ・エクスプローラから、ログソースとfilesystemを/dev/sda1, /dev/sda2でフィルタし、ビジュアライゼーションでヒストグラム付きレコードにする。30秒間隔でそれぞれのログが収集できていることが分かる

ビジュアライゼーションをサマリー表に変更し、クエリーに以下の赤字の部分を追加する。これは、既存のログフィールドはByteなので、MByteに変換した仮想フィールドをそれぞれ生成している
'Log Source' = fileusage and Filesystem in ('/dev/sda1', '/dev/sda2') | eval sizemb = unit(size / (1024 * 1024), mb) | eval usedmb = unit(used / (1024 * 1024), mb) | eval availablemb = unit(available / (1024 * 1024), mb) | timestats count as logrecords by 'Log Source' | sort -logrecords

左下の計算済みフィールドから、sizemb, usermb,availablembを値にドラッグ&ドロップし、▽アイコンをクリックして、平均に値を変更する。サマリー表の値がMB表記でそれぞれの平均値に代わっていればOK。

設定は以上です。時間スケールの変更や選択しなかったフィールドなども追加して動作を確認してみて下さい。
また、この問い合わせを保存してダッシュボードに配置するなどして、Monitoringのような独自の監視画面などを作成するなどもできるかと思います。





