11.2. 사용자 정의 로깅 경고


5.7 이상 버전을 로깅할 때 사용자는 사용자 지정 경고 및 기록된 메트릭을 생성하도록 LokiStack 배포를 구성할 수 있습니다. 사용자 지정 경고 및 레코딩 규칙을 사용하려면 LokiStack 룰러 구성 요소를 활성화해야 합니다.

LokiStack 로그 기반 경고 및 기록된 메트릭은 룰러 구성 요소에 LogQL 표현식을 제공하여 트리거됩니다. Loki Operator는 선택한 LokiStack 크기에 최적화된 룰러를 관리합니다. 1x.extra- undercloud ,1x. windows 또는 1x.medium.

이러한 표현식을 제공하려면 Prometheus 호환 경고 규칙 이나 Prometheus 호환 레코딩 규칙이 포함된 RecordingRule CR을 포함하는 Alerting Rule 사용자 정의 리소스(CR)를 생성해야 합니다.

관리자는 애플리케이션,감사 또는 인프라 테넌트에 대한 로그 기반 경고 또는 기록된 지표를 구성할 수 있습니다. 관리자 권한이 없는 사용자는 액세스할 수 있는 애플리케이션의 애플리케이션 테넌트에 대한 로그 기반 경고 또는 기록된 지표를 구성할 수 있습니다.

로컬 Alertmanager 인스턴스를 비활성화하지 않는 한 애플리케이션, 감사 및 인프라 경고는 기본적으로 openshift-monitoring 네임스페이스의 OpenShift Container Platform 모니터링 스택 Alertmanager로 전송됩니다. openshift-user-workload-monitoring 네임스페이스에서 사용자 정의 프로젝트를 모니터링하는 데 사용되는 Alertmanager가 활성화된 경우 기본적으로 애플리케이션 경고가 이 네임스페이스의 Alertmanager로 전송됩니다.

11.2.1. 룰러 구성

LokiStack 룰러 구성 요소가 활성화되면 사용자는 로깅 경고 또는 기록된 메트릭을 트리거하는 LogQL 표현식 그룹을 정의할 수 있습니다.

관리자는 LokiStack CR(사용자 정의 리소스)을 수정하여 룰러를 활성화할 수 있습니다.

사전 요구 사항

  • Red Hat OpenShift Logging Operator 및 Loki Operator를 설치했습니다.
  • LokiStack CR을 생성했습니다.
  • 관리자 권한이 있습니다.

절차

  • LokiStack CR에 다음 사양 구성이 포함되어 있는지 확인하여 룰러를 활성화합니다.

    apiVersion: loki.grafana.com/v1
    kind: LokiStack
    metadata:
      name: <name>
      namespace: <namespace>
    spec:
    # ...
      rules:
        enabled: true 1
        selector:
          matchLabels:
            openshift.io/<label_name>: "true" 2
        namespaceSelector:
          matchLabels:
            openshift.io/<label_name>: "true" 3
    1
    클러스터에서 Loki 경고 및 레코딩 규칙을 활성화합니다.
    2
    로깅 경고 및 메트릭 사용을 활성화하려는 네임스페이스에 추가할 수 있는 사용자 정의 레이블을 추가합니다.
    3
    로깅 경고 및 메트릭 사용을 활성화하려는 네임스페이스에 추가할 수 있는 사용자 정의 레이블을 추가합니다.

11.2.2. LokiStack 규칙 RBAC 권한 승인

관리자는 클러스터 역할을 사용자 이름에 바인딩하여 사용자가 자체 경고 및 레코딩 규칙을 생성하고 관리할 수 있습니다. 클러스터 역할은 사용자에게 필요한 RBAC(역할 기반 액세스 제어) 권한이 포함된 ClusterRole 오브젝트로 정의됩니다.

로깅 5.8 이상에서는 LokiStack에 경고 및 레코딩 규칙에 대한 다음 클러스터 역할을 사용할 수 있습니다.

규칙 이름설명

alertingrules.loki.grafana.com-v1-admin

이 역할의 사용자에게는 경고 규칙을 관리할 수 있는 관리 수준 액세스 권한이 있습니다. 이 클러스터 역할은 loki.grafana.com/v1 API 그룹 내에서 AlertingRule 리소스를 생성, 읽기, 업데이트, 삭제, 나열 및 조사할 수 있는 권한을 부여합니다.

alertingrules.loki.grafana.com-v1-crdview

이 역할의 사용자는 loki.grafana.com/v1 API 그룹 내의 AlertingRule 리소스와 관련된 CRD(Custom Resource Definitions)의 정의를 볼 수 있지만 이러한 리소스를 수정하거나 관리할 수 있는 권한은 없습니다.

alertingrules.loki.grafana.com-v1-edit

이 역할의 사용자는 AlertingRule 리소스를 생성, 업데이트 및 삭제할 수 있는 권한이 있습니다.

alertingrules.loki.grafana.com-v1-view

이 역할의 사용자는 loki.grafana.com/v1 API 그룹 내에서 AlertingRule 리소스를 읽을 수 있습니다. 기존 경고 규칙에 대한 구성, 라벨 및 주석을 검사할 수 있지만 수정할 수는 없습니다.

recordingrules.loki.grafana.com-v1-admin

이 역할의 사용자는 레코딩 규칙을 관리할 수 있는 관리 수준의 액세스 권한이 있습니다. 이 클러스터 역할은 loki.grafana.com/v1 API 그룹 내의 RecordingRule 리소스를 생성, 읽기, 업데이트, 삭제, 나열 및 감시할 수 있는 권한을 부여합니다.

recordingrules.loki.grafana.com-v1-crdview

이 역할의 사용자는 loki.grafana.com/v1 API 그룹 내의 RecordingRule 리소스와 관련된 CRD(Custom Resource Definitions)의 정의를 볼 수 있지만 이러한 리소스를 수정하거나 관리할 수 있는 권한은 없습니다.

recordingrules.loki.grafana.com-v1-edit

이 역할의 사용자는 RecordingRule 리소스를 생성, 업데이트 및 삭제할 수 있는 권한이 있습니다.

recordingrules.loki.grafana.com-v1-view

이 역할의 사용자는 loki.grafana.com/v1 API 그룹 내에서 RecordingRule 리소스를 읽을 수 있습니다. 기존 경고 규칙에 대한 구성, 라벨 및 주석을 검사할 수 있지만 수정할 수는 없습니다.

11.2.2.1. 예

사용자의 클러스터 역할을 적용하려면 기존 클러스터 역할을 특정 사용자 이름에 바인딩해야 합니다.

클러스터 역할은 사용하는 역할 바인딩 유형에 따라 클러스터 또는 네임스페이스 범위일 수 있습니다. RoleBinding 오브젝트가 사용되는 경우 oc adm policy add-role-to-user 명령을 사용하는 경우 클러스터 역할은 지정된 네임스페이스에만 적용됩니다. oc adm policy add-cluster-role-to-user 명령을 사용할 때 ClusterRoleBinding 오브젝트가 사용되는 경우 클러스터 역할은 클러스터의 모든 네임스페이스에 적용됩니다.

다음 예제 명령은 클러스터의 특정 네임스페이스의 경고 규칙에 대해 지정된 사용자 생성, 읽기, 업데이트 및 삭제(CRUD) 권한을 제공합니다.

특정 네임스페이스에서 경고 규칙 CRUD 권한에 대한 클러스터 역할 바인딩 명령의 예

$ oc adm policy add-role-to-user alertingrules.loki.grafana.com-v1-admin -n <namespace> <username>

다음 명령은 모든 네임스페이스의 경고 규칙에 대해 지정된 사용자 관리자 권한을 부여합니다.

관리자 권한에 대한 클러스터 역할 바인딩 명령의 예

$ oc adm policy add-cluster-role-to-user alertingrules.loki.grafana.com-v1-admin <username>

11.2.3. Loki를 사용하여 로그 기반 경고 규칙 생성

AlertingRule CR에는 단일 LokiStack 인스턴스에 대한 경고 규칙 그룹을 선언하는 일련의 사양 및 Webhook 검증 정의가 포함되어 있습니다. 또한 Webhook 검증 정의에서는 규칙 검증 조건을 지원합니다.

  • AlertingRule CR에 유효하지 않은 간격 기간이 포함된 경우 잘못된 경고 규칙입니다.
  • AlertingRule CR 마침표가 유효하지 않은 경우 잘못된 경고 규칙입니다.
  • AlertingRule CR에 유효하지 않은 LogQL expr 가 포함된 경우 잘못된 경고 규칙입니다.
  • AlertingRule CR에 이름이 동일한 두 그룹이 포함된 경우 잘못된 경고 규칙입니다.
  • 위의 항목이 적용되지 않으면 경고 규칙이 유효한 것으로 간주됩니다.
테넌트 유형AlertingRule CR을 위한 유효한 네임스페이스

애플리케이션

 

audit

openshift-logging

인프라

openshift-/*, kube-/\*, default

사전 요구 사항

  • Red Hat OpenShift Logging Operator 5.7 이상
  • OpenShift Container Platform 4.13 이상

절차

  1. AlertingRule 사용자 정의 리소스(CR)를 생성합니다.

    인프라 경고Rule CR 예

      apiVersion: loki.grafana.com/v1
      kind: AlertingRule
      metadata:
        name: loki-operator-alerts
        namespace: openshift-operators-redhat 1
        labels: 2
          openshift.io/<label_name>: "true"
      spec:
        tenantID: "infrastructure" 3
        groups:
          - name: LokiOperatorHighReconciliationError
            rules:
              - alert: HighPercentageError
                expr: | 4
                  sum(rate({kubernetes_namespace_name="openshift-operators-redhat", kubernetes_pod_name=~"loki-operator-controller-manager.*"} |= "error" [1m])) by (job)
                    /
                  sum(rate({kubernetes_namespace_name="openshift-operators-redhat", kubernetes_pod_name=~"loki-operator-controller-manager.*"}[1m])) by (job)
                    > 0.01
                for: 10s
                labels:
                  severity: critical 5
                annotations:
                  summary: High Loki Operator Reconciliation Errors 6
                  description: High Loki Operator Reconciliation Errors 7

    1
    AlertingRule CR이 생성되는 네임스페이스에는 LokiStack spec.rules.namespaceSelector 정의와 일치하는 레이블이 있어야 합니다.
    2
    레이블 블록은>-<Stack spec.rules.selector 정의와 일치해야 합니다.
    3
    인프라 테넌트에 대한 AlertingRule CR은 openshift-*, kube-\* 또는 default 네임스페이스에서만 지원됩니다.
    4
    kubernetes_namespace_name: 의 값은 metadata.namespace 값과 일치해야 합니다.
    5
    이 필수 필드의 값은 중요,경고 또는 정보 여야 합니다.
    6
    이 필드는 필수입니다.
    7
    이 필드는 필수입니다.

    애플리케이션 AlertingRule CR의 예

      apiVersion: loki.grafana.com/v1
      kind: AlertingRule
      metadata:
        name: app-user-workload
        namespace: app-ns 1
        labels: 2
          openshift.io/<label_name>: "true"
      spec:
        tenantID: "application"
        groups:
          - name: AppUserWorkloadHighError
            rules:
              - alert:
                expr: | 3
                sum(rate({kubernetes_namespace_name="app-ns", kubernetes_pod_name=~"podName.*"} |= "error" [1m])) by (job)
                for: 10s
                labels:
                  severity: critical 4
                annotations:
                  summary:  5
                  description:  6

    1
    AlertingRule CR이 생성되는 네임스페이스에는 LokiStack spec.rules.namespaceSelector 정의와 일치하는 레이블이 있어야 합니다.
    2
    레이블 블록은>-<Stack spec.rules.selector 정의와 일치해야 합니다.
    3
    kubernetes_namespace_name: metadata.namespace 의 값과 일치해야 합니다.
    4
    이 필수 필드의 값은 중요,경고 또는 정보 여야 합니다.
    5
    이 필수 필드의 값은 규칙에 대한 요약입니다.
    6
    이 필수 필드의 값은 규칙에 대한 자세한 설명입니다.
  2. AlertingRule CR을 적용합니다.

    $ oc apply -f <filename>.yaml

11.2.4. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.