ヘルプ 管理 監視の追加 カスタムLinuxプラグイン

カスタムLinuxプラグインの作成

属性それぞれにしきい値を決め、指定値超過時のアラートを選択できます。

プラグイン出力の形式:

プラグイン スクリプトは、JSONオブジェクトを返すものとします。JSONデータをSite24x7 Plusのサーバーに出力する際は、次のフォーマットに従ってください。

{      
        'plugin_version' : 1,
        'heartbeat_required' : true,
        'cpu' : 42.7,
        'memory' : 65.8,
        'network' : 156,
        'units' :
        {
              'cpu' : '%' ,
              'memory' : '%' ,
              'network' : 'MB'
         }
}
  1. plugin_version:プラグインのバージョン番号を示します。
    • こちらは必須項目です。
    • plugin_versionに変更があれば、Site24x7のデータセンターはテンプレートを更新し、当該バージョンむけに新規テンプレートを作成します。
    • デフォルト値は1です。プラグインに変化があれば、plugin_versionを1ずつ増やしてください。
    • plugin_versionには、整数のみを使用できます。例:1、2、3……
  2. heartbeat_required:プラグインにアラートが必要かを表します。
    • こちらは必須項目です。
    • プラグインからSite24x7データセンターに、データがまったく届かなくなると、プラグインのダウンと判断し、アラートします。
    • heartbeat_requiredの値はtrueかfalseです。
    • デフォルトでは、heartbeat_requiredの値はtrueです。
  3. units:監視する属性の単位
    • こちらは任意項目です。
    • これは、キー・バリューのペアとなっています。キーには、プラグインで監視する属性の名前を、バリューには、対応する単位を指定します。
    • プラグインでCPU利用率(%)を測定する場合の例:
      units : {
              'cpu':'%'
      }
  4. msg:監視のメッセージ
    • こちらは任意項目です。
    • 監視がダウンすると、設定したエラー メッセージが、Site24x7 Webクライアントに表示されます。
    • この属性は、データ属性にパラレルにおいてください。
カスタム プラグイン記述の手順:
  1. 最新のSite24x7 Linuxエージェントを、ダウンロード・インストールします。
  2. プラグインの記述には、ShellPythonを利用します。
  3. /opt/site24x7/monagent/plugins/<filename> にフォルダーを作り、プラグイン スクリプト ファイルをここに置きます。ファイル名とフォルダー名の双方が、同一であることを確認してください。
  4. 次回のエージェント データ収集の時に、プラグインが検出され、監視の対象になります。
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で確認ください。
関連記事: