批处理启动监控(Java×PushGateway×Prometheus)

这篇文章的摘要 (Zhè de

    • バッチの起動監視をどうしようかと悩んでいた時にPushGatewayというものを見つけた

 

    導入からPrometheusでメトリクスが見れるところまでをまとめてみた

构成

image.png
    • PushGatewayとPrometheusはDockerで起動

 

    • 仕組みとしては

BatchがPushGatewayにメトリクスを送信
PrometheusがPushGatewayからメトリクスを取得

すべてローカルに存在するものとして進めます

建立PushGateway

※假设环境已经准备好了,可以使用Docker

开启

docker pull prom/pushgateway
docker run -d \
    -p 9091:9091 \
    --name pushgateway \
    prom/pushgateway

-d:以脱离模式启动。我不是很了解,所以只需在后台运行即可。
-p:设置端口转发。
-name:指定容器名称。

确认动作

スクリーンショット 2019-09-21 22.14.29.png

生成混合批次

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();
        }
    }
}

开始吧!

スクリーンショット 2019-09-21 22.36.32.png

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

确认动作

スクリーンショット 2019-09-21 23.22.13.png

实际运营

    現場ではGrafanaを用いて可視化&アラートを飛ばしている
广告
将在 10 秒后关闭
bannerAds