Kubernetes リソースを監視しながらフィルターを適用する (新規)

最終更新日: 27 年 2023 月 XNUMX 日

フィルター パラメーターの下の Argus 構成ファイルにリソース フィルターを追加できます。 ルール エンジンはルールを順番に評価します。 最初のルールが満たされ、true と評価されると、ルール エンジンはルールの評価を中断し、リソースは除外されます。

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

フィルタ説明
'type in ("pod", "deployment") && name =~ "nginx"'ポッドとデプロイメントの名前に含まれる場合 nginx、それらのポッドとデプロイメントは除外されます。
'!(type == "pod" && namespace == "kube-system")'ホワイトリスト ルールとして単純化するルールを否定します。 kube-system 名前空間の Pod のみが監視され、残りは除外されます。
'namespace == "default"'デフォルト名前空間のすべてのリソースを除外します。
'!(type != "replicaset" && ns == "logicmonitor")'LogicMonitor 名前空間のレプリカセットを除外します。残りのリソースは含まれます。 さらに、この規則は 'type == "replicaset" && ns == "logicmonitor"

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

ルールエンジン変数

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

変数名値のデータ型コメント
typeリソースタイプ文字列次の演算子は型変数で機能します: “==”, “!=”, “in”注: (既知の問題): 配列に要素が XNUMX つしかない場合、型変数の in 演算子は機能しません。
リソース名文字列
名前空間リソース名前空間文字列リソースがネームスペース スコープでない場合は空です。
キーを変数名として持つリソースラベルキーに対するリソースラベルの値文字列注: 毎回 ゴバリュエート ドキュメンテーションでは、特殊文字を含む変数名をエスケープする必要があります。 ドット (.)、ハイフン (-) などを角かっこで囲みます。
キーを変数名とするリソースアノテーションキーに対するリソース注釈の値文字列注: 毎回 ゴバリュエート ドキュメンテーションでは、特殊文字を含む変数名をエスケープする必要があります。 ドット (.)、ハイフン (-) などを角かっこで囲みます。

Note: 注釈とラベルに同じキーが使用されている場合、ラベル値が優先され、評価に使用されます。

ルール作成ガイドライン

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

2. 包含ルールと除外ルールなどの区別があってはなりません。 ルールが true と評価された場合、リソースが除外されたことを意味します。

Note: 場合によっては、ルールを単純化したい場合は、包含ルールを記述し、その値を反転して除外ルールを作成します。

:

単一の名前空間フロントエンドのリソースのみを監視するには、ルールを使用します
is'!(ns == "frontend")'

注: 毎回 ゴバリュエート ドキュメンテーション、特殊文字を含む変数名をエスケープします。 ドット (.)、ハイフン (-) などを角かっこで囲みます。

Web サービス ラベルを追加しました それぞれの価値を持つリソースについて。 残りのすべてのサービスの残りのリソースを除外して、ユーザー Web サービス リソースのみを監視する場合は、ルールを次のように記述できます。 '!([web-service] == "user")' – ここで角括弧は、ルールの解析中に、その中のすべてを変数名として定義します。 web-service 変数を囲み忘れた場合、Govaluate はそれを数式 web -(マイナス) service にします。 期待どおりにリソースを除外しません。

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

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

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

フィルター パラメーターの下の Argus 構成ファイルにリソース フィルターを追加できます。 ルール エンジンはルールを順番に評価します。 最初のルールが満たされ、true と評価されると、ルール エンジンはルールの評価を中断し、リソースは除外されます。

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

フィルタ説明
'type in ("pod", "deployment") && name =~ "nginx"'ポッドとデプロイメントの名前に含まれる場合 nginx、それらのポッドとデプロイメントは除外されます。
'!(type == "pod" && namespace == "kube-system")'ホワイトリスト ルールとして単純化するルールを否定します。 kube-system 名前空間の Pod のみが監視され、残りは除外されます。
'namespace == "default"'デフォルト名前空間のすべてのリソースを除外します。
'!(type != "replicaset" && ns == "logicmonitor")'LogicMonitor 名前空間のレプリカセットを除外します。残りのリソースは含まれます。 さらに、この規則は 'type == "replicaset" && ns == "logicmonitor"

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

ルールエンジン変数

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

変数名値のデータ型コメント
typeリソースタイプ文字列次の演算子は型変数で機能します: “==”, “!=”, “in”注: (既知の問題): 配列に要素が XNUMX つしかない場合、型変数の in 演算子は機能しません。
リソース名文字列
名前空間リソース名前空間文字列リソースがネームスペース スコープでない場合は空です。
キーを変数名として持つリソースラベルキーに対するリソースラベルの値文字列注: 毎回 ゴバリュエート ドキュメンテーションでは、特殊文字を含む変数名をエスケープする必要があります。 ドット (.)、ハイフン (-) などを角かっこで囲みます。
キーを変数名とするリソースアノテーションキーに対するリソース注釈の値文字列注: 毎回 ゴバリュエート ドキュメンテーションでは、特殊文字を含む変数名をエスケープする必要があります。 ドット (.)、ハイフン (-) などを角かっこで囲みます。

Note: 注釈とラベルに同じキーが使用されている場合、ラベル値が優先され、評価に使用されます。

ルール作成ガイドライン

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

2. 包含ルールと除外ルールなどの区別があってはなりません。 ルールが true と評価された場合、リソースが除外されたことを意味します。

Note: 場合によっては、ルールを単純化したい場合は、包含ルールを記述し、その値を反転して除外ルールを作成します。

:

単一の名前空間フロントエンドのリソースのみを監視するには、ルールを使用します
is'!(ns == "frontend")'

注: 毎回 ゴバリュエート ドキュメンテーション、特殊文字を含む変数名をエスケープします。 ドット (.)、ハイフン (-) などを角かっこで囲みます。

Web サービス ラベルを追加しました それぞれの価値を持つリソースについて。 残りのすべてのサービスの残りのリソースを除外して、ユーザー Web サービス リソースのみを監視する場合は、ルールを次のように記述できます。 '!([web-service] == "user")' – ここで角括弧は、ルールの解析中に、その中のすべてを変数名として定義します。 web-service 変数を囲み忘れた場合、Govaluate はそれを数式 web -(マイナス) service にします。 期待どおりにリソースを除外しません。

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

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