3.4. 사용자 워크로드 모니터링에 대한 메트릭 구성
클러스터 구성 요소 및 자체 워크로드의 수행 방식을 모니터링하도록 메트릭 컬렉션을 구성합니다.
장기 저장을 위해 수집된 메트릭을 원격 시스템에 전송하고, 메트릭에 클러스터 ID 레이블을 추가하여 다른 클러스터에서 들어오는 데이터를 확인할 수 있습니다.
3.4.1. 원격 쓰기 스토리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
Prometheus가 장기 스토리지의 원격 시스템에 인가된 지표를 보낼 수 있도록 원격 쓰기 스토리지를 구성할 수 있습니다. 이렇게 하면 Prometheus가 메트릭을 저장하는 방법 또는 길이에 영향을 미치지 않습니다.
사전 요구 사항
-
dedicated-admin역할의 사용자로 클러스터에 액세스할 수 있습니다. -
user-workload-monitoring-configConfigMap오브젝트가 있습니다. 이 오브젝트는 클러스터가 생성될 때 기본적으로 생성됩니다. -
OpenShift CLI(
oc)가 설치되어 있습니다. Thanos와 같은 원격 쓰기 호환 엔드포인트를 설정하고 엔드포인트 URL을 알고 있어야 합니다. 원격 쓰기 기능과 호환되는 엔드포인트에 대한 정보는 Prometheus 원격 엔드포인트 및 스토리지 설명서를 참조하십시오.
중요Red Hat은 원격 쓰기 전송자 구성에 대한 정보만 제공하고 수신자 엔드포인트 구성에 대한 지침을 제공하지 않습니다. 고객은 원격 쓰기 호환 가능한 자체 엔드포인트를 설정해야 합니다. 엔드포인트 수신자 구성 문제는 Red Hat 프로덕션 지원에 포함되어 있지 않습니다.
원격 쓰기 끝점에 대한
Secret오브젝트에 인증 정보를 설정했습니다.openshift-user-workload-monitoring네임스페이스에 보안을 생성해야 합니다.주의보안 위험을 줄이려면 HTTPS 및 인증을 사용하여 메트릭을 엔드포인트에 보냅니다.
프로세스
openshift-user-workload-monitoring프로젝트에서user-workload-monitoring-config구성 맵을 편집합니다.$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config다음 예와 같이
data/config.yaml/prometheus에remoteWrite:섹션을 추가합니다.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> writeRelabelConfigs: - <your_write_relabel_configs>1 - 1
- 원격 엔드포인트에 보낼 메트릭에 대한 구성을 추가합니다.
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: keepmy_namespace네임스페이스에서my_metric_1및my_metric_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" writeRelabelConfigs: - sourceLabels: [__name__,namespace] regex: '(my_metric_1|my_metric_2);my_namespace' action: keep
- 파일을 저장하여 변경 사항을 적용합니다. 새 구성이 자동으로 적용됩니다.
3.4.1.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 인증서 파일, 클라이언트 인증서 파일 및 클라이언트 키 파일을 생성했다고 가정합니다. |
3.4.1.2. 원격 쓰기 인증 설정의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 샘플에서는 원격 쓰기 끝점에 연결하는 데 사용할 수 있는 다양한 인증 설정을 보여줍니다. 각 샘플에서는 인증 자격 증명 및 기타 관련 설정을 포함하는 해당 Secret 오브젝트를 구성하는 방법도 보여줍니다. 각 샘플은 openshift-user-workload-monitoring 네임스페이스에서 사용자 정의 프로젝트에 대한 모니터링과 함께 사용할 인증을 구성합니다.
3.4.1.2.1. AWS Signature Version 4 인증을 위한 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
다음은 openshift-user-workload-monitoring 네임스페이스에서 sigv4-credentials 라는 sigv4 보안에 대한 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: sigv4-credentials
namespace: openshift-user-workload-monitoring
stringData:
accessKey: <AWS_access_key>
secretKey: <AWS_secret_key>
type: Opaque
다음은 openshift-user-workload-monitoring 네임스페이스에서 sigv4-credentials 라는 Secret 오브젝트를 사용하는 샘플 AWS 서명 버전 4 원격 쓰기 인증 설정을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
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>
3.4.1.2.2. 기본 인증을 위한 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
다음은 openshift-user-workload-monitoring 네임스페이스에 rw-basic-auth 라는 Secret 오브젝트에 대한 샘플 기본 인증 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: rw-basic-auth
namespace: openshift-user-workload-monitoring
stringData:
user: <basic_username>
password: <basic_password>
type: Opaque
다음 샘플은 openshift-user-workload-monitoring 네임스페이스에서 rw-basic-auth 라는 Secret 오브젝트를 사용하는 basicAuth 원격 쓰기 구성을 보여줍니다. 끝점에 대한 인증 자격 증명을 이미 설정했다고 가정합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
remoteWrite:
- url: "https://basicauth.example.com/api/write"
basicAuth:
username:
name: rw-basic-auth
key: user
password:
name: rw-basic-auth
key: password
3.4.1.2.3. Secret 오브젝트를 사용하는 전달자 토큰으로 인증을 위한 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
다음은 openshift-user-workload-monitoring 네임스페이스에 rw-bearer-auth 라는 Secret 오브젝트에 대한 전달자 토큰 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: rw-bearer-auth
namespace: openshift-user-workload-monitoring
stringData:
token: <authentication_token>
type: Opaque
- 1
- 인증 토큰입니다.
다음은 openshift-user-workload-monitoring 네임스페이스에서 rw-bearer-auth 라는 Secret 오브젝트를 사용하는 샘플 전달자 토큰 구성 맵 설정을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
remoteWrite:
- url: "https://authorization.example.com/api/write"
authorization:
type: Bearer
credentials:
name: rw-bearer-auth
key: token
3.4.1.2.4. OAuth 2.0 인증을 위한 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
다음은 openshift-user-workload-monitoring 네임스페이스에서 oauth2-credentials 라는 Secret 오브젝트에 대한 샘플 OAuth 2.0 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: oauth2-credentials
namespace: openshift-user-workload-monitoring
stringData:
id: <oauth2_id>
secret: <oauth2_secret>
type: Opaque
다음은 openshift-user-workload-monitoring 네임스페이스에서 oauth2-credentials 라는 Secret 오브젝트를 사용하는 oauth2 원격 쓰기 인증 샘플 구성을 보여줍니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
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오브젝트의 이름입니다.ClientId는 대신ConfigMap오브젝트를 참조할 수 있지만clientSecret은Secret오브젝트를 참조해야 합니다. - 2 4
- 지정된
Secret오브젝트에 OAuth 2.0 인증 정보가 포함된 키입니다. - 5
- 지정된
clientId및clientSecret을 사용하여 토큰을 가져오는 데 사용되는 URL입니다. - 6
- 권한 부여 요청에 대한 OAuth 2.0 범위입니다. 이러한 범위는 토큰이 액세스할 수 있는 데이터를 제한합니다.
- 7
- 권한 부여 서버에 필요한 OAuth 2.0 권한 부여 요청 매개변수입니다.
3.4.1.2.5. TLS 클라이언트 인증을 위한 샘플 YAML 링크 복사링크가 클립보드에 복사되었습니다!
다음은 openshift-user-workload-monitoring 네임스페이스에서 mtls-bundle 이라는 tls Secret 오브젝트에 대한 샘플 TLS 클라이언트 설정을 보여줍니다.
apiVersion: v1
kind: Secret
metadata:
name: mtls-bundle
namespace: openshift-user-workload-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: user-workload-monitoring-config
namespace: openshift-user-workload-monitoring
data:
config.yaml: |
prometheus:
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
3.4.1.3. 원격 쓰기 대기열 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
원격 쓰기에 queueConfig 오브젝트를 사용하여 원격 쓰기 대기열 매개변수를 조정할 수 있습니다. 다음 예제에서는 openshift-user-workload-monitoring 네임스페이스에서 사용자 정의 프로젝트에 대한 모니터링을 위한 기본값이 있는 큐 매개변수를 보여줍니다.
기본값이 있는 원격 쓰기 매개변수 구성 예
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>
queueConfig:
capacity: 10000
minShards: 1
maxShards: 50
maxSamplesPerSend: 2000
batchSendDeadline: 5s
minBackoff: 30ms
maxBackoff: 5s
retryOnRateLimit: false
sampleAgeLimit: 0s
- 1
- shard당 버퍼링을 큐에서 삭제하기 전에 버퍼링할 샘플 수입니다.
- 2
- 최소 shard 수입니다.
- 3
- 최대 shard 수입니다.
- 4
- 전송당 최대 샘플 수입니다.
- 5
- 샘플이 버퍼에서 대기할 최대 시간입니다.
- 6
- 실패한 요청을 다시 시도하기 전에 대기하는 초기 시간입니다. 시간은
maxbackoff시간까지 각 재시도에 대해 두 배로 증가합니다. - 7
- 실패한 요청을 다시 시도하기 전에 대기하는 최대 시간입니다.
- 8
- 원격 쓰기 스토리지에서 429 상태 코드를 수신한 후 요청을 재시도하려면 이 매개변수를
true로 설정합니다. - 9
sampleAgeLimit제한보다 오래된 샘플은 큐에서 삭제됩니다. 값이 정의되지 않았거나0s로 설정하면 매개변수가 무시됩니다.
3.4.1.4. 원격 쓰기 메트릭 테이블 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에는 원격 쓰기 구성 중 문제를 해결하는 데 도움이 되는 추가 설명과 함께 원격 쓰기 및 원격 쓰기 전파 지표가 포함되어 있습니다.
| 지표 | 설명 |
|---|---|
|
| Prometheus가 모든 샘플의 WAL(Write-ahead log)에 저장된 최신 타임스탬프를 표시합니다. |
|
| 원격 쓰기 큐가 성공적으로 전송된 최신 타임스탬프를 표시합니다. |
|
| 원격 쓰기가 전송하지 못한 샘플 수와 원격 스토리지로 다시 보내야 했습니다. 이 메트릭의 안정적인 높은 비율은 네트워크 또는 원격 스토리지 끝점의 문제를 나타냅니다. |
|
| 현재 각 원격 끝점에 대해 실행 중인 shard 수를 표시합니다. |
|
| 현재 쓰기 처리량과 전송된 샘플과 들어오는 비율에 따라 계산된 필요한 shard 수를 표시합니다. |
|
| 현재 구성에 따라 최대 shard 수를 표시합니다. |
|
| 현재 구성에 따라 최소 shard 수를 표시합니다. |
|
| Prometheus가 현재 새 데이터를 작성하고 있는 WAL 세그먼트 파일입니다. |
|
| 각 원격 쓰기 인스턴스가 현재 읽고 있는 WAL 세그먼트 파일입니다. |