본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Grafana로 Cloudflare Tunnel 모니터링하기

원문 보기 위키 갱신

Grafana ↗︎는 다른 데이터베이스에 저장된 데이터를 시각화하는 대시보드 도구예요. Grafana를 사용해 터널 메트릭을 실행 가능한 인사이트로 바꿀 수 있어요.

출처: 문서

본문

cloudflared에서 Grafana로 메트릭을 직접 푸시하는 것은 불가능해요. 대신 cloudflared는 Prometheus ↗︎ 메트릭 엔드포인트를 실행하고, Prometheus 서버가 이를 주기적으로 스크레이프해요. 그런 다음 Grafana가 Prometheus를 데이터 소스로 사용해 관리자에게 메트릭을 보여줘요.

flowchart LR

  subgraph 192.168.1.1
  A[cloudflared]-->B[Metrics endpoint]
  end

  B--->C
  subgraph 192.168.1.2
  C[Prometheus server]-->D[Grafana dashboard]
  end

이 튜토리얼은 메트릭 엔드포인트 만들기, Prometheus 서버 설정, Grafana에서 데이터 보기 방법을 다뤄요.

시작하기 전에(Before you begin)

메트릭 엔드포인트 만들기

터널을 CLI로 만들었다면 cloudflared 서버(192.168.1.1)에서 다음 명령을 실행해요:

cloudflared tunnel --metrics 192.168.1.1:60123 run my-tunnel

터널을 대시보드로 만들었다면 --metrics 플래그를 cloudflared 시스템 서비스 구성에 추가해야 해요. 방법은 터널 실행 매개변수 추가를 참고해요.

Prometheus 설정하기

Prometheus와 Grafana 서버(192.168.1.2)에서:

  1. Prometheus를 다운로드 ↗︎해요.

  2. Prometheus를 추출해요:

    tar xvfz prometheus-*.tar.gz
    cd prometheus-*
    
  3. 텍스트 편집기에서 prometheus.yml을 열고 파일 끝에 cloudflared 작업(job)을 추가해요:

    # my global config
    global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
              # - alertmanager:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: "prometheus"
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
          - targets: ["localhost:9090"] ## Address of Prometheus dashboard
    
      - job_name: "cloudflared"
        static_configs:
          - targets: ["198.168.1.1:60123"] ## cloudflared server IP and the --metrics port configured for the tunnel
    
  4. Prometheus를 시작해요:

    ./prometheus --config.file="prometheus.yml"
    

    선택적으로 Prometheus를 서비스로 실행하도록 구성하면 머신이 재부팅돼도 수동으로 시작할 필요가 없어요.

  5. 브라우저를 열고 http://localhost:9090/으로 이동해요. Prometheus 대시보드에 접근할 수 있어야 해요.

  6. Prometheus가 터널 메트릭을 가져오는지 확인하려면 표현식 콘솔에 cloudflared_tunnel_total_requests를 입력하고 Execute를 선택해요.Prometheus dashboard showing tunnel metrics data

다른 어떤 메트릭이 있는지 확인하려면 사용 가능한 메트릭을 참고해요.

Grafana를 Prometheus에 연결하기

  1. Grafana를 다운로드 ↗︎하고 설치해요.

  2. Grafana를 시스템 서비스로 시작해요:

    sudo systemctl daemon-reload
    sudo systemctl start grafana-server
    
  3. Grafana가 실행 중인지 확인해요:

    sudo systemctl status grafana-server
    
  4. 브라우저를 열고 http://localhost:3000/으로 이동해요. Grafana가 수신하는 기본 HTTP 포트는 다른 포트를 구성하지 않았다면 3000이에요.

  5. 로그인 페이지에서 Grafana 자격 증명을 입력해요.

    계정 없이 테스트하려면 사용자 이름과 비밀번호에 모두 admin을 입력하고 비밀번호 변경 단계를 건너뛸 수 있어요.

  6. Grafana에서 Connections > Data sources로 이동해요.

  7. Add a new data source를 선택하고 Prometheus를 선택해요.

  8. Prometheus server URL 필드에 Prometheus 대시보드의 IP 주소와 포트(http://localhost:9090)를 입력해요.

  9. Save & test를 선택해요.

Grafana 대시보드 만들기

  1. Grafana에서 Dashboards > New > New dashboard로 이동해요.
  2. Add visualization을 선택해요.
  3. Prometheus를 선택해요.
  4. 메트릭 필드에 cloudflared_tunnel_total_requests를 입력하고 Run queries를 선택해요. 시간의 함수로 요청 수를 보여주는 그래프가 보일 거예요.

Grafana dashboard showing a tunnel metrics graph

쿼리에 작업(operation)을 추가해 표시되는 내용을 수정할 수 있어요. 예를 들어 메트릭이 보고되기 시작한 이후의 모든 터널 요청 대신 최근 기간(예: 하루) 동안의 모든 터널 요청을 보여줄 수 있어요.

더 알아보기 (Learn more)

cloudflared → Prometheus(스크레이프) → Grafana(시각화)의 흐름을 이해하면 터널 메트릭 대시보드를 쉽게 구축할 수 있어요. 메트릭 엔드포인트 주소와 구성은 관측성 문서에서 자세히 다뤄요.