시각적 대시보드 만들기

이 페이지에서는 시스템 모니터링 인스턴스라고도 하는 시스템 모니터링 인스턴스입니다. 대시보드를 사용하여 네트워크 모니터링, 서버 모니터링과 같은 프로젝트의 모니터링 작업을 실행합니다.

관측 가능성 플랫폼이 GDC 프로젝트에 배포된 워크로드에서 생성된 측정항목을 수집하면 구성에서 연결된 측정항목 라벨을 저장하고 모든 데이터 소스의 파일을 집계합니다. 그런 다음 모니터링 인스턴스의 사용자 인터페이스 (UI)에서 특정 측정항목을 쿼리하고 시각화하기 위해 맞춤설정된 대시보드를 만들 수 있습니다.

대시보드는 데이터 소스에 구성된 Prometheus 측정항목과 상호작용하는 하나 이상의 맞춤설정 가능한 패널의 동적 시각적 배열입니다. 쿼리를 실행하면 이러한 각 패널을 사용하여 GDC 구성요소의 특정 측정항목을 시각화하고 노출할 수 있습니다.

관측 가능성 플랫폼은 측정항목의 시각적 배열을 맞춤설정할 수 있는 API를 노출합니다. 예를 들어 허용 기준을 설정하고, 적절한 신호를 표시하고, 그래프에 라벨을 지정하고, 일관된 시간 해상도를 선택합니다.

사용 가능한 대시보드

환경이 실행 중이라고 가정하면 모니터링 인스턴스의 홈페이지에 몇 가지 측정항목 대시보드가 즉시 표시됩니다. 예를 들어 스위치 상태와 시스템 구성요소의 상태를 관찰할 수 있습니다.

스위치 및 클러스터 대시보드를 사용하여 클러스터 및 노드 측정항목을 모니터링합니다. 로깅 및 모니터링 대시보드에 액세스하여 관리자 클러스터를 관찰합니다.

사용 가능한 대시보드 및 최근에 본 대시보드 목록이 표시된 홈페이지

가장 관련성이 높은 플랫폼 관리자 (PA) 측정항목은 다음과 같습니다.

  • Kubernetes / API 서버: 조직의 클러스터별 API 서버 상태를 표시합니다.
  • Kubernetes / 컴퓨팅 리소스 / 멀티 클러스터: 조직 전체의 리소스 사용량을 표시합니다.
  • Kubernetes / 컴퓨팅 리소스 / 클러스터: 클러스터별 리소스 사용률을 표시합니다.
  • Kubernetes / 영구 볼륨: 각 클러스터에서 Kubernetes 영구 볼륨의 사용률을 표시합니다.
  • 노드 상태: 각 클러스터의 각 노드에서 리소스 사용량을 표시합니다.
  • 포드 상태: 각 클러스터에 있는 각 포드의 리소스 소비량을 표시합니다.

다음 이미지는 Kubernetes / 컴퓨팅 리소스 / 멀티 클러스터 대시보드의 예를 보여줍니다.

CPU 사용량을 보여주는 선 그래프와 CPU 할당량을 보여주는 클러스터 목록

프로젝트의 모니터링 인스턴스에 액세스

모니터링 대시보드에 액세스하려면 승인을 받아야 합니다. 프로젝트의 모니터링 인스턴스에 로그인하고 측정항목을 보는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 조직 Grafana 뷰어 (organization-grafana-viewer) 역할을 부여해 달라고 요청하세요. 조직 IAM 관리자는 역할 바인딩을 만들어 액세스 권한을 부여할 수 있습니다.

kubectl --kubeconfig ADMIN_KUBECONFIG create rolebinding pa-grafana-viewer-binding -n platform-obs --user=USER_NAME --clusterrole=organization-grafana-viewer

다음을 바꿉니다.

  • ADMIN_KUBECONFIG: 관리자 클러스터의 kubeconfig 파일 경로입니다.
  • USER_NAME: 역할 바인딩이 필요한 사용자의 계정 이름입니다.

역할 할당에 대한 자세한 내용은 다음 리소스를 참고하세요.

Grafana 대시보드 만들기

이 섹션에서는 Grafana 인스턴스에서 대시보드를 만들고 관리하는 과정을 설명합니다.

다음 단계를 따라 GDC에서 대시보드를 만드세요.

  1. 시작하기 전에 섹션의 기본 요건을 완료합니다.
  2. 프로젝트의 Grafana 엔드포인트를 엽니다.
  3. 대시보드의 ConfigMap 객체 만들기
  4. Dashboard 커스텀 리소스 (CR)를 만듭니다.

시작하기 전에

대시보드를 만들기 전에 모니터링 인스턴스에 대한 액세스 권한을 획득해야 합니다. 자세한 내용은 대시보드 액세스 권한 얻기를 참고하세요.

  1. 대시보드를 만들기 전에 GDC 프로젝트에서 측정항목을 수집합니다.
  2. 로그인하고, 대시보드를 만들고, 측정항목을 시각화하려면 프로젝트 IAM 관리자에게 프로젝트 Grafana 뷰어 (project-grafana-viewer) 역할을 부여해 달라고 요청하세요.
  3. kubeconfig 파일의 경로를 환경 변수로 설정합니다.

    export KUBECONFIG=KUBECONFIG_FILE
    

    KUBECONFIG_FILE를 대시보드를 만들려는 관리 클러스터의 kubeconfig 파일 경로로 바꿉니다.

모니터링 엔드포인트

다음 URL을 열어 프로젝트의 엔드포인트에 액세스합니다.

https://GDC_URL/PROJECT_NAMESPACE/grafana

다음을 바꿉니다.

  • GDC_URL: GDC의 조직 URL입니다.
  • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.

대시보드의 ConfigMap 객체 만들기

다음 단계에 따라 대시보드의 JSON 모델이 포함된 ConfigMap 객체를 만드세요.

  1. 프로젝트의 엔드포인트로 이동합니다.
  2. 탐색 메뉴에서 추가 버튼을 클릭합니다.
  3. 표시되는 드롭다운 메뉴에서 대시보드를 클릭합니다. 인스턴스에서 빈 대시보드를 만듭니다.
  4. 빈 대시보드에 원하는 패널을 모두 추가합니다. 세부정보를 맞춤설정하고 패널을 수정하여 쿼리를 제공하거나 기타 업데이트를 할 수 있습니다.

  5. 메뉴 바에서 대시보드 설정 버튼을 클릭하여 설정 페이지를 엽니다.

  6. 탐색 메뉴에서 JSON 모델 옵션을 클릭합니다.

  7. 대시보드의 JSON 모델을 복사하여 일반 텍스트 파일에 붙여넣어 사용할 수 있도록 합니다.

  8. JSON 모델에서 최상위 iduid 필드를 null 값으로 바꿉니다.

  9. 명령줄에서 ConfigMap 객체를 만듭니다. ConfigMap 객체의 data 섹션에 이전에 .json 파일 내에 복사한 JSON 모델을 붙여넣습니다.

    cat <<EOF | kubectl --kubeconfig ${KUBECONFIG} apply -f -
    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: PROJECT_NAMESPACE
      name: DASHBOARD_CONFIGMAP_NAME
    data:
      JSON_FILE_NAME.json: |
        {
        <JSON model of the dashboard>
        }
    EOF
    

    다음을 바꿉니다.

    • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.
    • DASHBOARD_CONFIGMAP_NAME: ConfigMap 객체에 지정할 이름입니다.
    • JSON_FILE_NAME: 대시보드의 JSON 모델을 붙여넣을 파일에 지정할 이름입니다.

    이 객체의 모양에 대한 예시는 대시보드의 ConfigMap 예시를 참고하세요.

  10. 대시보드의 ConfigMap 객체를 관리자 클러스터에 배포합니다.

대시보드의 ConfigMap

다음 YAML 파일은 platform-obs 네임스페이스의 측정항목 대시보드의 ConfigMap 객체 예를 보여줍니다.

  apiVersion: v1
  kind: ConfigMap
  metadata:
    namespace: platform-obs
    name: my-project-dashboard-configmap
  data:
    my-project-dashboard.json: |
      {
      "annotations": {
        "list": [
          {
            "builtIn": 1,
            "datasource": "-- Grafana --",
            "enable": true,
            "hide": true,
            "iconColor": "rgba(0, 211, 255, 1)",
            "name": "Annotations & Alerts",
            "type": "dashboard"
          }
        ]
      },
      "editable": true,
      "graphTooltip": 0,
      "id": null,
      "links": [],
      "panels": [],
      "schemaVersion": 27,
      "style": "dark",
      "tags": [],
      "templating": {
        "list": []
      },
      "time": {
        "from": "now-6h",
        "to": "now"
      },
      "timepicker": {},
      "timezone": "",
      "title": "Sample dashboard",
      "uid": null,
      "version": 0
      }

Dashboard 커스텀 리소스 만들기

다음 단계에 따라 Dashboard 커스텀 리소스 (CR)를 만들고 지정된 프로젝트에서 대시보드를 사용 설정하세요.

  1. 명령줄에서 Dashboard CR을 만들고 대시보드의 ConfigMap 객체에 지정한 이름으로 파일을 구성합니다.

    cat <<EOF | kubectl --kubeconfig ${KUBECONFIG} apply -f -
    apiVersion: observability.gdc.goog/v1alpha1
    kind: Dashboard
    metadata:
      namespace: PROJECT_NAMESPACE
      name: CUSTOM_RESOURCE_NAME
    spec:
      configMapRef:
        name: DASHBOARD_CONFIGMAP_NAME
        namespace: PROJECT_NAMESPACE
        key: JSON_FILE_NAME.json
      foldername: Default
    EOF
    

    다음을 바꿉니다.

    • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.
    • CUSTOM_RESOURCE_NAME: Dashboard 커스텀 리소스에 지정할 이름입니다.
    • DASHBOARD_CONFIGMAP_NAME: 대시보드의 ConfigMap 객체에 지정한 이름입니다.
    • JSON_FILE_NAME: ConfigMap 객체에 대시보드의 JSON 모델이 포함된 파일에 지정한 이름입니다.
  2. Dashboard CR을 프로젝트 네임스페이스에 배포합니다. 이 작업을 수행하면 사전 정의된 대시보드를 프로젝트의 모니터링 인스턴스로 가져오도록 관측 가능성 서비스가 구성됩니다.

대시보드는 측정항목 및 로그와 마찬가지로 다른 프로젝트와 격리되어 있습니다. 따라서 여러 프로젝트에서 동일한 대시보드를 사용하려면 각 프로젝트에 Dashboard CR을 배포하세요. 또한 대시보드에서 액세스하는 로깅 및 모니터링 데이터는 이러한 모든 프로젝트에서 사용할 수 있어야 합니다.

대시보드를 처리하는 프로세스는 Dashboard CR과 ConfigMap 객체의 변경사항을 모두 감지합니다. 둘 중 하나를 수정하면 프로그램에서 모니터링 인스턴스에 변경사항을 반영합니다. 대시보드를 업데이트하거나 삭제하려면 CR에서 변경사항을 적용하고 다시 배포해야 합니다. 모니터링 UI에서 직접 실행한 업데이트는 저장할 수 없습니다.

폴더에 대시보드를 만들거나 폴더를 변경하려면 Dashboard CR의 spec 섹션에서 foldername 값을 수정하세요. 그렇지 않으면 Default로 둡니다. 폴더가 없으면 프로세스에서 자동으로 폴더를 만듭니다.