배치 시작 모니터링(Java×PushGateway×Prometheus)
8793 단어 pushgateway자바prometheus
이 기사 개요
구성
PushGateway 구축
※Docker를 사용할 수 있는 환경은 갖추어져 있는 전제입니다
시작
docker pull prom/pushgateway
docker run -d \
-p 9091:9091 \
--name pushgateway \
prom/pushgateway
-d : 분리 모드로 시작. 별로 자세하지 않기 때문에 백그라운드에서 실행할 수 있는 정도의 인식
-p : 포트 포워드 설정
-name : 컨테이너 이름 지정
동작 확인
docker pull prom/pushgateway
docker run -d \
-p 9091:9091 \
--name pushgateway \
prom/pushgateway
http://localhost:9091
방문/metrics
배치(잡) 만들기
build.gradleapply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile('io.prometheus:simpleclient_pushgateway:0.6.0')
}
SampleBatch.javaimport java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class SampleBatch {
public static void main(String[] args) {
String url = "localhost:9091";
PushGateway pushGateway = new PushGateway(url);
long now = System.currentTimeMillis();
// メトリクスを収集(ここでは起動時間としてシステムミリ秒をセット)
CollectorRegistry registry = new CollectorRegistry();
Gauge lastStartAt = Gauge.build()
.name("batch_start_time")
.help("batch start time")
.register(registry);
lastStartAt.set(now);
// メトリクスにタグを設定
Map<String, String> key = new HashMap<>();
key.put("tagName", "tagValue");
try {
// メトリクスを登録
pushGateway.pushAdd(registry, "sample-batch", key);
} catch (IOException e) {
// 例外処理
e.printStackTrace();
}
}
}
실행!
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile('io.prometheus:simpleclient_pushgateway:0.6.0')
}
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class SampleBatch {
public static void main(String[] args) {
String url = "localhost:9091";
PushGateway pushGateway = new PushGateway(url);
long now = System.currentTimeMillis();
// メトリクスを収集(ここでは起動時間としてシステムミリ秒をセット)
CollectorRegistry registry = new CollectorRegistry();
Gauge lastStartAt = Gauge.build()
.name("batch_start_time")
.help("batch start time")
.register(registry);
lastStartAt.set(now);
// メトリクスにタグを設定
Map<String, String> key = new HashMap<>();
key.put("tagName", "tagValue");
try {
// メトリクスを登録
pushGateway.pushAdd(registry, "sample-batch", key);
} catch (IOException e) {
// 例外処理
e.printStackTrace();
}
}
}
Prometheus 구축
시작
prometheus.yml# /etc/prometheus/prometheus.yml
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.
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'pushgateway'
scrape_interval: 1m
metrics_path: /metrics
static_configs:
- targets: ['localhost:9091']
docker pull prom/prometheus
docker run -d \
-p 9090:9090 \
-v prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus \
prom/prometheus
동작 확인
# /etc/prometheus/prometheus.yml
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.
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'pushgateway'
scrape_interval: 1m
metrics_path: /metrics
static_configs:
- targets: ['localhost:9091']
docker pull prom/prometheus
docker run -d \
-p 9090:9090 \
-v prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus \
prom/prometheus
http://localhost:9090
)에서 확인changes(batch_start_time[2m])
라는 PromQL로 배치가 기동한 타이밍을 알 수 있다! 실제 운영
Reference
이 문제에 관하여(배치 시작 모니터링(Java×PushGateway×Prometheus)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rhirabay/items/103ec435a429bf459de8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)