Cloud Monitoring으로 Grafana 대시보드 가져오기

Cloud Monitoring은 Grafana JSON 형식의 대시보드 파일을 Cloud Monitoring으로 가져오는 데 사용할 수 있는 가져오기 도구를 제공합니다. 이 문서에서는 가져오기 도구를 사용하여 Grafana 대시보드를 변환하고 선택적으로 Google Cloud 프로젝트에 업로드하는 방법을 설명합니다.

가져오기 도구를 사용하면 한 번의 작업으로 Grafana 대시보드를 변환하여 Cloud Monitoring에 업로드할 수도 있고, 변환과 업로드 단계를 개별적으로 수행할 수도 있습니다. 변환된 대시보드를 수정한 후에 업로드하려는 경우 이 방식을 선택할 수 있습니다.

가져오기 도구는 Grafana에서 사용하는 JSON 형식의 대시보드 파일을 Cloud Monitoring에서 사용하는 JSON 형식으로 변환합니다. 변환된 대시보드는 원래 Grafana 대시보드와 다를 수 있습니다. Grafana 대시보드가 Cloud Monitoring 대시보드에서 제공되지 않는 기능을 사용하는 경우 Grafana 대시보드의 해당 요소가 변환되지 않습니다. 변환 출력에 이러한 차이점이 나열됩니다. 가져오기 도구는 PromQL 표현식과 Prometheus 데이터 소스를 사용하는 대시보드만 처리하도록 설계되었습니다. 형식이 다른 쿼리나 데이터 소스를 사용하는 대시보드를 성공적으로 가져오지 못할 수 있습니다.

Cloud Monitoring으로 Prometheus 알림을 가져오는 방법은 Prometheus에서 알림 규칙 및 수신자 마이그레이션을 참조하세요.

시작하기 전에

대시보드 가져오기 도구를 설치하고 실행하려면 먼저 다음을 수행해야 합니다.

  1. Bash 셸 스크립트를 지원하는 환경을 사용합니다.
  2. Git이 있거나 Git을 설치합니다.
  3. Node.js 버전 20.4.1 이상이 있거나 Node.js를 설치합니다.
  4. Google Cloud CLI가 있거나 Google Cloud CLI를 설치합니다. gcloud CLI가 이미 설치되어 있는 경우 gcloud components update 명령어를 실행하여 최신 버전이 있는지 확인합니다.

대시보드 가져오기 도구 가져오기

대시보드 가져오기 도구는 monitoring-dashboard-samples GitHub 저장소에 저장되어 있습니다. 가져오기 도구를 가져오려면 다음을 수행합니다.

  1. 저장소를 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/monitoring-dashboard-samples
    
  2. 대시보드 가져오기 도구의 디렉터리로 변경합니다.

    cd monitoring-dashboard-samples/scripts/dashboard-importer
    

대시보드 가져오기 도구에는 다음 스크립트가 포함됩니다.

  • import.sh: 대시보드를 변환하고 선택적으로 변환된 대시보드를 Cloud Monitoring에 업로드합니다.

  • upload.sh: 변환된 대시보드 또는 Monitoring 대시보드를 Cloud Monitoring에 업로드합니다. import.sh 스크립트는 이 스크립트를 호출하여 업로드를 수행합니다.

import.sh 스크립트를 사용할 경우 변환할 Grafana 대시보드의 위치를 지정해야 합니다. 가져오기 도구는 변환된 대시보드 및 기타 정보가 포함된 디렉터리를 만듭니다. 다음 섹션에서는 이러한 디렉터리를 설명합니다.

변환할 Grafana 대시보드

대시보드 가져오기 도구를 사용하면 대시보드 파일의 경로를 지정하여 한 번에 하나 이상의 대시보드를 변환할 수 있습니다.

  • 대시보드가 포함된 디렉터리의 경로를 지정할 수 있습니다. 디렉터리에서 확장자가 .json인 파일만 처리됩니다.

  • 단일 JSON 파일의 경로를 지정할 수 있습니다. 파일 이름에 .json 확장자가 있어야 합니다.

변환된 대시보드 및 기타 정보

가져오기 도구가 처음 실행되면 reports 하위 디렉터리가 생성됩니다. 가져오기 도구를 실행할 때마다 reports 디렉터리 아래에 날짜 및 시간으로 이름이 지정된 새 출력 디렉터리가 생깁니다. 출력 디렉터리 이름의 구조는 다음과 같습니다.
reports/YYYY-M-D/HH:MM:SS

가져오기 도구의 각 호출에서 출력 디렉터리에는 다음이 포함됩니다.

  • 원본 Grafana 대시보드와 이름이 같으며 Cloud Monitoring JSON 형식으로 변환된 하나 이상의 파일
  • 변환된 각 대시보드에 대해 다음 정보를 기록하는 report.json 파일
    • 변환된 Grafana 대시보드 파일의 이름과 위치
    • 변환된 Monitoring 대시보드 파일의 이름과 위치
    • Cloud Monitoring에 해당 기능이 없으므로 변환된 대시보드에 포함될 수 없는 Grafana 대시보드의 기능에 대한 알림
    • 변환 시 발생한 오류

대시보드를 업로드한 경우 보고서 디렉터리에는 대시보드가 업로드된 URL이 포함된 upload_HH:MM:SS.txt 파일도 포함되어 있습니다.

Grafana 대시보드 가져오기

Grafana 대시보드를 변환하여 Cloud Monitoring에 업로드하려면 import.sh 스크립트를 사용합니다.

./import.sh PATH_TO_DIRECTORY_OR_FILE PROJECT_ID

이 스크립트는 다음을 수행합니다.

  1. PATH_TO_DIRECTORY_OR_FILE의 대시보드를 Grafana에서 사용하는 JSON 형식에서 Cloud Monitoring에서 사용하는 JSON 형식으로 변환합니다.
  2. Google Cloud CLI를 사용하여 변환된 대시보드를 Google Cloud 프로젝트 PROJECT_ID에 업로드합니다.

    gcloud CLI에 인증하지 않은 경우 import.sh 스크립트를 실행하기 전에 gcloud auth login 명령어를 실행합니다.

디렉터리의 모든 Grafana 대시보드를 가져올 수도 있고, 디렉터리에서 가져올 대시보드 하나를 지정할 수도 있습니다.

  • GRAFANA_DASHBOARDS_DIR 디렉터리의 모든 대시보드를 PROJECT_ID Google Cloud 프로젝트로 가져오려면 스크립트를 호출할 때 가져오기 도구 디렉터리를 기준으로 디렉터리를 지정하고 대상 프로젝트 ID를 지정합니다.

    ./import.sh GRAFANA_DASHBOARDS_DIR PROJECT_ID
    
  • GRAFANA_DASHBOARDS_DIR 디렉터리의 MY_GRAFANA_DASHBOARD.json 대시보드만 변환하려면 스크립트를 호출할 때 가져오기 도구 디렉터리를 기준으로 대시보드 파일 이름을 포함합니다.

    ./import.sh GRAFANA_DASHBOARDS_DIR/MY_GRAFANA_DASHBOARD.json PROJECT_ID
    

대시보드 가져오기 도구에는 샘플 Grafana 대시보드가 examples/k8s_cluster_example.json으로 포함되어 있습니다. 다음 명령어는 해당 대시보드를 지정된 프로젝트로 가져옵니다.

./import.sh examples/k8s_cluster_example.json PROJECT_ID

PROJECT_ID my-project-test-1로 호출한 경우 다음과 유사한 결과가 출력됩니다.

Converting: Kubernetes Cluster Overview
✓ Kubernetes Cluster Overview converted successfully

Conversion of examples/k8s_cluster_example.json complete. Conversion Report located at: reports/2023-9-28/22:14:57/report.json

To upload these dashboard(s) manually, you can run:
./upload.sh reports/2023-9-28/22:14:57/ <PROJECT_ID>

Conversion Complete. Proceeding to uploading...

Now running: ./upload.sh reports/2023-9-28/22:14:57/ my-project-test-1

Uploading 1 dashboard(s) from a directory with the following args:
Directory: reports/2023-9-28/22:14:57/
Project: my-project-test-1

The following are your dashboards:
- k8s_cluster_example.json

import.sh 스크립트가 출력 디렉터리를 만든 후에 대시보드를 변환했지만 변환된 대시보드를 프로젝트에 업로드하기 전에 확인 메시지를 표시합니다. y를 입력하면 스크립트가 대시보드를 업로드하고 새 대시보드의 URL을 출력합니다.

Would you like to continue? (y/n) y

✓ k8s_cluster_example.json successfully uploaded:
https://console.cloud.google.com/monitoring/dashboards/builder/9c341ef8-cfef-4bdd-98d5-821571c520ef?project=my-project-test-1

Upload log created in reports/2023-9-28/22:14:57/upload_22:14:57.txt

Need to troubleshoot? Please visit:
https://github.com/GoogleCloudPlatform/monitoring-dashboard-samples/tree/master/scripts/dashboard-importer/README.md#troubleshooting

업로드하지 않고 Grafana 대시보드 변환

변환된 대시보드를 업로드하기 전에 검사하거나 수정하려면 import.sh 스크립트를 호출할 때 PROJECT_ID 값을 생략합니다.

./import.sh PATH_TO_DIRECTORY_OR_FILE

가져오기 도구는 Grafana 대시보드 가져오기에 설명된 대로 대시보드를 변환하지만 변환된 대시보드를 Cloud Monitoring에 업로드하지 않습니다.

나중에 upload.sh 스크립트를 수동으로 사용하여 업로드 단계를 실행할 수 있습니다.

대시보드 수동 업로드

Cloud Monitoring JSON 형식의 대시보드를 수동으로 업로드하려면 upload.sh 스크립트를 사용합니다.

    ./upload.sh PATH_TO_DIRECTORY_OR_FILE PROJECT_ID

upload.sh 스크립트는 Google Cloud CLI를 사용하여 JSON 파일을 업로드합니다. gcloud CLI에 인증하지 않은 경우 upload.sh 스크립트를 실행하기 전에 gcloud auth login 명령어를 실행합니다.

  • reports/YYYY-M-D/HH:MM:SS 디렉터리의 모든 대시보드를 업로드하려면 스크립트를 호출할 때 가져오기 도구 디렉터리를 기준으로 디렉터리를 지정하고 대상 프로젝트 ID를 지정합니다.

    ./upload.sh reports/YYYY-M-D/HH:MM:SS PROJECT_ID
    

    디렉터리에서 모든 대시보드를 업로드할 때 스크립트는 대시보드를 업로드하기 전에 계속할지 아아니면 종료할지 묻는 메시지를 표시합니다.

  • reports/YYYY-M-D/HH:MM:SS 디렉터리의 특정 대시보드를 업로드하려면 스크립트를 호출할 때 가져오기 도구 디렉터리를 기준으로 디렉터리와 파일 이름을 지정하고 대상 프로젝트 ID를 지정합니다.

    ./upload.sh reports/YYYY-M-D/HH:MM:SS/MY_MONITORING_DASHBOARD.json PROJECT_ID
    

    디렉터리에서 단일 대시보드를 업로드하면 스크립트 실행 시 대시보드를 업로드하기 전에 프롬프트가 표시되지 않습니다.

예를 들어 다음 명령어는 reports 하위 디렉터리에 저장된 대시보드를 Google Cloud 프로젝트 my-project-test-1에 업로드합니다.

./upload.sh reports/2023-9-26/22:48:31/k8s_cluster_example.json my-project-test-1
Uploading json file: k8s_cluster_example.json to project: my-project-test-1...

✓ k8s_cluster_example.json successfully uploaded:
https://console.cloud.google.com/monitoring/dashboards/builder/25956d9a-93e2-410c-ada1-ec6872cb6665?project=my-project-test-1

문제 해결

때때로 도구에 대한 작은 업데이트 및 버그 수정이 게시됩니다. 추가 문제 해결을 시도하기 전에 먼저 git pull을 사용해서 저장소의 최신 버전을 가져와 문제를 해결한 후 가져오기를 다시 시도하세요.

변환된 대시보드에서 차트에 데이터가 표시되지 않는 등의 문제가 발생한 경우 가져오기 도구의 README 파일을 참조하세요.

다음 단계