搭建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=<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']
- job_name: 'push-metrics'
static_configs:
- targets: ['192.168.99.100:9999']
maven
<!-- The client -->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
<version>0.0.21</version>
</dependency>
<!-- Hotspot JVM metrics -->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_hotspot</artifactId>
<version>0.0.21</version>
</dependency>
<!-- Exposition servlet -->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_servlet</artifactId>
<version>0.0.21</version>
</dependency>
<!-- Pushgateway exposition -->
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_pushgateway</artifactId>
<version>0.0.21</version>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_dropwizard</artifactId>
<version>0.0.21</version>
</dependency>
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);
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。