当前位置:网站首页>boot - prometheus-push gateway 使用
boot - prometheus-push gateway 使用
2022-07-06 17:22:00 【iiaythi】
boot - prometheus-push gateway 使用
场景
一般的,如果使用prometheus 集成 boot 应用 ,就需要 在 prometheus 中配置 一个任务,如果应用 很多,这样不太方便,就可以使用 prometheus push gateway
数据流向:
- prometheus push gateway 定时任务从 boot 应用 中收集数据
- prometheus 向 push gateway 中定时拉取数据
- grafana 做数据展示
docker 创建 prometheus push gateway
docker-compose.yml 配置文件
version: '3.7'
networks:
monitor:
driver: bridge
services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
user: root
volumes:
- ./prometheus/conf:/etc/prometheus
- ./prometheus/data:/prometheus
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
ports:
- "9090:9090"
networks:
- monitor
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
pushgateway:
image: prom/pushgateway
restart: always
ports:
- 9091:9091
volumes:
- ./pushgateway/data:/pushgateway
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- monitor
alertmanager:
image: prom/alertmanager
container_name: alertmanager
hostname: alertmanager
user: root
restart: always
volumes:
- ./alertmanager/conf:/etc/alertmanager
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
ports:
- "9094:9093"
networks:
- monitor
grafana:
image: grafana/grafana
container_name: grafana
hostname: grafana
user: root
restart: always
ports:
- "3000:3000"
volumes:
- ./grafana/data:/var/lib/grafana
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- monitor
node-exporter:
image: quay.io/prometheus/node-exporter
container_name: node-exporter
hostname: node-exporter
restart: always
user: root
ports:
- "9100:9100"
networks:
- monitor
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
配置 prometheus
prometheus.yaml
$ cat prometheus/conf/prometheus.yml
# 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' # prometheus 地址
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['192.xxx.xx.10:9090']
- job_name: 'pushgateway' # push-gateway 地址
scrape_interval: 15s
static_configs:
- targets: ['192.xx.xx.10:9091']
boot 集成 prometheus gateway
引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.prometheus/simpleclient_pushgateway -->
// push gateway 客户端
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_pushgateway</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
application.properties 配置
spring.application.name=boot-prometheus-gw
management.metrics.tags.application=${spring.application.name}
# 暴露promethues 端点
management.endpoints.web.exposure.include=*
management.endpoint.shutdown.enabled=true
management.endpoint.metrics.enabled=true
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
## 指定 prometheus gateway 地址
management.metrics.export.prometheus.pushgateway.base-url=192.1xx.x.10:9091
management.metrics.export.prometheus.pushgateway.push-rate=15s
## 上报服务名称
management.metrics.export.prometheus.pushgateway.job=${spring.application.name}
management.metrics.export.prometheus.pushgateway.enabled=true
server.port=9998
数据统计
@RestController
public class HelloController {
@Autowired
private MeterRegistry meterRegistry;
public HelloController(MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry;
}
@GetMapping("/get")
public String get() throws InterruptedException {
Counter counter = Counter.builder("hello-counter").register(meterRegistry);
counter.increment();
TimeUnit.SECONDS.sleep(1);
return "Hello, counter = " + counter.count();
}
}
访问 prometheus push gateway: http://localhost:9091
再看 grafana
good luck!
边栏推荐
- Trace tool for MySQL further implementation plan
- tensorflow 1.14指定gpu运行设置
- mysql: error while loading shared libraries: libtinfo. so. 5: cannot open shared object file: No such
- A brief history of deep learning (II)
- STM32开发资料链接分享
- What kind of experience is it to realize real-time collaboration in jupyter
- Explain in detail the matrix normalization function normalize() of OpenCV [norm or value range of the scoped matrix (normalization)], and attach norm_ Example code in the case of minmax
- 资产安全问题或制约加密行业发展 风控+合规成为平台破局关键
- 第五篇,STM32系统定时器和通用定时器编程
- 「精致店主理人」青年创业孵化营·首期顺德场圆满结束!
猜你喜欢
windows安装mysql8(5分钟)
用tkinter做一个简单图形界面
[software reverse - solve flag] memory acquisition, inverse transformation operation, linear transformation, constraint solving
Linear algebra of deep learning
.class文件的字节码结构
UI control telerik UI for WinForms new theme - vs2022 heuristic theme
界面控件DevExpress WinForms皮肤编辑器的这个补丁,你了解了吗?
Learn self 3D representation like ray tracing ego3rt
Installation and testing of pyflink
Distributed cache
随机推荐
Openjudge noi 1.7 10: simple password
Slam d'attention: un slam visuel monoculaire appris de l'attention humaine
[牛客] B-完全平方数
Trace tool for MySQL further implementation plan
线段树(SegmentTree)
Deep learning framework TF installation
Chenglian premium products has completed the first step to enter the international capital market by taking shares in halber international
Telerik UI 2022 R2 SP1 Retail-Not Crack
新手如何入门学习PostgreSQL?
什么是时间
Deep understanding of distributed cache design
UI control telerik UI for WinForms new theme - vs2022 heuristic theme
ZABBIX 5.0: automatically monitor Alibaba cloud RDS through LLD
Interface (interface related meaning, different abstract classes, interface callback)
Service asynchronous communication
再聊聊我常用的15个数据源网站
Informatics Orsay Ibn YBT 1172: find the factorial of n within 10000 | 1.6 14: find the factorial of n within 10000
《安富莱嵌入式周报》第272期:2022.06.27--2022.07.03
腾讯云 WebShell 体验
There is an error in the paddehub application