2.9. 원격 쓰기 스토리지 구성

Prometheus가 장기 스토리지의 원격 시스템에 인가된 지표를 보낼 수 있도록 원격 쓰기 스토리지를 구성할 수 있습니다. 이렇게 하면 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)가 설치되어 있습니다.
  • Thanos와 같은 원격 쓰기 호환 엔드포인트를 설정하고 엔드포인트 URL을 알고 있어야 합니다. 원격 쓰기 기능과 호환되는 엔드포인트에 대한 정보는 Prometheus 원격 엔드포인트 및 스토리지 설명서를 참조하십시오.
  • 원격 쓰기 엔드포인트에 대한 인증 정보를 설정해야 합니다.

    경고

    보안 위험을 줄이려면 암호화되지 않은 HTTP를 통해 또는 인증을 사용하지 않고 엔드포인트로 메트릭을 보내지 마십시오.

절차

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

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. data/config.yaml/prometheusK8sremoteWrite: 섹션을 추가합니다.
  3. 이 섹션에 엔드포인트 URL 및 인증 정보를 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          remoteWrite:
          - url: "https://remote-write.endpoint"
            <endpoint_authentication_credentials>

    endpoint_authentication_credentials의 경우 엔드포인트의 인증 정보를 대체합니다. 현재 지원되는 인증 방법은 기본 인증 (basicAuth) 및 클라이언트 TLS(tlsConfig) 인증입니다.

    • 다음 예제에서는 기본 인증을 구성합니다.

      basicAuth:
        username:
          <usernameSecret>
        password:
          <passwordSecret>

      이에 따라 <usernameSecret><passwordSecret>을 바꿉니다.

      다음 샘플은 name에 대해 remoteWriteAuth로 구성되고 key 값에 대해 userpassword로 구성된 기본 인증을 보여줍니다. 이러한 값에는 엔드포인트 인증 정보가 포함됩니다.

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cluster-monitoring-config
        namespace: openshift-monitoring
      data:
        config.yaml: |
          prometheusK8s:
            remoteWrite:
            - url: "https://remote-write.endpoint"
              basicAuth:
                username:
                  name: remoteWriteAuth
                  key: user
                password:
                  name: remoteWriteAuth
                  key: password
    • 다음 예제에서는 클라이언트 TLS 인증을 구성합니다.

      tlsConfig:
        ca:
          <caSecret>
        cert:
          <certSecret>
        keySecret:
          <keySecret>

      이에 따라 <caSecret>, <certSecret>, <keySecret>을 적절히 변경합니다.

      다음 샘플은 name 값으로 selfsigned-mtls-bundle 을 사용하고 ca key 값으로 ca.crt 를, cert key 값으로 client.crt, keySecret key 값으로 client.key를 사용하는 TLS 인증 구성을 보여줍니다.

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cluster-monitoring-config
        namespace: openshift-monitoring
      data:
        config.yaml: |
          prometheusK8s:
            remoteWrite:
            - url: "https://remote-write.endpoint"
              tlsConfig:
                ca:
                  secret:
                    name: selfsigned-mtls-bundle
                    key: ca.crt
                cert:
                  secret:
                    name: selfsigned-mtls-bundle
                    key: client.crt
                keySecret:
                  name: selfsigned-mtls-bundle
                  key: client.key
  4. 인증 정보 뒤에 쓰기 재레이블 구성 값을 추가합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          remoteWrite:
          - url: "https://remote-write.endpoint"
            <endpoint_authentication_credentials>
            <write_relabel_configs>

    <write_relabel_configs>는 원격 엔드포인트로 보낼 메트릭의 쓰기 재레이블 구성 목록을 대체합니다.

    다음 샘플은 my_metric이라는 단일 메트릭을 전달하는 방법을 보여줍니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          remoteWrite:
          - url: "https://remote-write.endpoint"
            writeRelabelConfigs:
            - sourceLabels: [__name__]
              regex: 'my_metric'
              action: keep

    쓰기 재레이블 구성 옵션에 대한 정보는 Prometheus relabel_config 설명서를 참조하십시오.

  5. 필요한 경우 namenamespace metadata 값을 다음과 같이 변경하여 사용자 정의 프로젝트를 모니터링하는 Prometheus 인스턴스의 원격 쓰기를 구성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          remoteWrite:
          - url: "https://remote-write.endpoint"
            <endpoint_authentication_credentials>
            <write_relabel_configs>
    참고

    Prometheus 구성 맵 구성 요소는 cluster-monitoring-config ConfigMap 오브젝트에서 prometheusK8s라고 하며 user-workload-monitoring-config ConfigMap 오브젝트에서 prometheus라고 합니다.

  6. 파일을 저장하여 ConfigMap 오브젝트에 대한 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 다시 시작됩니다.

    참고

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

    주의

    모니터링 ConfigMap 오브젝트에 대한 변경 사항을 저장하면 관련 프로젝트에서 Pod 및 기타 리소스를 재배포할 수 있습니다. 변경 사항을 저장하면 해당 프로젝트에서 실행 중인 모니터링 를 다시 시작할 수도 있습니다.

추가 리소스

  • 원격 쓰기 호환 엔드포인트 (예: Thanos)을 생성하는 단계는 원격 쓰기 호환 엔드포인트 설정을 참조하십시오.
  • 다양한 사용 사례에 맞게 원격 쓰기 설정을 최적화하는 방법에 대한 자세한 내용은 원격 쓰기 설정 튜닝을 참조하십시오.
  • 추가 선택 필드에 대한 자세한 내용은 API 설명서를 참조하십시오.