시각화 대시보드 만들기

이 페이지에서는 Google Distributed Cloud (GDC) 오프라인 프로젝트의 로그 및 측정항목 시각화에 사용되는 Grafana 인스턴스 내에서 대시보드를 만들고 관리하는 프로세스를 설명합니다.

대시보드는 시스템 성능을 동적으로 시각화하여 보여줍니다. 하나 이상의 맞춤설정 가능한 패널로 구성되며 각 패널은 GDC 구성요소의 특정 측정항목을 쿼리하고 표시하도록 구성됩니다. 이 패널을 사용하면 다음 작업을 할 수 있습니다.

  • 다양한 그래프 유형을 통해 측정항목을 시각화합니다.
  • 측정항목 값을 기반으로 알림을 트리거하는 알림 기준을 정의합니다.
  • 라벨, 단위, 기간과 같은 표시 속성을 맞춤설정합니다.
  • 정확한 비교를 위해 일관된 시간 해상도를 설정합니다.

Grafana 대시보드를 효과적으로 사용하면 GDC 환경의 성능과 상태에 관한 유용한 정보를 얻을 수 있습니다.

시작하기 전에

Grafana 대시보드에 액세스하고 이를 볼 수 있는 권한을 얻으려면 조직 IAM 관리자 또는 프로젝트 IAM 관리자에게 사전 정의된 Grafana 뷰어 역할 중 하나를 부여해 달라고 요청하세요.

또한 대시보드를 만드는 데 필요한 API 객체를 관리하는 데 필요한 권한을 얻으려면 조직 IAM 관리자 또는 프로젝트 IAM 관리자에게 연결된 ConfigMapDashboard 역할을 부여해 달라고 요청하세요.

필요한 액세스 수준 및 권한에 따라 조직 또는 프로젝트에서 이러한 리소스에 대한 생성자, 편집자 또는 뷰어 역할을 획득할 수 있습니다. 자세한 내용은 IAM 권한 준비를 참고하세요.

해당 역할을 획득한 후 대시보드를 만들기 전에 다음 단계를 따르세요.

  1. 워크로드에서 측정항목을 수집합니다.
  2. kubeconfig 파일의 경로를 환경 변수로 설정합니다.

    export KUBECONFIG=KUBECONFIG_PATH
    

    KUBECONFIG_PATH를 대시보드를 만들려는 관리 API 서버의 kubeconfig 파일 경로로 바꿉니다.

Grafana 엔드포인트 식별

다음 URL은 프로젝트의 Grafana 인스턴스 엔드포인트입니다.

https://GDC_URL/PROJECT_NAMESPACE/grafana

다음을 바꿉니다.

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

예를 들어 org-1 조직의 platform-obs 프로젝트에 대한 Grafana 엔드포인트는 https://org-1/platform-obs/grafana입니다.

커스텀 대시보드 만들기

다음 단계에 따라 Grafana 대시보드를 만들고 설정을 맞춤설정하세요.

  1. Grafana 엔드포인트를 열어 사용자 인터페이스를 표시합니다.
  2. 탐색 메뉴에서 추가를 클릭합니다.
  3. 드롭다운 메뉴에서 대시보드를 클릭합니다. Grafana에서 빈 대시보드를 만듭니다.
  4. 빈 대시보드에 원하는 패널을 모두 추가합니다.

  5. 각 패널의 데이터 소스 메뉴에서 측정항목 (prometheus), 감사 로그(auditloki), 운영 로그 (oploki) 등 패널에 사용할 데이터 소스를 선택합니다.

    멀티 영역 유니버스의 경우 Grafana에는 여러 영역의 측정항목과 로그를 사용하여 대시보드 시각화를 만들 수 있는 영역 라벨이 지정된 데이터 소스가 있습니다. 이러한 데이터 소스의 이름은 DATA_SOURCE-ZONE_ID 형식으로 지정됩니다. 여기서

    • DATA_SOURCE는 다음 값 중 하나를 사용할 수 있습니다.

      • Prometheus (prometheus 또는 metrics)를 사용하여 측정항목을 표시합니다.
      • 감사 로그 (auditloki)를 선택하여 감사 로그를 표시합니다.
      • 운영 로그 (oploki): 운영 로그를 표시합니다.
    • ZONE_ID은 대시보드에 데이터를 표시하려는 영역의 ID입니다.

    또한 교차 영역 리소스의 시각화 대시보드를 만들려면 데이터 소스 이름이 --Mixed--입니다. 이 데이터 소스를 사용하면 영역별로 여러 쿼리를 추가하고 단일 대시보드에서 영역 간 데이터 시각화를 사용할 수 있습니다. 이 기능을 사용하면 유니버스의 여러 영역에서 단일 측정항목 또는 로그 쿼리 간의 동작을 비교할 수 있습니다.

  6. 세부정보를 맞춤설정하고 패널을 수정하여 쿼리를 제공하거나 기타 업데이트를 실행합니다.

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

  8. 탐색 메뉴에서 JSON 모델을 선택합니다.

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

ConfigMap 객체를 만듭니다.

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

  1. 터미널 창을 엽니다.
  2. ConfigMap 객체를 만듭니다. ConfigMap 객체의 data 섹션에 이전에 복사한 JSON 모델을 붙여넣습니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: PROJECT_NAMESPACE
      name: CONFIGMAP_NAME
    data:
      JSON_FILE_NAME.json: |
        {
        JSON_MODEL
        }
    

    다음을 바꿉니다.

    • PROJECT_NAMESPACE: 프로젝트 네임스페이스
    • CONFIGMAP_NAME: ConfigMap 객체에 지정하려는 이름입니다.
    • JSON_FILE_NAME: 대시보드의 JSON 모델 파일에 지정할 이름입니다.
    • JSON_MODEL: 맞춤 대시보드의 JSON 모델입니다.

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

  3. ConfigMap 객체를 Management API 서버에 적용합니다.

    kubectl --kubeconfig ${KUBECONFIG} apply -f CONFIGMAP_NAME.yaml
    

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": "--",
            "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 커스텀 리소스를 만들고 커스텀 대시보드를 프로젝트의 Grafana 인스턴스로 가져옵니다.

  1. 터미널 창을 엽니다.
  2. Dashboard 맞춤 리소스를 만들고 ConfigMap 객체에 지정한 이름으로 파일을 구성합니다.

    apiVersion: observability.gdc.goog/v1
    kind: Dashboard
    metadata:
      namespace: PROJECT_NAMESPACE
      name: DASHBOARD_NAME
    spec:
      configMapRef:
        name: CONFIGMAP_NAME
        namespace: PROJECT_NAMESPACE
        key: JSON_FILE_NAME.json
      foldername: Default
    

    다음을 바꿉니다.

    • PROJECT_NAMESPACE: 프로젝트 네임스페이스
    • DASHBOARD_NAME: Dashboard 커스텀 리소스에 지정할 이름입니다.
    • CONFIGMAP_NAME: ConfigMap 객체에 지정한 이름입니다.
    • JSON_FILE_NAME: ConfigMap 객체에 대시보드의 JSON 모델이 포함된 파일에 지정한 이름입니다.
  3. Dashboard 커스텀 리소스를 관리 API 서버에 적용합니다.

    kubectl --kubeconfig ${KUBECONFIG} apply -f DASHBOARD_NAME.yaml
    

시스템은 Dashboard 커스텀 리소스와 연결된 ConfigMap 객체의 변경사항을 모두 모니터링합니다. 대시보드를 업데이트하거나 삭제하려면 이러한 리소스를 수정하세요. 수정사항이 있으면 Grafana가 업데이트됩니다. Grafana 사용자 인터페이스에서 직접 실행한 업데이트는 저장할 수 없습니다.