TIPCommon.smp_time

TIPCommon.smp_time モジュールは、統合内で時間データを処理するための包括的なツールセットを提供します。タイムゾーンの変更、コネクタのタイムスタンプの永続性、アクションとコネクタで実行タイムアウトが近づいていることを検出する重要なモニタリング機能などの複雑なタスクを簡素化します。

時間の変換と操作

これらのユーティリティは、Unix タイムスタンプ、RFC 3339 文字列、Python datetime オブジェクトなど、さまざまな形式間で時間データを変換するための標準化されたメソッドを提供します。

関数 パラメータ 説明
change_timezone()
  • dtime:(datetime)ソース オブジェクト。
  • current_tz: (str)現在のタイムゾーン名。
  • new_tz:(文字列)ターゲット タイムゾーン名。
戻り値: datetime.datetime

datetime オブジェクトを新しいタイムゾーンにシフトします。いずれかのタイムゾーン文字列が無効な場合は ValueError を発生させます。

convert_string_to_timestamp()
  • datetime_string:(str)ソース文字列。
戻り値: int

日時文字列を解析し、同等の Unix タイムスタンプを返します。

datetime_to_rfc3339()
  • datetime_obj:(datetime)ソース オブジェクト。
戻り値: str

datetime オブジェクトを RFC 3339 準拠の文字列に変換します。

get_timestamps()
  • range_string:(str)名前付き期間。
  • start_time_string:(str)開始境界。
  • end_time_string:(str)終了境界。
  • error_message: (str)カスタム例外テキスト。
  • time_in_milliseconds:(bool)デフォルトは False です。
戻り値: tuple[int, int]

範囲の説明と境界文字列に基づいて、開始と終了の Unix タイムスタンプを計算します。

get_timestamps_from_range()
  • range_string:(str)名前付きプラットフォーム範囲。
  • include_timezone:(bool)True の場合、TZ 情報を含みます。
戻り値: tuple[datetime, datetime]

プラットフォーム固有の期間文字列から派生した開始日時オブジェクトと終了日時オブジェクトを計算します。

状態と永続性

コネクタで重複する取り込みを回避するには、「最終実行時間」を保持することが重要です。これらの関数は、プラットフォームと直接やり取りして実行チェックポイントを管理します。

関数 パラメータ 説明
get_last_success_time()
  • siemplify:(ChronicleSOAR)SDK インスタンス。
  • offset_with_metric: (辞書)フォールバック オフセット。
  • time_format:(整数)DATETIME(1)または UNIX(2)。
  • print_value: (bool)True の場合、コンソールにログを記録します。
  • microtime: (bool)精度の切り替え。
戻り値: time(DataModel)

最後に成功した実行時間を取得します。存在しない場合は、オフセットに基づいてフォールバックを計算します。

save_timestamp()
  • siemplify:(ChronicleSOAR)SDK インスタンス。
  • alerts:(辞書)処理済みアラートのバッチ。
  • timestamp_key:(str)デフォルトは 'timestamp' です。
  • incrementation_value: (int)結果に追加するミリ秒数。
  • log_timestamp: (bool)True の場合、コンソールにログを記録します。
  • convert_timestamp_to_micro_time: (bool)切り替え。
  • convert_a_string_timestamp_to_unix: (bool)切り替え。
戻り値: bool

アラート バッチ内の最新のタイムスタンプを見つけて保存します。状態が更新された場合は True を返します。

siemplify_fetch_timestamp()
  • siemplify:(ChronicleSOAR)SDK インスタンス。
  • datetime_format: (bool)オブジェクトの戻り値を切り替えます。
  • timezone: (bool)True の場合、UTC を強制します。
戻り値: int | datetime

現在の実行チェックポイントをプラットフォーム データベースから直接取得します。

siemplify_save_timestamp()
  • siemplify:(ChronicleSOAR)SDK インスタンス。
  • new_timestamp:(int)保存する値。
  • datetime_format: (bool)デフォルトは False です。
  • timezone: (bool)デフォルトは False です。
戻り値: None

プラットフォームの実行チェックポイントを特定の新しい値で更新します。

validate_timestamp()
  • last_run_timestamp:(日時)チェック値。
  • offset_in_hours:(int)最大ルックバック ウィンドウ。
  • offset_is_in_days:(bool)日単位のロジックの切り替え。
戻り値: datetime

タイムスタンプが許容される期間内であることを確認します。範囲外の場合は ValueError を発生させます。

実行のモニタリング

タイムアウト モニタリングは重要な安全機能です。これらの関数は、スクリプトが処理時間を使い果たしそうになったときにスクリプトを識別し、スクリプトを正常に停止して現在の状態を保存できるようにします。

関数 パラメータ 説明
is_approaching_action_timeout()
  • action_execution_deadline_in_unix:(整数)期限。
  • timeout_threshold_in_sec:(int)バッファ。デフォルトは 10 です。
戻り値: bool

アクション スクリプトが終了前の最終バッファ期間内にあるかどうかを確認します。

is_approaching_timeout()
  • connector_starting_time:(整数)開始時間。
  • python_process_timeout:(int)最大期間。
  • timeout_threshold:(float)0.9 (TIMEOUT_THRESHOLD)。
戻り値: bool

90% の TIMEOUT_THRESHOLD に基づいて、コネクタが時間予算を消費したかどうかを検出します。