カスタム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で確認ください。
                        
                        関連記事: