이 페이지에서는 Google Distributed Cloud(연결형)가 작업에 대한 다양한 유형의 정보를 로깅하는 방법과 해당 정보를 열람하는 방법을 설명합니다. 일부 유형의 로그 및 측정항목을 수집하면 추가 비용이 발생합니다. 자세한 내용은 로그 및 측정항목 청구를 참조하세요.
로깅 및 모니터링 구성
로그 및 측정항목 수집을 시작하려면 다음을 수행해야 합니다.
다음 명령어를 사용하여 로깅 API를 사용 설정합니다.
gcloud services enable opsconfigmonitoring.googleapis.com --project PROJECT_ID gcloud services enable logging.googleapis.com --project PROJECT_ID gcloud services enable monitoring.googleapis.com --project PROJECT_ID
PROJECT_ID를 대상 Google Cloud 프로젝트의 ID로 바꿉니다.로그 및 측정항목을 작성하는 데 필요한 역할을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/opsconfigmonitoring.resourceMetadata.writer \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/metadata-agent]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/logging.logWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver-log-forwarder]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/monitoring.metricWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/gke-metrics-agent]"PROJECT_ID를 대상 Google Cloud 프로젝트의 ID로 바꿉니다.
로그
이 섹션에는 Distributed Cloud에서 지원하는 Cloud Logging 리소스 유형이 나와 있습니다. Distributed Cloud 로그를 보려면 로그 탐색기를 콘솔에서 사용합니다 Google Cloud . Distributed Cloud 로깅은 항상 사용 설정됩니다.
Distributed Cloud(연결형)에서 로깅된 리소스 유형은 다음과 같은 표준 Kubernetes 리소스입니다.
k8s_containerk8s_node
Cloud Logging API를 사용하여 Distributed Cloud(연결형) 로그를 캡처하고 검색할 수도 있습니다. 이 로깅 메커니즘을 구성하는 방법에 대한 자세한 내용은 Cloud Logging 클라이언트 라이브러리 문서를 참조하세요.
측정항목
이 섹션에는 Distributed Cloud에서 지원하는 Cloud Monitoring 측정항목이 나와 있습니다. Distributed Cloud 측정항목을 보려면 콘솔에서 측정항목 탐색기를 사용합니다.Google Cloud
Distributed Cloud(연결형) 클러스터 측정항목
Distributed Cloud(연결형) 클러스터의 경우 Distributed Cloud(연결형)는 Distributed Cloud(연결형) 노드에서 생성된 다음과 같은 유형의 측정항목을 제공합니다.
- 리소스 측정항목 은 CPU 부하 및 메모리 사용량과 같은 Distributed Cloud(연결형) 노드 및 포드 성능에 대한 정보를 제공합니다.
- 시스템 애플리케이션 측정항목 은
coredns와 같은 Distributed Cloud(연결형) 시스템 워크로드에 대한 정보를 제공합니다.
이러한 측정항목 목록은 Google Distributed Cloud 및 Google Distributed Cloud 측정항목을 참조하세요.
Distributed Cloud(연결형)는 Distributed Cloud(연결형) 클러스터와 연결된 Kubernetes 제어 영역에서 생성된 측정항목을 제공하지 않습니다.
Distributed Cloud(연결형) 하드웨어 측정항목
Distributed Cloud(연결형)는 다음 리소스 유형을 사용하여 Distributed Cloud(연결형) 하드웨어의 측정항목을 제공합니다.
edgecontainer.googleapis.com/Machineedgecontainer.googleapis.com/Rack
Machine 리소스 측정항목
Distributed Cloud(연결형)는 edgecontainer.googleapis.com/Machine 리소스에 대해 다음과 같은 Cloud Monitoring API 측정항목을 작성합니다.
| 측정항목 | 설명 |
|---|---|
/machine/cpu/total_cores
|
머신에 있는 물리적 프로세서 코어의 총 개수입니다. |
/machine/cpu/usage_time
|
머신에 있는 모든 코어의 누적 CPU 사용 시간입니다. 유형은
workload (고객 워크로드)
또는 system (기타 모든 항목)일 수 있습니다. |
/machine/cpu/utilization
|
머신의 CPU 사용률입니다. 범위는 0~1입니다. 유형은
workload (고객 워크로드)
또는 system (기타 모든 항목)일 수 있습니다. |
/machine/memory/total_bytes
|
머신의 총 메모리 바이트 수입니다. |
/machine/memory/used_bytes
|
머신에서 사용된 메모리의 바이트 수입니다. memory_type은
evictable (커널에서 회수 가능) 또는
non-evictable (회수 불가능)입니다. |
/machine/memory/utilization
|
머신의 메모리 사용률입니다. 범위는 0~1입니다.
memory_type은 evictable (커널에서 회수 가능
) 또는 non-evictable (회수 불가능)입니다. |
/machine/network/up
|
네트워크 인터페이스가 작동 중인지 여부를 나타냅니다. 기본 카드, 보조 카드, 포트를 포함합니다. |
/machine/network/link_speed
|
기본 네트워크 인터페이스 카드의 링크 속도입니다. |
/machine/network/received_bytes_count
|
기본 네트워크 인터페이스 카드의 수신 바이트 수입니다. |
/machine/network/sent_bytes_count
|
기본 네트워크 인터페이스 카드의 전송 바이트 수입니다. |
/machine/network/connectivity
|
기본 네트워크 인터페이스 카드에 인터넷 연결이 있는지 여부를 나타냅니다. |
/machine/disk/total_bytes
|
머신의 총 디스크 공간 바이트 수입니다. |
/machine/disk/used_bytes
|
머신에서 사용된 디스크 공간의 바이트 수입니다. |
/machine/disk/utilization
|
머신의 디스크 공간 사용률입니다. 범위는 0~1입니다. |
/machine/restart_count
|
머신이 재시작된 횟수입니다. |
/machine/uptime
|
마지막 재시작 이후 머신 가동 시간입니다. |
/machine/connected
|
머신이 에 연결되어 있는지 여부를 나타냅니다 Google Cloud. |
Rack 리소스 측정항목
Distributed Cloud(연결형)는 edgecontainer.googleapis.com/Rack 리소스에 대해 다음과 같은 Cloud Monitoring API 측정항목을 작성합니다.
| 측정항목 | 설명 |
|---|---|
/router/bgp_up
|
라우터의 BGP 피어링 세션이 작동 중이고
정상인지 여부를 나타냅니다.
router_id는 특정 라우터를 식별합니다 (랙당 최대 2개). |
/router/connected
|
BGP 라우터가 에 연결되어 있는지 여부를 나타냅니다 Google Cloud.
router_id는 특정 라우터를 식별합니다 (랙당 최대 2개). |
커스텀 애플리케이션 로그 및 측정항목 내보내기
Distributed Cloud(연결형)는 Distributed Cloud(연결형) 워크로드에서 실행되는 애플리케이션의 로그를 자동으로 내보냅니다. Distributed Cloud(연결형) 워크로드에서 실행되는 애플리케이션의 측정항목을 내보내려면 다음 섹션에 설명된 대로 주석을 추가해야 합니다.
측정항목 내보내기를 사용 설정하도록 워크로드에 주석 추가
애플리케이션에서 커스텀 측정항목 수집을 사용 설정하려면 다음 주석을 애플리케이션의 서비스 또는 배포 매니페스트에 추가합니다.
prometheus.io/scrape: "true"prometheus.io/path: "ENDPOINT_PATH".ENDPOINT_PATH를 대상 애플리케이션의 측정항목 엔드포인트 전체 경로로 바꿉니다.prometheus.io/port: "PORT_NUMBER": 애플리케이션의 측정항목 엔드포인트가 연결을 리슨하는 포트입니다.
예시 애플리케이션 실행
이 섹션에서는 커스텀 로그를 작성하고 커스텀 측정항목 엔드포인트를 노출하는 애플리케이션을 만듭니다.
다음 서비스 및 배포 매니페스트를
my-app.yaml파일에 저장합니다. 서비스에는 주석이 있습니다prometheus.io/scrape: "true":kind: Service apiVersion: v1 metadata: name: "monitoring-example" namespace: "default" annotations: prometheus.io/scrape: "true" spec: selector: app: "monitoring-example" ports: - name: http port: 9090 --- apiVersion: apps/v1 kind: Deployment metadata: name: "monitoring-example" namespace: "default" labels: app: "monitoring-example" spec: replicas: 1 selector: matchLabels: app: "monitoring-example" template: metadata: labels: app: "monitoring-example" spec: containers: - image: gcr.io/google-samples/prometheus-dummy-exporter:latest name: prometheus-example-exporter imagePullPolicy: Always command: - /bin/sh - -c - ./prometheus-dummy-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090 resources: requests: cpu: 100m배포와 서비스를 만듭니다.
kubectl --kubeconfig apply -f my-app.yaml
애플리케이션 로그 보기
콘솔
Google Cloud 콘솔에서 로그 탐색기 페이지로 이동합니다.
리소스 를 클릭합니다.
모든 리소스 유형 목록에서
Kubernetes Container를 선택합니다.클러스터 이름으로 사용자 클러스터의 이름을 선택합니다.
네임스페이스 이름으로
default를 선택합니다.**추가** 를 클릭한 후 **쿼리 실행** 을 클릭합니다.
쿼리 결과 섹션에서
monitoring-example배포의 로그 항목을 볼 수 있습니다. 예를 들면 다음과 같습니다.{ "textPayload": "2020/11/14 01:24:24 Starting to listen on :9090\n", "insertId": "1oa4vhg3qfxidt", "resource": { "type": "k8s_container", "labels": { "pod_name": "monitoring-example-7685d96496-xqfsf", "cluster_name": ..., "namespace_name": "default", "project_id": ..., "location": "us-west1", "container_name": "prometheus-example-exporter" } }, "timestamp": "2020-11-14T01:24:24.358600252Z", "labels": { "k8s-pod/pod-template-hash": "7685d96496", "k8s-pod/app": "monitoring-example" }, "logName": "projects/.../logs/stdout", "receiveTimestamp": "2020-11-14T01:24:39.562864735Z" }
gcloud
gcloud logging read명령어를 사용합니다.gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \ resource.type="k8s_container" AND resource.labels.namespace_name="default"'PROJECT_ID를 프로젝트의 ID로 바꿉니다.출력에서
monitoring-example배포의 로그 항목을 볼 수 있습니다. 예를 들면 다음과 같습니다.insertId: 1oa4vhg3qfxidt labels: k8s-pod/app: monitoring-example k8s- pod/pod-template-hash: 7685d96496 logName: projects/.../logs/stdout receiveTimestamp: '2020-11-14T01:24:39.562864735Z' resource: labels: cluster_name: ... container_name: prometheus-example-exporter location: us-west1 namespace_name: default pod_name: monitoring-example-7685d96496-xqfsf project_id: ... type: k8s_container textPayload: | 2020/11/14 01:24:24 Starting to listen on :9090 timestamp: '2020-11-14T01:24:24.358600252Z'
애플리케이션 측정항목 보기
예시 애플리케이션은 example_monitoring_up이라는 커스텀 측정항목을 노출합니다.
콘솔에서 해당 측정항목의 값을 볼 수 있습니다. Google Cloud
콘솔에서 측정항목 탐색기 페이지로 이동합니다. Google Cloud
리소스 유형으로
Kubernetes Pod을 선택합니다.측정항목으로
external/prometheus/example_monitoring_up을 선택합니다.차트에서
example_monitoring_up의 반복되는 값이 1인 것을 알 수 있습니다.
Prometheus로 측정항목 수집
Distributed Cloud(연결형)는 Prometheus 측정항목 솔루션을 지원하여 Distributed Cloud(연결형) 워크로드에서 측정항목을 수집합니다.
이를 위해 Distributed Cloud(연결형) 클러스터를 만들 때 Distributed Cloud(연결형)는 prom-monitoring이라는 이름으로 관리되지 않는 네임스페이스를 만듭니다.
이 네임스페이스를 사용하여 Prometheus를 배포하는 것이 좋습니다. 필요한 리소스를 prom-monitoring 네임스페이스에서 선택한 네임스페이스로 복사하고 Prometheus를 배포할 수도 있습니다.
Prometheus 측정항목 스크래핑 구성
Prometheus로 Distributed Cloud(연결형) 측정항목을 수집하려면 Prometheus 측정항목 스크래핑을 구성해야 합니다. 이렇게 하려면 Prometheus 포드에서 prometheus-scrape-config ConfigMap을 마운트하고 ConfigMap의 스크래핑 구성을 Prometheus 구성에 추가합니다. 예를 들면 다음과 같습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-deployment
namespace: prom-monitoring
labels:
app: prom-monitoring
spec:
replicas: 1
selector:
matchLabels:
app: prom-monitoring
template:
metadata:
labels:
app: prom-monitoring
spec:
containers:
- name: prometheus
image: prom/prometheus:main
args:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus/"
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/
- name: prometheus-scrape-config-volume
mountPath: /etc/prometheus/scrape/
- name: prometheus-storage-volume
mountPath: /prometheus/
- name: prometheus-scrape-token
mountPath: /var/run/secrets/kubernetes.io/stackdriver-prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
mountPath: /certs/stackdriver-prometheus-scrape
- name: metrics-providers-ca
mountPath: /certs/metrics-providers
- name: stackdriver-prometheus-etcd-scrape
mountPath: /stackdriver-prometheus-etcd-scrape
volumes:
- name: prometheus-storage-volume
emptyDir: {}
- name: prometheus-config-volume
configMap:
defaultMode: 420
name: prometheus-config
- name: prometheus-scrape-config-volume
configMap:
defaultMode: 420
name: prometheus-scrape-config
- name: prometheus-scrape-token
secret:
defaultMode: 420
secretName: prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
secret:
defaultMode: 420
secretName: stackdriver-prometheus-scrape-cert
- name: metrics-providers-ca
secret:
defaultMode: 420
items:
- key: ca.crt
path: ca.crt
secretName: metrics-providers-ca
- name: stackdriver-prometheus-etcd-scrape
secret:
defaultMode: 420
optional: true
secretName: stackdriver-prometheus-etcd-scrape
Prometheus로 워크로드 측정항목을 수집하려면 다음과 같이 대상 워크로드를 실행하는 서비스 및 포드에 주석을 추가해야 합니다.
Cloud Monitoring과 Prometheus 모두에 측정항목을 전송하려면 커스텀 로그 및 측정항목 내보내기에 설명된 주석을 사용합니다.
Prometheus에만 측정항목을 전송하려면 다음 주석을 사용합니다.
prometheus.io/unmanaged_scrape: "true"
prometheus.io/unmanaged_path: "ENDPOINT_PATH"
prometheus.io/unmanaged_port: "PORT_NUMBER"
Kafka로 로그 수집
Distributed Cloud(연결형)는 Apache Kafka 솔루션을 지원하여 Distributed Cloud(연결형) 배포에서 실행되는 워크로드의 로그를 수집합니다.
이 섹션의 단계를 완료하려면 작동하는 Kafka 배포가 있어야 합니다. Kafka 브로커는 PLAINTEXT 모드에서 리스너를 알립니다. SSL/SASL 관련 변수는 지원되지 않습니다.
Kafka 로깅을 위해 클러스터를 구성하려면 클러스터에서 실행할 부가기능을 구성하는 JSON 파일을 만들어야 합니다. --system-addons-config 플래그를 사용하여 클러스터를 만들 때 이 파일을 지정합니다. Kafka 구성을 수정해야 하는 경우 새 Kafka 설정으로 클러스터를 삭제하고 다시 만들어야 합니다.
시스템 부가기능 구성 파일에 다음 섹션을 추가합니다.
{
"systemAddonsConfig": {
"unmanagedKafkaConfig": {
"brokers": "BROKERS",
"topics": "TOPICS"
"topic_key": "TOPIC_KEY,
}
}
}
다음을 바꿉니다.
BROKERS:ip_address:port형식의 쉼표로 구분된 브로커 IP 주소 및 포트 쌍 목록입니다.TOPICS: 쉼표로 구분된 Kafka 주제 목록입니다.TOPIC_KEY: Kafka 주제 키입니다. 이를 통해 Kafka는 여러 주제가 있는 경우 주제를 선택할 수 있습니다.
Distributed Cloud(연결형) 클러스터를 만든 후 Kafka가 로그를 수집하지 않는 경우 다음을 확인하세요.
- 서버 측: Kafka 배포의 오류 로그에서 문제를 나타내는 항목을 확인합니다.
- 클라이언트 측: Google 지원팀에 문의 하여 시스템 포드 로그를 검색하고 검사합니다.