로그 기록 및 모니터링

모니터링 대시보드

클러스터 및 노드 측정항목 모니터링을 위한 샘플 대시보드를 관리 센터에서 사용할 수 있습니다.

모니터링 탭

Grafana 모니터링 대시보드 버튼을 누르면 관리 클러스터에서 호스팅되는 Grafana 애플리케이션이 열립니다. Grafana 액세스는 관리 센터를 통해 제어됩니다. 관리 센터에 로그인되어 있으면 추가 로그인이 필요하지 않습니다.

대시보드

로그인하면 데모용 샘플 대시보드 목록을 볼 수 있습니다.

Grafana 대시보드

로그

'Grafana Loki 로그' 버튼을 누르면 Grafana 탐색기가 열리고 Kubernetes 시스템 로그를 포함한 로그를 쿼리할 수 있습니다.

쿼리할 로그에 라벨이 추가됩니다.

로그 라벨

로그 유형 라벨
컨테이너 로그
  • cluster=CLUSTER_NAME
  • resources=k8s_container
  • namespace=NAMESPACE_NAME
  • node=NODE_NAME
  • pod=POD_NAME
  • container=CONTAINER_NAME
  • 기타 Kubernetes 라벨
노드 Journald 로그
  • cluster=CLUSTER_NAME
  • resources=k8s_node
  • node=NODE_NAME
  • identifier=SYSLOG_IDENTIFIER
  • machine=MACHINE_ID
감사 로그
  • cluster=CLUSTER_NAME
  • resource=k8s_audit
  • kind=KIND
  • apiVersion=API_VERSION
  • level=LEVEL
  • vert=VERB
  • requestURI=REQUEST_URI

모든 Kubernetes 라벨과 클러스터 라벨이 로그 라벨로 포함됩니다.

샘플 쿼리

  • 컨테이너 로그

    {cluster="admin", namespace="kube-system", resources="k8s_container", container="kube-apiserver"}
    

    Grafana 쿼리 컨테이너 로그

  • 노드 Journald 로그

    {cluster="admin", resources="k8s_node"}
    

    Grafana 쿼리 노드 로그

  • 감사 로그

    {cluster="admin", resources="k8s_audit"}
    

    Grafana 쿼리 감사 로그

StorageClass 구성

PersistentVolumeClaims는 측정항목, 로그, 대시보드, 알림을 저장하도록 요청됩니다. 클러스터를 만들면 클러스터가 LogMon 커스텀 리소스를 자동으로 만듭니다. 기본 StorageClass를 재정의하려면 다음 단계를 완료합니다.

  1. 다음 명령어를 실행하여 명령줄 편집기에서 LogMon 커스텀 리소스를 엽니다.

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. LogMon 커스텀 리소스에서 spec 필드 아래의 storageClassName을 업데이트합니다.

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          default_loki:
            deployment:
              storageClassName: anthos-system # configure the new storage class here 
      system_metrics:
        outputs:
          default_prometheus:
            deployment:
              storageClassName: anthos-system # configure the new storage class here
    
  3. 변경사항을 LogMon 커스텀 리소스에 저장하려면 명령줄 편집기를 저장하고 종료합니다.

스토리지 크기 구성

클러스터를 만들면 클러스터가 LogMon 커스텀 리소스를 자동으로 만듭니다. 측정항목, 로그, 대시보드, 알림에 대한 스토리지 크기를 재정의하려면 다음 단계를 완료합니다.

  1. 다음 명령어를 실행하여 명령줄 편집기에서 LogMon 커스텀 리소스를 엽니다.

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. LogMon 커스텀 리소스에서 spec 필드 아래의 storageSize을 업데이트합니다.

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          default_loki:
            deployment:
              components:
                loki:
                   storageSize: 20Gi # configure the new storage size for logs here
      system_metrics:
        outputs:
          default_prometheus:
            deployment:
              components:
                alertmanager:
                   storageSize: 1Gi # configure the new storage size for alerts here
                grafana:
                   storageSize: 1Gi # configure the new storage size for dashboards here
                prometheus:
                   storageSize: 20Gi # configure the new storage size for metrics here
    ````
    
  3. 변경사항을 LogMon 커스텀 리소스에 저장하려면 명령줄 편집기를 저장하고 종료합니다.

보관 기간 구성

클러스터에서 실행되는 Prometheus 및 Loki 에이전트에서 로그 보관 기간을 구성하려면 다음 단계를 완료합니다.

  1. 다음 명령어를 실행하여 명령줄 편집기에서 LogMon 커스텀 리소스를 엽니다.

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  2. LogMon 커스텀 리소스에서 spec 필드 아래의 retentionTime을 업데이트합니다.

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          default_loki:
            deployment:
              retentionPolicy:
                retentionTime: 720h # configure the new retention time for logs here
      system_metrics:
        outputs:
          default_prometheus:
            deployment:
              retentionPolicy:
                retentionTime: 720h # configure the new retention time for metrics here
    
  3. 변경사항을 LogMon 커스텀 리소스에 저장하려면 명령줄 편집기를 저장하고 종료합니다.

fluent-bit 추가 출력 구성

클러스터에서 실행되는 Loki 외에 다른 대상으로 로그 내보내기도 지원됩니다. 지원되는 대상 목록을 참조하세요. 추가 로그 출력 대상을 구성하려면 다음 단계를 완료합니다.

  1. kube-system 네임스페이스에서 logmon: system_logs 라벨로 configmap을 만듭니다. 추가 출력 구성은 fluent-bit 출력 플러그인과 동일한 구문을 포함하며, data 필드 아래의 output.conf 파일에 추가됩니다. 샘플 구성 파일을 참조하세요.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      # The name should match the configmap name specified in step 3.
      name: <customized-system-logs-fluent-bit-output-config>
      # Don't change the namespace
      namespace: kube-system
      labels:
        # This label is required.
        logmon: system_logs
    data:
      # The file name must be output.conf
      output.conf: |
        # Add a customized fluent-bit output plugin configuration here
    
  2. 다음 명령어를 실행하여 명령줄 편집기에서 LogMon 커스텀 리소스를 엽니다.

    kubectl --kubeconfig=ADMIN_OIDC_KUBECONFIG -n kube-system edit logmon logmon-default
    
  3. LogMon 커스텀 리소스에서 spec/system_logs/outputs 필드 아래에 additionalOutput 필드를 추가합니다.

    apiVersion: addons.gke.io/v1alpha1
    kind: Logmon
    metadata:
      # Don't change the name
      name: logmon-default
      # Don't change the namespace
      namespace: kube-system
    spec:
      system_logs:
        outputs:
          additionalOutput:
            fluentbitConfigmaps:
            # The name should match the configmap name created in step 1.
            - "<customized-system-logs-fluent-bit-output-config>"
            # Scheme: []v1.VolumeMount. Add volumeMounts if necessary
            volumeMounts:
            - ...
            - ...
            # Scheme: []v1.Volume. Add volumes if necessary
            volumes:
            - ...
            - ...
    
  4. 변경사항을 LogMon 커스텀 리소스에 저장하려면 명령줄 편집기를 저장하고 종료합니다.