第12章 イベントフィルタープラグイン
イベントには、ルールエンジンに過度の負荷をかける余分なデータが含まれている場合があります。イベントフィルターを使用して余分なデータを削除することで、ルールにとって重要なものに絞り込むことができます。イベントフィルターは、ルール条件とデータの照合をより適切に行うために、データの形式を変更することもあります。
イベントは Python コードとして定義され、コレクションとして提供されます。デフォルトの eda コレクション には次のフィルターがあります。
| 名前 | 説明 |
|---|---|
| json_filter | このフィルターは、イベントオブジェクトからキーを追加または除外します。 |
| dashes_to_underscores | このフィルターは、ペイロード内のすべてのキーのダッシュをアンダースコアに変更します。 |
| ansible.eda.insert_hosts_to_meta | このフィルターは、ansible-rulebook がイベントを検出して使用できるように、イベントにホスト情報を追加するために使用されます。 |
| ansible.eda.normalize_keys | このフィルターは、英数字以外のキーをアンダースコアに変更する場合に使用します。 |
イベントフィルターは次々と連結することができます。その場合、更新されたデータが、フィルターから次のフィルターに送信されます。イベントフィルターは、ソースを定義した後にルールブックで定義します。ルールブックがソースプラグインを起動すると、正しいフィルターが関連付けられ、データがキューに追加される前に変換されます。
この例では、データがまず json_filter を通過し、次に dashes_to_underscores フィルターを通過します。イベントペイロードでは、キーに文字、数字、アンダースコアのみを含めることができます。ネストされたキーにアクセスするには、ピリオド (.) を使用します。
すべてのイベントはイベントの発生元を記録する必要があるため、source name、type、および received_at を追加するために、フィルター eda.builtin.insert_meta_info が ansible-rulebook によって自動的に追加されます。received_at には、日付時刻が UTC ISO8601 形式で格納され、マイクロ秒が含まれます。uuid には、イベントの一意の ID が格納されます。meta key は、イベントに関するメタデータを格納するために使用されます。これは、aap サーバー内のイベントを正確に報告するために必要です。
12.1. イベントフィルターの作成 リンクのコピーリンクがクリップボードにコピーされました!
イベントフィルターは、イベントデータに対して変換を実行する Python モジュール内の関数です。イベントフィルターを使用すると、イベントデータ構造内の任意のデータを削除、追加、変更、または移動できます。イベントフィルターは、イベントを最初の引数として受け取ります。ルールブックの設定によって、追加のキーワード引数が提供されます。
基本的な構造は次のとおりです。
my_namespace.my_collection/extensions/eda/plugins/event_filter/my_filter.py
# my_namespace.my_collection/extensions/eda/plugins/event_filter/my_filter.py
def main(event: dict, arg1, arg2):
# Process event data here
return event
このフィルターをルールブックで使用するには、イベントソースのフィルターリストに追加します。
関連情報
作成方法の詳細な例は、ansible.eda コレクション のイベントフィルタープラグインを参照してください。