Goosefs는 설정을 통해 지표 데이터를 Prometheus와 같은 다른 모니터링 시스템으로 출력할 수 있습니다. Prometheus는 오픈 소스 모니터링 프레임워크로 현재 Tencent Cloud 모니터링은 Prometheus를 통합하였습니다. 다음으로 Goosefs의 모니터링 지표와 자체구축한 Prometheus와 클라우드 Prometheus에 모니터링 지표를 보고하는 과정을 중점적으로 소개합니다.
Prometheus를 통해 모니터링 시스템을 구축하려면 다음 준비 작업이 선행되어야 합니다.
./bin/goosefs-start.sh all
클러스터를 재시작합니다.goosefs.user.metrics.collection.enabled=true
goosefs.user.metrics.heartbeat.interval=10s
curl <LEADING_MASTER_HOSTNAME>:<MASTER_WEB_PORT>/metrics/prometheus/
# HELP Master_CreateFileOps Generated from Dropwizard metric import (metric=Master.CreateFileOps, type=com.codahale.metrics.Counter)
...
curl <WORKER_IP>:<WOKER_PORT>/metrics/prometheus/
# HELP pools_Code_Cache_max Generated from Dropwizard metric import (metric=pools.Code-Cache.max, type=com.codahale.metrics.jvm.MemoryUsageGaugeSet$$Lambda$51/137460818)
...
Prometheus 설치 패키지를 다운로드 및 압축 해제하고, prometheus.yml을 수정합니다.
# prometheus.yml
global:
scrape_interval: 10s
evaluation_interval: 10s
scrape_configs:
- job_name: 'goosefs masters'
metrics_path: /metrics/prometheus
file_sd_configs:
- refresh_interval: 1m
files:
- "targets/cluster/masters/*.yml"
- job_name: 'goosefs workers'
metrics_path: /metrics/prometheus
file_sd_configs:
- refresh_interval: 1m
files:
- "targets/cluster/workers/*.yml"
targets/cluster/masters/masters.yml을 생성하여 master의 IP와 port를 추가합니다.
- targets:
- "<TARGERTS_MASTER_IP>:<TARGERTS_MASTER_PORT>"
- targets:
- "<TARGERTS_WORKER_IP>:<TARGERTS_WORKER_PORT>"
nohup ./prometheus --config.file=prometheus.yml --web.listen-address="<LISTEN_IP>:<LISTEN_PORT>" > prometheus.log 2>&1 &
http://<PROMETHEUS_BI_IP>:<PROMETHEUS_BI_PORT>
http://<PROMETHEUS_BI_IP>:<PROMETHEUS_BI_PORT>/targets
wget https://rig-1258344699.cos.ap-guangzhou.myqcloud.com/prometheus-agent/agent_install && chmod +x agent_install && ./agent_install prom-12kqy0mw agent-grt164ii ap-guangzhou <secret_id> <secret_key>
방식1:
job_name: goosefs-masters
honor_timestamps: true
metrics_path: /metrics/prometheus
scheme: http
file_sd_configs:
- files:
- /usr/local/services/prometheus/targets/cluster/masters/*.yml
refresh_interval: 1m
job_name: goosefs-workers
honor_timestamps: true
metrics_path: /metrics/prometheus
scheme: http
file_sd_configs:
- files:
- /usr/local/services/prometheus/targets/cluster/workers/*.yml
refresh_interval: 1m
주의:job_name에는 빈칸이 없지만, 오프라인 Prometheus의 job_name에는 빈칸이 포함될 수 있습니다.
방식2:
job_name: goosefs masters
honor_timestamps: true
metrics_path: /metrics/prometheus
scheme: http
static_configs:
- targets:
- "<TARGERTS_MASTER_IP>:<TARGERTS_MASTER_PORT>"
refresh_interval: 1m
job_name: goosefs workers
honor_timestamps: true
metrics_path: /metrics/prometheus
scheme: http
static_configs:
- targets:
- "<TARGERTS_WORKER_IP>:<TARGERTS_WORKER_PORT>"
refresh_interval: 1m
주의:캡처 작업은 두 번째 방법에 따라 구성되며 targets/cluster/masters/경로에 masters.yml 및 workers.yml 파일을 생성할 필요가 없습니다.
nohup ./bin/grafana-server web > grafana.log 2>&1 &
<PROMETHEUS_IP>:<PROMETHEUS_PORT>
주의:클라우드 Prometheus 구매 시 비밀번호를 설정해야 합니다. 클라우드 Grafana의 시각화 모니터링 인터페이스 설정은 위와 유사하며, job_name은 일치하도록 설정해야 합니다.
문제 해결에 도움이 되었나요?