2.11. 원격 쓰기 스토리지 구성
Prometheus가 장기 스토리지의 원격 시스템에 인가된 지표를 보낼 수 있도록 원격 쓰기 스토리지를 구성할 수 있습니다. 이렇게 하면 Prometheus가 메트릭을 저장하는 방법 또는 길이에 영향을 미치지 않습니다.
사전 요구 사항
핵심 OpenShift Container Platform 모니터링 구성 요소인 경우:
-
cluster-admin클러스터 역할의 사용자로 클러스터에 액세스할 수 있습니다. -
cluster-monitoring-configConfigMap오브젝트를 생성하셨습니다.
-
사용자 정의 프로젝트를 모니터링하는 구성 요소를 구성하는 경우:
-
cluster-admin클러스터 역할의 사용자로 또는openshift-user-workload-monitoring프로젝트에서user-workload-monitoring-config-edit역할의 사용자로 클러스터에 액세스할 수 있습니다. -
user-workload-monitoring-configConfigMap오브젝트가 생성되어 있습니다.
-
-
OpenShift CLI(
oc)가 설치되어 있습니다. - Thanos와 같은 원격 쓰기 호환 엔드포인트를 설정하고 엔드포인트 URL을 알고 있어야 합니다. 원격 쓰기 기능과 호환되는 엔드포인트에 대한 정보는 Prometheus 원격 엔드포인트 및 스토리지 설명서를 참조하십시오.
원격 쓰기 엔드 포인트의
Secret오브젝트에 인증 인증 정보를 설정했습니다. 사용자 워크로드 모니터링을 위해 원격 쓰기를 구성하는 Prometheus 오브젝트와 동일한 네임스페이스에 시크릿을 생성해야 합니다. 기본 플랫폼 모니터링을 위해openshift-monitoring네임스페이스 또는 사용자 워크로드 모니터링을 위한openshift-user-workload-monitoring네임스페이스를 생성해야 합니다.Important보안 위험을 줄이려면 HTTPS 및 인증을 사용하여 메트릭을 엔드포인트에 보냅니다.
절차
다음 단계에 따라 openshift-monitoring 네임스페이스의 cluster-monitoring-config 구성 맵에서 기본 플랫폼 모니터링에 대한 원격 쓰기를 구성합니다.
사용자 정의 프로젝트를 모니터링하는 Prometheus 인스턴스에 대한 원격 쓰기를 구성하는 경우 openshift-user-workload-monitoring 네임스페이스에서 user-workload-monitoring-config 구성 맵과 유사하게 편집합니다. Prometheus 구성 맵 구성 요소는 cluster-monitoring-config ConfigMap 오브젝트에 있으므로 user-workload-monitoring-config ConfigMap 오브젝트에서 라고 합니다.
prometheus
openshift-monitoring프로젝트에서cluster-monitoring-configConfigMap오브젝트를 편집합니다.$ oc -n openshift-monitoring edit configmap cluster-monitoring-config-
data/config.yaml/prometheusK8s에remoteWrite:섹션을 추가합니다. 이 섹션에 엔드포인트 URL 및 인증 정보를 추가합니다.
apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: remoteWrite: - url: "https://remote-write-endpoint.example.com"1 <endpoint_authentication_credentials>2 인증 정보 뒤에 쓰기 재레이블 구성 값을 추가합니다.
apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: remoteWrite: - url: "https://remote-write-endpoint.example.com" <endpoint_authentication_credentials> <write_relabel_configs>1 - 1
- 쓰기 레이블 설정입니다.
<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.example.com" writeRelabelConfigs: - sourceLabels: [__name__] regex: 'my_metric' action: keep쓰기 재레이블 구성 옵션에 대한 정보는 Prometheus relabel_config 설명서를 참조하십시오.
파일을 저장하여
ConfigMap오브젝트에 대한 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 다시 시작됩니다.참고클러스터 관리자가 사용자 정의 프로젝트에 대한 모니터링을 활성화하지 않는 한
user-workload-monitoring-configConfigMap오브젝트에 적용되는 구성이 활성화되어 있지 않습니다.주의모니터링
ConfigMap오브젝트에 대한 변경 사항을 저장하면 관련 프로젝트에서 Pod 및 기타 리소스를 재배포할 수 있습니다. 변경 사항을 저장하면 해당 프로젝트에서 실행 중인 모니터링 를 다시 시작할 수도 있습니다.
2.11.1. 지원되는 원격 쓰기 인증 설정 링크 복사링크가 클립보드에 복사되었습니다!
다른 방법을 사용하여 원격 쓰기 엔드포인트로 인증할 수 있습니다. 현재 지원되는 인증 방법은 AWS Signature Version 4, Basic authentication, Authorization 요청 헤더, OAuth 2.0 및 TLS 클라이언트에서 HTTP를 사용한 인증입니다. 다음 표에서는 원격 쓰기에 사용되는 지원되는 인증 방법에 대해 자세히 설명합니다.
| 인증 방법 | 구성 맵 필드 | 설명 |
|---|---|---|
| AWS Signature Version 4 |
| 이 방법은 AWS Signature Version 4 인증을 사용하여 요청을 서명합니다. 이 방법은 권한 부여, OAuth 2.0 또는 기본 인증과 동시에 사용할 수 없습니다. |
| 기본 인증 |
| 기본 인증은 구성된 사용자 이름 및 암호로 모든 원격 쓰기 요청에 권한 부여 헤더를 설정합니다. |
| 권한 부여 |
|
권한 부여는 구성된 토큰을 사용하여 모든 원격 쓰기 요청에 |
| OAuth 2.0 |
|
OAuth 2.0 구성에서는 클라이언트 자격 증명 부여 유형을 사용합니다. Prometheus는 지정된 클라이언트 ID 및 클라이언트 시크릿을 사용하여 |
| TLS 클라이언트 |
| TLS 클라이언트 구성은 TLS를 사용하여 원격 쓰기 엔드포인트 서버에서 인증하는 데 사용되는 CA 인증서, 클라이언트 인증서, 클라이언트 키 정보를 지정합니다. 샘플 구성에서는 CA 인증서 파일, 클라이언트 인증서 파일 및 클라이언트 키 파일을 이미 생성했다고 가정합니다. |
2.11.1.1. 인증 설정의 구성 맵 위치 링크 복사링크가 클립보드에 복사되었습니다!
다음은 기본 플랫폼 모니터링을 위한 ConfigMap 오브젝트에서 인증 구성의 위치를 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-monitoring-config
namespace: openshift-monitoring
data:
config.yaml: |
prometheusK8s:
remoteWrite:
- url: "https://remote-write-endpoint.example.com"
<endpoint_authentication_details>
사용자 정의 프로젝트를 모니터링하는 Prometheus 인스턴스에 대한 원격 쓰기를 구성하는 경우 openshift-user-workload-monitoring 네임스페이스에서 user-workload-monitoring-config 구성 맵을 편집합니다. Prometheus 구성 맵 구성 요소는 cluster-monitoring-config ConfigMap 오브젝트에 있으므로 user-workload-monitoring-config ConfigMap 오브젝트에서 라고 합니다.
prometheus
2.11.1.2. 원격 쓰기 인증 설정 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 샘플은 원격 쓰기 끝점에 연결하는 데 사용할 수 있는 다른 인증 설정을 보여줍니다. 각 샘플에서는 인증 인증 정보 및 기타 관련 설정이 포함된 해당 Secret 오브젝트를 구성하는 방법도 보여줍니다. 각 샘플은 openshift-monitoring 네임스페이스에서 기본 플랫폼 모니터링과 함께 사용할 수 있도록 인증을 구성합니다.
AWS Signature Version 4 인증을 위한 샘플 YAML
다음은 openshift-monitoring 네임스페이스의 sigv4-credentials 라는 sigv4 시크릿의 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: sigv4-credentials
namespace: openshift-monitoring
stringData:
accessKey: <AWS_access_key>
secretKey: <AWS_secret_key>
type: Opaque
다음은 openshift-monitoring 네임스페이스에서 sigv4-credentials 라는 Secret 오브젝트를 사용하는 샘플 AWS Signature Version 4 원격 쓰기 인증 설정을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-monitoring-config
namespace: openshift-monitoring
data:
config.yaml: |
prometheusK8s:
remoteWrite:
- url: "https://authorization.example.com/api/write"
sigv4:
region: <AWS_region>
accessKey:
name: sigv4-credentials
key: accessKey
secretKey:
name: sigv4-credentials
key: secretKey
profile: <AWS_profile_name>
roleArn: <AWS_role_arn>
기본 인증을 위한 YAML 샘플
다음은 openshift-monitoring 네임스페이스에서 rw-basic-auth 라는 Secret 오브젝트에 대한 기본 인증 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: rw-basic-auth
namespace: openshift-monitoring
stringData:
user: <basic_username>
password: <basic_password>
type: Opaque
다음 샘플은 openshift-monitoring 네임스페이스에서 rw-basic-auth 라는 Secret 오브젝트를 사용하는 basicAuth 원격 쓰기 구성을 보여줍니다. 끝점에 대한 인증 자격 증명을 이미 설정했다고 가정합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-monitoring-config
namespace: openshift-monitoring
data:
config.yaml: |
prometheusK8s:
remoteWrite:
- url: "https://basicauth.example.com/api/write"
basicAuth:
username:
name: rw-basic-auth
key: user
password:
name: rw-basic-auth
key: password
Secret 오브젝트를 사용하여 전달자 토큰을 사용한 인증을 위한 YAML 샘플
다음은 openshift-monitoring 네임스페이스의 rw-bearer-auth 라는 Secret 오브젝트에 대한 전달자 토큰 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: rw-bearer-auth
namespace: openshift-monitoring
stringData:
token: <authentication_token>
type: Opaque
- 1
- 인증 토큰입니다.
다음은 openshift-monitoring 네임스페이스에서 rw-bearer-auth 라는 Secret 오브젝트를 사용하는 샘플 전달자 토큰 구성 맵 설정을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-monitoring-config
namespace: openshift-monitoring
data:
config.yaml: |
enableUserWorkload: true
prometheusK8s:
remoteWrite:
- url: "https://authorization.example.com/api/write"
authorization:
type: Bearer
credentials:
name: rw-bearer-auth
key: token
OAuth 2.0 인증을 위한 샘플 YAML
다음은 openshift-monitoring 네임스페이스에서 oauth2-credentials 라는 Secret 오브젝트에 대한 샘플 OAuth 2.0 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: oauth2-credentials
namespace: openshift-monitoring
stringData:
id: <oauth2_id>
secret: <oauth2_secret>
token: <oauth2_authentication_token>
type: Opaque
다음은 openshift-monitoring 네임스페이스에서 oauth2-credentials 라는 Secret 오브젝트를 사용하는 oauth2 원격 쓰기 인증 샘플 구성을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-monitoring-config
namespace: openshift-monitoring
data:
config.yaml: |
prometheusK8s:
remoteWrite:
- url: "https://test.example.com/api/write"
oauth2:
clientId:
secret:
name: oauth2-credentials
key: id
clientSecret:
name: oauth2-credentials
key: secret
tokenUrl: https://example.com/oauth2/token
scopes:
- <scope_1>
- <scope_2>
endpointParams:
param1: <parameter_1>
param2: <parameter_2>
- 1 3
- 해당
Secret오브젝트의 이름입니다.clientSecret은Secret오브젝트를 참조해야 하지만ClientId는ConfigMap오브젝트를 참조할 수 있습니다. - 2 4
- 지정된
Secret오브젝트에 OAuth 2.0 자격 증명이 포함된 키입니다. - 5
- 지정된
clientId및clientSecret을 사용하여 토큰을 가져오는 데 사용되는 URL입니다. - 6
- 권한 부여 요청의 OAuth 2.0 범위입니다. 이러한 범위는 토큰이 액세스할 수 있는 데이터를 제한합니다.
- 7
- 권한 부여 서버에 필요한 OAuth 2.0 인증 요청 매개 변수입니다.
TLS 클라이언트 인증을 위한 YAML 샘플
다음은 openshift-monitoring 네임스페이스에 m 이라는 tls tls -bundleSecret 오브젝트에 대한 샘플 TLS 클라이언트 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: mtls-bundle
namespace: openshift-monitoring
data:
ca.crt: <ca_cert>
client.crt: <client_cert>
client.key: <client_key>
type: tls
다음 샘플은 mtls-bundle 이라는 TLS Secret 오브젝트를 사용하는 tlsConfig 원격 쓰기 인증 구성을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-monitoring-config
namespace: openshift-monitoring
data:
config.yaml: |
prometheusK8s:
remoteWrite:
- url: "https://remote-write-endpoint.example.com"
tlsConfig:
ca:
secret:
name: mtls-bundle
key: ca.crt
cert:
secret:
name: mtls-bundle
key: client.crt
keySecret:
name: mtls-bundle
key: client.key