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") これは、言及された名前空間のリソースを除外します |
() | グループ化する括弧 |