当前位置:网站首页>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!
边栏推荐
- 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
- A brief history of deep learning (I)
- 建立自己的网站(17)
- 学习光线跟踪一样的自3D表征Ego3RT
- . Bytecode structure of class file
- 【JVM调优实战100例】05——方法区调优实战(下)
- Telerik UI 2022 R2 SP1 Retail-Not Crack
- C9 colleges and universities, doctoral students make a statement of nature!
- 第七篇,STM32串口通信编程
- Five different code similarity detection and the development trend of code similarity detection
猜你喜欢
[HFCTF2020]BabyUpload session解析引擎
Data processing of deep learning
【批处理DOS-CMD命令-汇总和小结】-跳转、循环、条件命令(goto、errorlevel、if、for[读取、切分、提取字符串]、)cmd命令错误汇总,cmd错误
用tkinter做一个简单图形界面
Configuring OSPF basic functions for Huawei devices
《安富莱嵌入式周报》第272期:2022.06.27--2022.07.03
第五篇,STM32系统定时器和通用定时器编程
Five different code similarity detection and the development trend of code similarity detection
Build your own website (17)
Configuring the stub area of OSPF for Huawei devices
随机推荐
通过串口实现printf函数,中断实现串口数据接收
批量获取中国所有行政区域经边界纬度坐标(到县区级别)
Slam d'attention: un slam visuel monoculaire appris de l'attention humaine
「笔记」折半搜索(Meet in the Middle)
from .cv2 import * ImportError: libGL.so.1: cannot open shared object file: No such file or direc
Configuring the stub area of OSPF for Huawei devices
代码克隆的优缺点
Deep learning framework TF installation
C9高校,博士生一作发Nature!
Part IV: STM32 interrupt control programming
Meet the level 3 requirements of ISO 2.0 with the level B construction standard of computer room | hybrid cloud infrastructure
【批处理DOS-CMD命令-汇总和小结】-跳转、循环、条件命令(goto、errorlevel、if、for[读取、切分、提取字符串]、)cmd命令错误汇总,cmd错误
动态规划思想《从入门到放弃》
新手如何入门学习PostgreSQL?
C Primer Plus Chapter 14 (structure and other data forms)
Fastdfs data migration operation record
from . cv2 import * ImportError: libGL. so. 1: cannot open shared object file: No such file or direc
再聊聊我常用的15个数据源网站
深入探索编译插桩技术(四、ASM 探秘)
资产安全问题或制约加密行业发展 风控+合规成为平台破局关键