カスタムLinuxプラグインの作成
属性それぞれにしきい値を決め、指定値超過時のアラートを選択できます。
プラグイン出力の形式:
プラグイン スクリプトは、JSONオブジェクトを返すものとします。JSONデータをSite24x7 Plusのサーバーに出力する際は、次のフォーマットに従ってください。
{
'plugin_version' : 1,
'heartbeat_required' : true,
'cpu' : 42.7,
'memory' : 65.8,
'network' : 156,
'units' :
{
'cpu'
: '%' ,
'memory' : '%' ,
'network' : 'MB'
}
}
- plugin_version:プラグインのバージョン番号を示します。
- こちらは必須項目です。
- plugin_versionに変更があれば、Site24x7のデータセンターはテンプレートを更新し、当該バージョンむけに新規テンプレートを作成します。
- デフォルト値は1です。プラグインに変化があれば、plugin_versionを1ずつ増やしてください。
- plugin_versionには、整数のみを使用できます。例:1、2、3……
- heartbeat_required:プラグインにアラートが必要かを表します。
- こちらは必須項目です。
- プラグインからSite24x7データセンターに、データがまったく届かなくなると、プラグインのダウンと判断し、アラートします。
- heartbeat_requiredの値はtrueかfalseです。
- デフォルトでは、heartbeat_requiredの値はtrueです。
- units:監視する属性の単位
- こちらは任意項目です。
- これは、キー・バリューのペアとなっています。キーには、プラグインで監視する属性の名前を、バリューには、対応する単位を指定します。
- プラグインでCPU利用率(%)を測定する場合の例:
units : {
'cpu':'%'
}
- msg:監視のメッセージ
- こちらは任意項目です。
- 監視がダウンすると、設定したエラー メッセージが、Site24x7 Webクライアントに表示されます。
- この属性は、データ属性にパラレルにおいてください。
カスタム プラグイン記述の手順:
- 最新のSite24x7 Linuxエージェントを、ダウンロード・インストールします。
- プラグインの記述には、ShellかPythonを利用します。
- /opt/site24x7/monagent/plugins/<filename> にフォルダーを作り、プラグイン スクリプト ファイルをここに置きます。ファイル名とフォルダー名の双方が、同一であることを確認してください。
- 次回のエージェント データ収集の時に、プラグインが検出され、監視の対象になります。
Linuxサーバーで開かれているファイルを監視するプラグインの記述(Python):
#!/usr/bin/python3
import sys,json
#このプラグインに影響する変更を行う際は、プラグインのバージョンを、ここで、1つ上げてください。
PLUGIN_VERSION = "1"
#この値をtrueにすると、プラグインのデータをサーバーに送出する際に通信の問題があれば、アラートが発生するようになります。
HEARTBEAT="true"
PROC_FILE = "/proc/sys/fs/file-nr"
METRIC_UNITS = {'open_files': 'units', 'total_files': 'units'}
def metricCollector():
data = {}
try:
open_nr, free_nr, max = open(PROC_FILE).readline().split("\t")
open_files = int(open_nr) - int(free_nr)
data["open_files"] = open_files
data["total_files"] = int(max)
except Exception as e:
print ("status error ",e)
data["error"] = str(e)
data["units"] = METRIC_UNITS
return data
if __name__ == "__main__":
result = metricCollector()
print(json.dumps(result, indent=4, sort_keys=True))
-
#!/usr/bin/python: プラグイン ファイルの冒頭で、「Shebang(#!)」を記載してください。これは、プラグイン ファイル実行時に、Pythonのパスとなります。
- PythonスクリプトはJSONデータを返すものとします。
JSON出力サンプル:
{
"open_files": 12512,
"total_files": 1620019,
"units": {
"open_files": "units",
"total_files": "units"
}
}
Site24x7ダッシュボードに表示されるデータ:
Linuxサーバーのファイル・ディレクトリ数を監視するプラグインの記述(Shell):
#!/bin/bash
# INPUT :
# DIRNAME = ファイルとディレクトリの数を取得する場所
# SEARCH_LEVEL = ファイルとディレクトリの数をカウントする際、内部ディレクトリをどこまで対象とするか
DIRNAME=.
SEARCH_LEVEL=1
PLUGIN_VERSION=1
HEARTBEAT=false
#METRICS_UNITS={file_count-'count',dir_count-'count'}
default_attributes="plugin_version:$PLUGIN_VERSION|heartbeat_required:$HEARTBEAT"
#default_attributes="$default_attributes|units:$METRICS_UNITS"
FILES=`find $DIRNAME -maxdepth $SEARCH_LEVEL -type f | wc -l`
DIRS=`find $DIRNAME/* -maxdepth $SEARCH_LEVEL -type d | wc -l`
attributes="file_count:$FILES|dir_count:$DIRS"
echo "$attributes|$default_attributes"
-
#!/bin/bash: プラグイン ファイルの冒頭で、「Shebang(#!)」を記載してください。これにより、スクリプトは常にbashで実行されるようになります。
- 出力結果はキー・バリューのペアです。他のペアとの間は、区切り記号「|」で分けてください。
出力サンプル:
file_count:164|dir_count:30|plugin_version:1|heartbeat_required:false
Site24x7ダッシュボードに表示されるデータ:
トラブルシュートのヒント:
プラグインのログはすべて、エージェント ログのディレクトリにあるplugins.txtにまとめられ、プラグインのトラブルシュートに利用できます。ログ ファイルは、opt/site24x7/monagent/logs/detailsで確認ください。
関連記事: