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네임스페이스입니다.경고보안 위험을 줄이려면 HTTPS 및 인증을 사용하여 메트릭을 엔드포인트에 보냅니다.
절차
ConfigMap오브젝트를 편집합니다.핵심 OpenShift Container Platform 프로젝트를 모니터링하는 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 설명서를 참조하십시오.
사용자 정의 프로젝트를 모니터링하는 Prometheus 인스턴스에 대한 원격 쓰기를 구성하려면 다음을 수행합니다.
openshift-user-workload-monitoring프로젝트에서user-workload-monitoring-configConfigMap오브젝트를 편집합니다.$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
-
data/config.yaml/prometheus에remoteWrite:섹션을 추가합니다. 이 섹션에 엔드포인트 URL 및 인증 정보를 추가합니다.
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.example.com" 1 <endpoint_authentication_credentials> 2인증 정보 뒤에 쓰기 재레이블 구성 값을 추가합니다.
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.example.com" <endpoint_authentication_credentials> <write_relabel_configs> 1- 1
- 쓰기 재라벨 구성 설정입니다.
<write_relabel_configs>는 원격 엔드포인트로 보낼 메트릭의 쓰기 재레이블 구성 목록을 대체합니다.다음 샘플은
my_metric이라는 단일 메트릭을 전달하는 방법을 보여줍니다.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.example.com" writeRelabelConfigs: - sourceLabels: [__name__] regex: 'my_metric' action: keep쓰기 재레이블 구성 옵션에 대한 정보는 Prometheus relabel_config 설명서를 참조하십시오.
파일을 저장하여 변경 사항을 적용합니다. 새 구성의 영향을 받는 Pod가 자동으로 다시 시작됩니다.
참고클러스터 관리자가 사용자 정의 프로젝트에 대한 모니터링을 활성화하지 않는 한
user-workload-monitoring-configConfigMap오브젝트에 적용되는 구성이 활성화되어 있지 않습니다.주의모니터링
ConfigMap오브젝트에 대한 변경 사항을 저장하면 관련 프로젝트에서 Pod 및 기타 리소스를 재배포할 수 있습니다. 변경 사항을 저장하면 해당 프로젝트에서 실행 중인 모니터링 를 다시 시작할 수도 있습니다.
2.11.1. 지원되는 원격 쓰기 인증 설정
다른 방법을 사용하여 원격 쓰기 끝점으로 인증할 수 있습니다. 현재 지원되는 인증 방법은 AWS 서명 버전 4, 기본 인증, 권한 부여, OAuth 2.0 및 TLS 클라이언트입니다. 다음 표에서는 원격 쓰기에 사용할 지원되는 인증 방법에 대한 세부 정보를 제공합니다.
| 인증 방법 | 구성 맵 필드 | 설명 |
|---|---|---|
| AWS 서명 버전 4 |
| 이 방법은 AWS Signature Version 4 인증을 사용하여 요청에 서명합니다. 이 방법은 권한 부여, OAuth 2.0 또는 기본 인증과 동시에 사용할 수 없습니다. |
| 기본 인증 |
| 기본 인증은 구성된 사용자 이름 및 암호로 모든 원격 쓰기 요청에 권한 부여 헤더를 설정합니다. |
| 권한 부여 |
|
권한 부여는 구성된 토큰을 사용하여 모든 원격 쓰기 요청에 |
| OAuth 2.0 |
|
OAuth 2.0 구성에서는 클라이언트 자격 증명 부여 유형을 사용합니다. Prometheus는 원격 쓰기 엔드포인트에 액세스하기 위해 지정된 클라이언트 ID 및 클라이언트 시크릿을 사용하여 |
| TLS 클라이언트 |
| TLS 클라이언트 구성은 TLS를 사용하여 원격 쓰기 엔드포인트 서버로 인증하는 데 사용되는 CA 인증서, 클라이언트 인증서, 클라이언트 키 파일 정보를 지정합니다. 샘플 구성은 이미 CA 인증서 파일, 클라이언트 인증서 파일 및 클라이언트 키 파일을 생성했다고 가정합니다. |
2.11.2. 원격 쓰기 인증 설정의 예
다음 샘플에서는 원격 쓰기 끝점에 연결하는 데 사용할 수 있는 다양한 인증 설정을 보여줍니다. 각 샘플에서는 인증 자격 증명 및 기타 관련 설정을 포함하는 해당 Secret 오브젝트를 구성하는 방법도 보여줍니다. 각 샘플은 openshift-monitoring 네임스페이스의 기본 플랫폼 모니터링에 사용할 인증을 구성합니다.
예 2.1. 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 버전 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예 2.2. 기본 인증을 위한 샘플 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예 2.3. 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예 2.4. 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오브젝트의 이름입니다.ClientId는 대신ConfigMap오브젝트를 참조할 수 있지만clientSecret은Secret오브젝트를 참조해야 합니다. - 2 4
- 지정된
Secret오브젝트에 OAuth 2.0 인증 정보가 포함된 키입니다. - 5
- 지정된
clientId및clientSecret을 사용하여 토큰을 가져오는 데 사용되는 URL입니다. - 6
- 권한 부여 요청에 대한 OAuth 2.0 범위입니다. 이러한 범위는 토큰이 액세스할 수 있는 데이터를 제한합니다.
- 7
- 권한 부여 서버에 필요한 OAuth 2.0 권한 부여 요청 매개변수입니다.
예 2.5. 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 참조를 참조하십시오.