2.3. コアのセットアップと設定
ロールベースのアクセス制御、基本的なモニタリング、および Loki をデプロイするための Pod の配置。
2.3.1. LokiStack ルールの RBAC 権限の認可 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、クラスターロールをユーザー名にバインドすることで、ユーザーが独自のアラートおよび記録ルールを作成および管理できるようにすることができます。クラスターロールは、ユーザーに必要なロールベースのアクセス制御 (RBAC) 権限を含む ClusterRole
オブジェクトとして定義されます。
LokiStack では、アラートおよび記録ルール用の次のクラスターロールが利用できます。
ルール名 | 説明 |
---|---|
|
このロールを持つユーザーは、アラートルールを管理する管理レベルのアクセス権を持ちます。このクラスターロールは、 |
|
このロールを持つユーザーは、 |
|
このロールを持つユーザーは、 |
|
このロールを持つユーザーは、 |
|
このロールを持つユーザーは、記録ルールを管理する管理レベルのアクセス権を持ちます。このクラスターロールは、 |
|
このロールを持つユーザーは、 |
|
このロールを持つユーザーは、 |
|
このロールを持つユーザーは、 |
2.3.1.1. 例 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーにクラスターロールを適用するには、既存のクラスターロールを特定のユーザー名にバインドする必要があります。
クラスターロールは、使用するロールバインディングの種類に応じて、クラスタースコープまたは namespace スコープにすることができます。RoleBinding
オブジェクトを使用する場合は、oc adm policy add-role-to-user
コマンドを使用する場合と同様に、クラスターロールが指定した namespace にのみ適用されます。ClusterRoleBinding
オブジェクトを使用する場合は、oc adm policy add-cluster-role-to-user
コマンドを使用する場合と同様に、クラスターロールがクラスター内のすべての namespace に適用されます。
次のコマンド例では、指定したユーザーに、クラスター内の特定の namespace のアラートルールに対する作成、読み取り、更新、および削除 (CRUD) 権限を付与します。
特定の namespace のアラートルールに対する CRUD 権限を付与するクラスターロールバインディングコマンドの例
oc adm policy add-role-to-user alertingrules.loki.grafana.com-v1-admin -n <namespace> <username>
$ oc adm policy add-role-to-user alertingrules.loki.grafana.com-v1-admin -n <namespace> <username>
次のコマンドは、指定したユーザーに、すべての namespace のアラートルールに対する管理者権限を付与します。
管理者権限を付与するクラスターロールバインディングコマンドの例
oc adm policy add-cluster-role-to-user alertingrules.loki.grafana.com-v1-admin <username>
$ oc adm policy add-cluster-role-to-user alertingrules.loki.grafana.com-v1-admin <username>
2.3.2. Loki を使用したログベースのアラートルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
AlertingRule
CR には、単一の LokiStack
インスタンスのアラートルールグループを宣言するために使用する、仕様および Webhook 検証定義のセットが含まれます。Webhook 検証定義は、ルール検証条件もサポートします。
-
AlertingRule
CR に無効なinterval
期間が含まれる場合、無効なアラートルールです。 -
AlertingRule
CR に無効なfor
期間が含まれる場合、無効なアラートルールです。 -
AlertingRule
CR に無効な LogQLexpr
が含まれる場合、無効なアラートルールです。 -
AlertingRule
CR に同じ名前のグループが 2 つ含まれる場合、無効なアラートルールです。 - 上記のいずれも該当しない場合、アラートルールは有効とみなされます。
テナントタイプ | AlertingRule CR の有効な namespace |
---|---|
application |
|
audit |
|
infrastructure |
|
手順
AlertingRule
カスタムリソース (CR) を作成します。インフラストラクチャー
AlertingRule
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この
AlertingRule
CR が作成される namespace には、LokiStackspec.rules.namespaceSelector
定義に一致するラベルが必要です。 - 2
labels
ブロックは、LokiStack のspec.rules.selector
定義と一致する必要があります。- 3
infrastructure
テナントのAlertingRule
CR は、openshift-*
、kube-\*
、またはdefault
namespaces でのみサポートされます。- 4
kubernetes_namespace_name:
の値は、metadata.namespace
の値と一致する必要があります。- 5
- この必須フィールドの値は、
critical
、warning
、またはinfo
である必要があります。 - 6
- このフィールドは必須です。
- 7
- このフィールドは必須です。
アプリケーション
AlertingRule
CR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この
AlertingRule
CR が作成される namespace には、LokiStackspec.rules.namespaceSelector
定義に一致するラベルが必要です。 - 2
labels
ブロックは、LokiStack のspec.rules.selector
定義と一致する必要があります。- 3
kubernetes_namespace_name:
の値は、metadata.namespace
の値と一致する必要があります。- 4
- この必須フィールドの値は、
critical
、warning
、またはinfo
である必要があります。 - 5
- この必須フィールドの値は、ルールの概要です。
- 6
- この必須フィールドの値は、ルールの詳細な説明です。
AlertingRule
CR を適用します。oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.3. メンバーリストの作成の失敗を許容する Loki の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターでは、管理者は通常、非プライベート IP ネットワーク範囲を使用します。その結果、LokiStack メンバーリストはデフォルトでプライベート IP ネットワークのみを使用するため、LokiStack メンバーリストの設定は失敗します。
管理者は、メンバーリスト設定の Pod ネットワークを選択できます。LokiStack
カスタムリソース (CR) を変更して、hashRing
仕様で podIP
アドレスを使用できます。LokiStack
CR を設定するには、以下のコマンドを使用します。
oc patch LokiStack logging-loki -n openshift-logging --type=merge -p '{"spec": {"hashRing":{"memberlist":{"instanceAddrType":"podIP"},"type":"memberlist"}}}'
$ oc patch LokiStack logging-loki -n openshift-logging --type=merge -p '{"spec": {"hashRing":{"memberlist":{"instanceAddrType":"podIP"},"type":"memberlist"}}}'
podIP
を含む LokiStack の例
2.3.4. Loki でストリームベースの保持の有効化 リンクのコピーリンクがクリップボードにコピーされました!
ログストリームに基づいて保持ポリシーを設定できます。保持ルールは、グローバルに、テナントごと、またはその両方を設定できます。両方で設定すると、グローバルルールの前にテナントルールが適用されます。
s3 バケットまたは LokiStack カスタムリソース (CR) に保存期間が定義されていない場合、ログは削除されず、s3 バケットに永久に残り、s3 ストレージがいっぱいになる可能性があります。
-
Logging バージョン 5.9 以降はスキーマ
v12
をサポートしますが、今後の互換性にはスキーマv13
を推奨します。 コスト効率の高いログプルーニングの場合、保持ポリシーをオブジェクトストレージプロバイダーに直接設定します。ストレージプロバイダーのライフサイクル管理機能を使用して、古いログが自動的に削除されるようにします。これにより Loki からの追加処理や S3 へのリクエストの削除も回避されます。
オブジェクトストレージがライフサイクルポリシーをサポートしていない場合は、内部で保持するように LokiStack を設定する必要があります。サポートされる保持期間は最大 30 日です。
前提条件
- 管理者権限がある。
- Loki Operator がインストールされている。
-
OpenShift CLI (
oc
) がインストールされている。
手順
ストリームベースの保持を有効にするには、
LokiStack
CR を作成し、YAML ファイルとして保存します。次の例では、lokistack.yaml
という名前です。S3 のグローバルストリームベースの保持の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- すべてのログストリームの保持ポリシーを設定します。このポリシーは、オブジェクトストレージに保存されたログの保持期間には影響しません。
- 2
- retention ブロックを CR に追加して、クラスターでの
保持
を有効にします。 - 3
- LogQL クエリー を指定してログストリームを保持ルールに一致させます。
S3 のテナントごとのストリームベースの保持の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- テナントごとの保持ポリシーを設定します。有効なテナントタイプは、
application
、audit
、およびinfrastructure
です。 - 2
- LogQL クエリー を指定してログストリームを保持ルールに一致させます。
LokiStack
CR を適用します。oc apply -f lokistack.yaml
$ oc apply -f lokistack.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.5. Loki Pod の配置 リンクのコピーリンクがクリップボードにコピーされました!
Pod の toleration またはノードセレクターを使用して、Loki Pod が実行するノードを制御し、他のワークロードがそれらのノードを使用しないようにできます。
LokiStack カスタムリソース (CR) を使用して toleration をログストア Pod に適用し、ノード仕様を使用して taint をノードに適用できます。ノードの taint は、taint を容認しないすべての Pod を拒否するようノードに指示する key:value
ペアです。他の Pod にはない特定の key:value
ペアを使用すると、ログストア Pod のみがそのノードで実行できるようになります。
ノードセレクターを使用する LokiStack の例
ノードセレクターと toleration を使用する LokiStack CR の例
LokiStack (CR) の nodeSelector
フィールドと tolerations
フィールドを設定するには、oc explain
コマンドを使用して、特定のリソースの説明とフィールドを表示します。
oc explain lokistack.spec.template
$ oc explain lokistack.spec.template
出力例
詳細情報用に、特定のフィールドを追加できます。
oc explain lokistack.spec.template.compactor
$ oc explain lokistack.spec.template.compactor
出力例