3장. 외부 alertmanager 인스턴스 구성

OpenShift Container Platform 모니터링 스택에는 Prometheus의 경고를 라우팅하는 로컬 Alertmanager 인스턴스가 포함되어 있습니다. openshift-monitoring 프로젝트 또는 user-workload-monitoring-config 프로젝트에서 cluster-monitoring-config 구성 맵을 구성하여 외부 Alertmanager 인스턴스를 추가할 수 있습니다.

여러 클러스터에 대해 동일한 외부 Alertmanager 구성을 추가하고 각 클러스터에 대해 로컬 인스턴스를 비활성화하면 단일 외부 Alertmanager 인스턴스를 사용하여 여러 클러스터에 대한 경고 라우팅을 관리할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • openshift-monitoring 프로젝트에서 핵심 OpenShift Container Platform 모니터링 구성 요소를 구성하는 경우:

    • cluster-admin 클러스터 역할의 사용자로 클러스터에 액세스할 수 있습니다.
    • cluster-monitoring-config 구성 맵을 생성했습니다.
  • 사용자 정의 프로젝트를 모니터링하는 구성 요소를 구성하는 경우:

    • cluster-admin 클러스터 역할의 사용자로 또는 openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
    • user-workload-monitoring-config 구성 맵을 생성했습니다.

절차

  1. ConfigMap 오브젝트를 편집합니다.

    • 핵심 OpenShift Container Platform 프로젝트의 라우팅 경고에 대한 추가 Alertmanager를 구성하려면 다음을 수행합니다.

      1. openshift-monitoring 프로젝트에서 cluster-monitoring-config 구성 맵을 편집합니다.

        $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
      2. data/config.yaml/prometheusK8s 아래에 additionalAlertmanagerConfigs: 섹션을 추가합니다.
      3. 이 섹션에서 추가 Alertmanagers의 설정 세부 정보를 추가합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: cluster-monitoring-config
          namespace: openshift-monitoring
        data:
          config.yaml: |
            prometheusK8s:
              additionalAlertmanagerConfigs:
              - <alertmanager_specification>

        <alertmanager_specification>의 경우 추가 Alertmanager 인스턴스의 인증 및 기타 구성 세부 정보를 대체합니다. 현재 지원되는 인증 방법은 베어러 토큰 (bearerToken) 및 클라이언트 TLS (tlsConfig)입니다. 다음 샘플 구성 맵은 클라이언트 TLS 인증이 있는 베어러 토큰을 사용하여 추가 Alertmanager를 구성합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: cluster-monitoring-config
          namespace: openshift-monitoring
        data:
          config.yaml: |
            prometheusK8s:
              additionalAlertmanagerConfigs:
              - scheme: https
                pathPrefix: /
                timeout: "30s"
                apiVersion: v1
                bearerToken:
                  name: alertmanager-bearer-token
                  key: token
                tlsConfig:
                  key:
                    name: alertmanager-tls
                    key: tls.key
                  cert:
                    name: alertmanager-tls
                    key: tls.crt
                  ca:
                    name: alertmanager-tls
                    key: tls.ca
                staticConfigs:
                - external-alertmanager1-remote.com
                - external-alertmanager1-remote2.com
    • 사용자 정의 프로젝트에서 라우팅 경고에 대한 추가 Alertmanager 인스턴스를 구성하려면 다음을 수행합니다.

      1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config 구성 맵을 편집합니다.

        $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
      2. data/config.yaml/<component>/additionalAlertmanagerConfigs: 섹션을 추가합니다.
      3. 이 섹션에서 추가 Alertmanagers의 설정 세부 정보를 추가합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: user-workload-monitoring-config
          namespace: openshift-user-workload-monitoring
        data:
          config.yaml: |
            <component>:
              additionalAlertmanagerConfigs:
              - <alertmanager_specification>

        <component>의 경우 지원되는 외부 Alertmanager 구성 요소인 prometheus 또는 thanosRuler 중 하나를 바꿉니다.

        <alertmanager_specification>의 경우 추가 Alertmanager 인스턴스의 인증 및 기타 구성 세부 정보를 대체합니다. 현재 지원되는 인증 방법은 베어러 토큰 (bearerToken) 및 클라이언트 TLS (tlsConfig)입니다. 다음 샘플 구성 맵은 베어러 토큰 및 클라이언트 TLS 인증으로 Thanos Ruler를 사용하여 추가 Alertmanager를 구성합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: user-workload-monitoring-config
          namespace: openshift-user-workload-monitoring
        data:
          config.yaml: |
           thanosRuler:
             additionalAlertmanagerConfigs:
            - scheme: https
              pathPrefix: /
              timeout: "30s"
              apiVersion: v1
              bearerToken:
                name: alertmanager-bearer-token
                key: token
              tlsConfig:
                key:
                  name: alertmanager-tls
                  key: tls.key
                cert:
                  name: alertmanager-tls
                  key: tls.crt
                ca:
                  name: alertmanager-tls
                  key: tls.ca
              staticConfigs:
              - external-alertmanager1-remote.com
              - external-alertmanager1-remote2.com
        참고

        클러스터 관리자가 사용자 정의 프로젝트에 대한 모니터링을 활성화하지 않는 한 user-workload-monitoring-config ConfigMap 오브젝트에 적용되는 구성이 활성화되어 있지 않습니다.

  2. 파일을 저장하여 ConfigMap 오브젝트에 대한 변경 사항을 적용합니다. 새로운 구성 요소 배치 구성이 자동으로 적용됩니다.

3.1. 시계열 및 경고에 추가 라벨 연결

Prometheus의 외부 라벨 기능을 사용하여 사용자 정의 라벨을 모든 시계열 및 경고에 연결할 수 있습니다.

사전 요구 사항

  • 핵심 OpenShift Container Platform 모니터링 구성 요소인 경우:

    • cluster-admin 클러스터 역할의 사용자로 클러스터에 액세스할 수 있습니다.
    • cluster-monitoring-config ConfigMap 오브젝트를 생성하셨습니다.
  • 사용자 정의 프로젝트를 모니터링하는 구성 요소를 구성하는 경우:

    • cluster-admin 클러스터 역할의 사용자로 또는 openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
    • user-workload-monitoring-config ConfigMap 오브젝트가 생성되어 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. ConfigMap 오브젝트를 편집합니다.

    • 주요 OpenShift Container Platform 프로젝트를 모니터링하는 Prometheus 인스턴스를 남아 있는 모든 시계열 및 경고에 사용자 정의 라벨을 연결하려면 다음을 수행합니다.

      1. openshift-monitoring 프로젝트에서 cluster-monitoring-config ConfigMap 오브젝트를 편집합니다.

        $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
      2. data/config.yaml 아래의 모든 메트릭에 추가할 라벨 맵을 정의합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: cluster-monitoring-config
          namespace: openshift-monitoring
        data:
          config.yaml: |
            prometheusK8s:
              externalLabels:
                <key>: <value> 1
        1
        <key>: <value><key>가 새 라벨에 고유한 이름이며 <value>가 값인 키-값 쌍의 맵으로 바꿉니다.
        주의

        prometheus 또는 prometheus_replica를 키 이름으로 사용하지 마십시오. 예약되어 있으며 덮어쓸 예정이기 때문입니다.

        예를 들어, 모든 시계열 및 경고에 리전 및 환경에 대한 메타데이터를 추가하려면 다음을 사용합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: cluster-monitoring-config
          namespace: openshift-monitoring
        data:
          config.yaml: |
            prometheusK8s:
              externalLabels:
                region: eu
                environment: prod
    • 사용자 정의 프로젝트를 모니터링하는 Prometheus 인스턴스를 모든 시계열 및 경고에 연결하려면 다음을 수행합니다.

      1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config ConfigMap 오브젝트를 편집합니다.

        $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
      2. data/config.yaml 아래의 모든 메트릭에 추가할 라벨 맵을 정의합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: user-workload-monitoring-config
          namespace: openshift-user-workload-monitoring
        data:
          config.yaml: |
            prometheus:
              externalLabels:
                <key>: <value> 1
        1
        <key>: <value><key>가 새 라벨에 고유한 이름이며 <value>가 값인 키-값 쌍의 맵으로 바꿉니다.
        주의

        prometheus 또는 prometheus_replica를 키 이름으로 사용하지 마십시오. 예약되어 있으며 덮어쓸 예정이기 때문입니다.

        참고

        openshift-user-workload-monitoring 프로젝트에서 Prometheus는 메트릭을 처리하고 Thanos Ruler는 경고 및 레코딩 규칙을 처리합니다. user-workload-monitoring-config ConfigMap 오브젝트에서 prometheus에 대한 externalLabels를 설정하면 규칙에는 적용되지 않고 메트릭에 대한 외부 라벨만 구성됩니다.

        예를 들어, 사용자 정의 프로젝트와 관련된 모든 시계열 및 경고에 리전 및 환경에 대한 메타데이터를 추가하려면 다음을 사용합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: user-workload-monitoring-config
          namespace: openshift-user-workload-monitoring
        data:
          config.yaml: |
            prometheus:
              externalLabels:
                region: eu
                environment: prod
  2. 파일을 저장하여 변경 사항을 적용합니다. 새 구성이 자동으로 적용됩니다.

    참고

    클러스터 관리자가 사용자 정의 프로젝트에 대한 모니터링을 활성화하지 않는 한 user-workload-monitoring-config ConfigMap 오브젝트에 적용되는 구성이 활성화되어 있지 않습니다.

    주의

    모니터링 구성 맵에 변경 사항이 저장되면 관련 프로젝트의 Pod 및 기타 리소스가 재배포될 수 있습니다. 해당 프로젝트에서 실행 중인 모니터링 프로세스도 다시 시작할 수 있습니다.