义齿
3788 ワード
push gatewayの構築
version: '2'
services:
prometheus:
build: .
ports:
- 9090:9090
volumes:
- /tmp/prometheus-data:/prometheus-data
links:
- pushgateway
pushgateway:
image: prom/pushgateway
ports:
- 9999:9091
pushgatewayからのデータの取得の構成
# 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).
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first.rules"
# - "second.rules"
# 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=` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'push-metrics'
static_configs:
- targets: ['192.168.99.100:9999']
maven
io.prometheus
simpleclient
0.0.21
io.prometheus
simpleclient_hotspot
0.0.21
io.prometheus
simpleclient_servlet
0.0.21
io.prometheus
simpleclient_pushgateway
0.0.21
io.prometheus
simpleclient_dropwizard
0.0.21
java config
@Component
public class PrometheusConfig {
@Autowired
MetricRegistry dropwizardRegistry;
@Value("${spring.application.name}")
String applicationName;
@Value("${prometheus.pushgateway.host}")
String pushHost;
@Value("${prometheus.pushgateway.intervalInMillis:10000}")
long intervalInMillis;
private final CollectorRegistry prometheusRegistry = new CollectorRegistry();
@PostConstruct
public void initialize() {
DropwizardExports prometheus = new DropwizardExports(dropwizardRegistry);
prometheus.register(prometheusRegistry);
PushGateway prometheusPush = new PushGateway(pushHost);
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> {
try {
prometheus.collect();
prometheusPush.push(prometheusRegistry, applicationName);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}, 5000, intervalInMillis, TimeUnit.MILLISECONDS);
}
}