多くのリソースやサービスは、ログにアクセスするためにAPIを使用します。しかし、APIはカスタマイズが煩雑で、APIフィルタもサポートしていません。LogSourceは、LM Logsを有効にし、ログデータの収集と転送を設定するためのテンプレートを提供するLogicModuleです。LogSourceには、取得するログの種類と取得場所、解析時に考慮する必要のあるフィールドに関する詳細情報が含まれています。

スクリプトログのLogSourceタイプを使用すると、APIスクリプトタイプのログをLogicMonitorにインポートするように設定できます。このLogSourceタイプは、APIを呼び出し、一定間隔でログデータを収集するスクリプトを使用します。

LogicMonitorを使用すると、システムがイベントをフィルターに基づいて取り込む方法のフィルターロジックを構成できます。 AND or OR オペレータ。

スクリプトログ LogSource を構成するための要件

スクリプト ログ LogSource を構成するには、次のものが必要です。

  • 使用するには OR フィルター演算子を使用する場合は、EA Collector 38.500以降をマシンにインストールしてください。詳細については、 コレクターの追加.

設定オプション

以下の情報は、スクリプトログタイプのログソースに固有の構成の詳細について説明しています。ログソースの追加方法に関する一般的な情報については、以下を参照してください。 LogSource の構成.

基本情報

 収集間隔 ドロップダウンメニューから、スクリプトを実行する時間間隔を選択してください。デフォルトは1時間です。 

新しいログソースページを追加

収集

 収集 セクションで指定したリソースからログ データを収集するための Groovy 形式のインポート スクリプトを追加します。 に適用されます のセクションから無料でダウンロードできます。 

コレクションページ

注意: インポートを機能させるには、AppliesTo 条件が目的のリソースと正しく一致していることを確認してください。また、マッピングされたリソースの少なくとも 1 つに対して「管理」権限が必要です。詳細については、以下を参照してください。 役割.

フィルタを含める

切り替えることができます ANDの代わりにORを使用する スイッチを使用してフィルターを評価する AND or OR 演算子。デフォルトでは、 ANDの代わりにORを使用する スイッチは無効です。以下の演算子を使用してフィルターを評価できます。

  • AND 演算子—フィルターは AND 演算子。指定されたすべてのフィルターに一致するイベントがシステムによって取り込まれます。 
  • OR 演算子— ANDの代わりにORを使用する スイッチを使用してフィルターを評価する OR 演算子。システムは、少なくとも 1 つのフィルターに一致するイベントを取り込みます。

フィルタを追加して、アプリケーションなどの特定のタイプのリソースを含めることができます。 フィルター条件に一致する出力は、ログ取り込みプロセスに転送されます。

以下の表に、使用可能なパラメータを示します。

Attributes比較演算子値の例
メッセージ含む、含まない、正規表現一致、正規表現不一致メッセージの一部である任意の文字列。

ログフィールド

ログフィールド (タグ) を構成して、ログとともに追加のメタデータを送信できます。 

以下の表に、使用可能なパラメータを示します。

方法主な例値の例 詳細説明
静的"お客様"「顧客_XYZ」
ダイナミック(REGEX)"ホスト"「ホスト=*」クエリはメッセージフィールドに対して実行されます。
LM プロパティ(トークン)"端末"「##system.deviceId##」LogicMonitorの既存のデバイスプロパティから抽出されたデバイスID。

リソースマッピング

監視対象リソースと一致するように LM ログ プロパティを構成します。

以下の表に、使用可能なパラメータを示します。

方法主な例値の例 詳細説明
静的"顧客ID""1921"
ダイナミック(REGEX)「システム.サービス名」「サービス=*」クエリはメッセージフィールドに対して実行されます。
LM プロパティ(トークン)「token.resourceMap」「syslog_test_collector」LogicMonitorの既存のデバイスプロパティから抽出されたデバイスID。
動的グループ正規表現「system.ServiceName」、「system.Region」「サービス=([^ ]+).*地域=([^ ]+)」このクエリは、スクリプトログソースのメッセージフィールドに対して実行され、正規表現(regex)からグループ値をキャプチャします。
動的グループ正規表現のキーは、カンマ区切りのリストとして追加できます。
指定された正規表現グループから値が取得されます。
この例では、キー (system.ServiceName (NAIST) と system.Regionスクリプトの出力に基づいて、ログを適切なサービスとリージョンの値にマッピングします。
お願いEA Collector 40.700以降では、スクリプトログソースのリソースマッピングに動的グループ正規表現メソッドを使用できます。

以下のガイドラインでは、ログイベントを取得するためのインポートスクリプトの作成方法について説明します。スクリプトを 収集 LogSource 構成のセクション。

ログイベントはJSONオブジェクトです。出力用のJSONオブジェクトを作成する際は、以下のガイドラインに従ってください。

  • JSON オブジェクトには、必須のカスタマイズされたイベント属性がすべて含まれています。
  • これには、JSON 配列と、「ステータス」や「メッセージ」など、スクリプトのステータスを示すその他の属性が含まれています。
  • JSON配列には、LogicMonitorに報告されるすべてのイベントが含まれています。

次の構文は、出力 JSON オブジェクトを示しています。

output            ::= "{" "events" : "[" event ["," event]+ "]"," scriptAttribute]+ "}"
event             ::= "{" messageAttribute ["," customAttribute]+}
messageAttribute  ::= "message" ":" messageText
customAttribute   ::= attributeName ":" attributeValue
messageText       ::= <any string text>
attributeName     ::= <any valid name string allowed in system>
attributeValue    ::= <any string text>

注意:

  • messageAttribute は必須です。出力内のパラメータを解析できない場合、対応するログイベントは無効として破棄されます。
  • 含めることができる timestamp JSONオブジェクト内のフィールド。このフィールドが存在する場合、LogicMonitor Collectorは取り込み時にこのタイムスタンプを使用します。存在しない場合は、スクリプトからメッセージを受信した時刻がデフォルト値として使用されます。

単一イベントとしてのスクリプト出力

{
   "events": [
                {
                   "message":"This is the message of the event",
                   "customAttribute":"This is a custom attribute"
                }
            ]
}

Exit Code

インポートスクリプトには、 成功終了コード 実行が成功したことを示します。 

  • 任意の整数値を指定できます。 デフォルト値は「0」で、実行が成功したことを示します。
  • 出力は、スクリプトが終了コード 0 で完了する場合にのみ処理されます。終了コードが指定されていない場合、部分的なイベント処理を避けるために、出力は破棄されます。

Jsonとしてスクリプト出力(println行)

このサンプル スクリプトは、「json (println 行)」として出力を提供し、実行が成功したことを示すリターン コード「0」を含みます。 このスクリプトには、イベント配列に必須の「メッセージ」属性も含まれています。

import groovy.json.*
 def get = new URL("sone-url").openConnection();
 def getRC = get.getInputStream().getText() 
 def json = new JsonSlurper().parseText(getRC)
 json.each { it.putAt("message", it.getAt("description")) }
 json.each { it.remove("description") }
 JsonBuilder builder = new JsonBuilder(json)
 builder {
 events builder (json)
  }       println(builder.toPrettyString())
 return 0