2.11. 원격 쓰기 스토리지 구성
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 원격 엔드포인트 및 스토리지 설명서를 참조하십시오.
중요Red Hat은 원격 쓰기 전송자 구성에 대한 정보만 제공하고 수신자 엔드포인트 구성에 대한 지침을 제공하지 않습니다. 고객은 원격 쓰기 호환 가능한 자체 엔드포인트를 설정해야 합니다. 엔드포인트 수신자 구성 문제는 Red Hat 프로덕션 지원에 포함되어 있지 않습니다.
원격 쓰기 엔드 포인트의
Secret
오브젝트에 인증 자격 증명을 설정했습니다. 원격 쓰기를 구성하는 Prometheus 오브젝트(기본 플랫폼 모니터링을 위한openshift-monitoring
네임스페이스 또는 사용자 워크로드 모니터링을 위한openshift-user-workload-monitoring
네임스페이스)와 동일한 네임스페이스에 보안을 생성해야 합니다.주의보안 위험을 줄이려면 HTTPS 및 인증을 사용하여 지표를 엔드포인트에 보냅니다.
절차
다음 단계에 따라 openshift-monitoring
네임스페이스의 cluster-monitoring-config
구성 맵에서 기본 플랫폼 모니터링에 대한 원격 쓰기를 구성합니다.
사용자 정의 프로젝트를 모니터링하는 Prometheus 인스턴스에 대한 원격 쓰기를 구성하는 경우 openshift-user-workload-monitoring
네임스페이스의 user-workload-monitoring-config
구성 맵과 유사하게 편집합니다. Prometheus 구성 맵 구성 요소는 cluster-monitoring-config
ConfigMap
오브젝트에 있는 것처럼
가 아닌 prometheus
user-workload-monitoring-config
ConfigMap
오브젝트에서 prometheus라고 합니다.
openshift-monitoring
프로젝트에서cluster-monitoring-config
ConfigMap
오브젝트를 편집합니다.$ 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> <your_write_relabel_configs> 1
- 1
- write relabel 구성 설정입니다.
&
lt;your_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-config
ConfigMap
오브젝트에 적용되는 구성이 활성화되어 있지 않습니다.주의모니터링
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" 1 <endpoint_authentication_details> 2
사용자 정의 프로젝트를 모니터링하는 Prometheus 인스턴스에 대한 원격 쓰기를 구성하는 경우 openshift-user-workload-monitoring
네임스페이스에서 user-workload-monitoring-config
구성 맵을 편집합니다. Prometheus 구성 맵 구성 요소는 cluster-monitoring-config
ConfigMap
오브젝트에 있는 것처럼
가 아닌 prometheus
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> 1 secretKey: <AWS_secret_key> 2 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> 1 accessKey: name: sigv4-credentials 2 key: accessKey 3 secretKey: name: sigv4-credentials 4 key: secretKey 5 profile: <AWS_profile_name> 6 roleArn: <AWS_role_arn> 7
기본 인증을 위한 YAML 샘플
다음은 openshift-monitoring
네임스페이스에서 rw-basic-auth
라는 Secret
오브젝트에 대한 기본 인증 설정을 보여줍니다.
apiVersion: v1 kind: Secret metadata: name: rw-basic-auth namespace: openshift-monitoring stringData: user: <basic_username> 1 password: <basic_password> 2 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 1 key: user 2 password: name: rw-basic-auth 3 key: password 4
Secret
오브젝트를 사용하여 전달자 토큰을 사용한 인증을 위한 샘플 YAML
다음은 openshift-monitoring
네임스페이스에 rw-bearer-auth
라는 Secret
오브젝트에 대한 전달자 토큰 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: rw-bearer-auth
namespace: openshift-monitoring
stringData:
token: <authentication_token> 1
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 1 credentials: name: rw-bearer-auth 2 key: token 3
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> 1 secret: <oauth2_secret> 2 token: <oauth2_authentication_token> 3 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 1 key: id 2 clientSecret: name: oauth2-credentials 3 key: secret 4 tokenUrl: https://example.com/oauth2/token 5 scopes: 6 - <scope_1> - <scope_2> endpointParams: 7 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> 1 client.crt: <client_cert> 2 client.key: <client_key> 3 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 1 key: ca.crt 2 cert: secret: name: mtls-bundle 3 key: client.crt 4 keySecret: name: mtls-bundle 5 key: client.key 6
추가 리소스
- 원격 쓰기 호환 엔드포인트 (예: Thanos)을 생성하는 단계는 원격 쓰기 호환 엔드포인트 설정을 참조하십시오.
- 다양한 사용 사례에 맞게 원격 쓰기 설정을 최적화하는 방법에 대한 자세한 내용은 원격 쓰기 설정 튜닝을 참조하십시오.
-
OpenShift Container Platform에서
Secret
오브젝트를 생성하고 구성하는 단계는 보안 이해를 참조하십시오. - 추가 선택적 필드에 대한 자세한 내용은 원격 쓰기의 Prometheus REST API 참조 를 참조하십시오.