Kubernetesリソースの監視中にフィルターを適用する

最終更新日:08年2022月XNUMX日

Argusは、LogicMonitorによって監視されているすべてのKubernetesリソースを検出します。 さらに、Argusを使用してリソースを監視から除外できます。

Argus構成ファイルのフィルターパラメーターの下にリソースフィルターを追加できます。 ルールエンジンはルールを順番に評価します。 最初のルールが満たされ、trueと評価されると、ルールエンジンはルールの評価を破り、リソースは除外されます。 ルールのセットは、リソースタイプに従ってグループ化されます。

構成例は次のとおりです。

filters:
  pods:
    - name =~ "nginx"
    - namespace == "kube-system"
  deployment:
    - name =~ "nginx"
    - namespace == "default"

LogicMonitorはオープンソースを使用しています ゴバリュエート フィルタ式を評価するためのライブラリ。 フィルタ式の構文の詳細については、を参照してください。  表現マニュアルを評価する.

ルールエンジン変数

ルールエンジンで使用できるようになっている次の変数を使用して、フィルタールールを記述できます。

変数名値のデータ型コメント
リソース名文字列
名前空間リソース名前空間文字列リソースが名前空間スコープでない場合は空
キーを変数名として持つリソースラベルキーに対するリソースラベルの値文字列
キーを変数名とするリソースアノテーションキーに対するリソース注釈の値文字列注釈とラベルで同じキーの場合、ラベル値の優先順位が高くなり、評価に使用されます

ルール作成ガイドライン

1. YAML変換全体でエラーを解析しないように、ルールは一重引用符で囲まれた文字列で記述する必要があります。

2.包含ルールと除外ルールなどの区別があってはなりません。 ルールが次のように評価された場合 true つまり、リソースが除外されます。

注意:場合によっては、ルールを単純化したい場合は、インクルードルールを記述し、その値を反転してエクスクルードルールにすることができます。

例:
単一の名前空間のリソースのみを監視する場合「フロントエンド」そしてルール
is'!(ns == "frontend")'

注意: 正規表現が機能しない場合があります。これには、式にドット(。)とハイフン(-)が含まれます。

ルールを作成するために利用可能な演算子

演算子製品説明コメント
==平等完全一致文字列ns == "default"
!=不平等正確な文字列と等しくありませんname != "nginx"
=~正規表現の一致ドットとハイフンを持つ正規表現が機能しない場合がありますname =~ "nginx"
接頭辞が次のようなリソース Nginx その名前で、リソースは除外されます
!~逆正規表現パターンに相当 !( )。name!〜“ nginx”は!(name =〜“ nginx”)と同等です
持っていないリソース Nginx 名前の中には除外されます
&&論理積左側の式が偽の場合は短絡ns == "default" && name =~ "nginx"。 これにより、デフォルトの名前空間のリソースが除外されます。 Nginx 名前に
||論理OR左側がtrueと評価された場合は短絡します。演算子は使用できますが、ルールのセットがORで接続されているため、左側と右側が論理的に接続されていない場合は、別のルールを作成する必要があります。
in配列のメンバーシップメンバーシップを確認するために等式==を実行しますns in ("kube-system", "kube-public")
これにより、言及された名前空間のリソースが除外されます
()グループ化する括弧
記事上で