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)
- Cloudflare Tunnel이 필요해요. 터널을 만들려면 시작하기 가이드를 참고해요.
메트릭 엔드포인트 만들기
터널을 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)에서:
-
Prometheus를 다운로드 ↗︎해요.
-
Prometheus를 추출해요:
tar xvfz prometheus-*.tar.gz cd prometheus-* -
텍스트 편집기에서
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 -
Prometheus를 시작해요:
./prometheus --config.file="prometheus.yml"선택적으로 Prometheus를 서비스로 실행하도록 구성하면 머신이 재부팅돼도 수동으로 시작할 필요가 없어요.
-
브라우저를 열고
http://localhost:9090/으로 이동해요. Prometheus 대시보드에 접근할 수 있어야 해요. -
Prometheus가 터널 메트릭을 가져오는지 확인하려면 표현식 콘솔에
cloudflared_tunnel_total_requests를 입력하고 Execute를 선택해요.
다른 어떤 메트릭이 있는지 확인하려면 사용 가능한 메트릭을 참고해요.
Grafana를 Prometheus에 연결하기
-
Grafana를 다운로드 ↗︎하고 설치해요.
-
Grafana를 시스템 서비스로 시작해요:
sudo systemctl daemon-reload sudo systemctl start grafana-server -
Grafana가 실행 중인지 확인해요:
sudo systemctl status grafana-server -
브라우저를 열고
http://localhost:3000/으로 이동해요. Grafana가 수신하는 기본 HTTP 포트는 다른 포트를 구성하지 않았다면3000이에요. -
로그인 페이지에서 Grafana 자격 증명을 입력해요.
계정 없이 테스트하려면 사용자 이름과 비밀번호에 모두
admin을 입력하고 비밀번호 변경 단계를 건너뛸 수 있어요. -
Grafana에서 Connections > Data sources로 이동해요.
-
Add a new data source를 선택하고 Prometheus를 선택해요.
-
Prometheus server URL 필드에 Prometheus 대시보드의 IP 주소와 포트(
http://localhost:9090)를 입력해요. -
Save & test를 선택해요.
Grafana 대시보드 만들기
- Grafana에서 Dashboards > New > New dashboard로 이동해요.
- Add visualization을 선택해요.
- Prometheus를 선택해요.
- 메트릭 필드에
cloudflared_tunnel_total_requests를 입력하고 Run queries를 선택해요. 시간의 함수로 요청 수를 보여주는 그래프가 보일 거예요.

쿼리에 작업(operation)을 추가해 표시되는 내용을 수정할 수 있어요. 예를 들어 메트릭이 보고되기 시작한 이후의 모든 터널 요청 대신 최근 기간(예: 하루) 동안의 모든 터널 요청을 보여줄 수 있어요.
더 알아보기 (Learn more)
cloudflared → Prometheus(스크레이프) → Grafana(시각화)의 흐름을 이해하면 터널 메트릭 대시보드를 쉽게 구축할 수 있어요. 메트릭 엔드포인트 주소와 구성은 관측성 문서에서 자세히 다뤄요.