当前位置:网站首页>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!
边栏推荐
- 【批處理DOS-CMD命令-匯總和小結】-字符串搜索、查找、篩選命令(find、findstr),Find和findstr的區別和辨析
- 深入探索编译插桩技术(四、ASM 探秘)
- Attention SLAM:一種從人類注意中學習的視覺單目SLAM
- Grc: personal information protection law, personal privacy, corporate risk compliance governance
- 《安富莱嵌入式周报》第272期:2022.06.27--2022.07.03
- Anfulai embedded weekly report no. 272: 2022.06.27--2022.07.03
- BFS realizes breadth first traversal of adjacency matrix (with examples)
- SuperSocket 1.6 创建一个简易的报文长度在头部的Socket服务器
- paddlehub应用出现paddle包报错的问题
- Make a simple graphical interface with Tkinter
猜你喜欢
【JVM调优实战100例】04——方法区调优实战(上)
界面控件DevExpress WinForms皮肤编辑器的这个补丁,你了解了吗?
Periodic flash screen failure of Dell notebook
用tkinter做一个简单图形界面
Linear algebra of deep learning
[yolov5 6.0 | 6.1 deploy tensorrt to torch serve] environment construction | model transformation | engine model deployment (detailed packet file writing method)
Deeply explore the compilation and pile insertion technology (IV. ASM exploration)
第六篇,STM32脉冲宽度调制(PWM)编程
【批处理DOS-CMD命令-汇总和小结】-字符串搜索、查找、筛选命令(find、findstr),Find和findstr的区别和辨析
[software reverse - solve flag] memory acquisition, inverse transformation operation, linear transformation, constraint solving
随机推荐
Summary of being a microservice R & D Engineer in the past year
[Niuke classic question 01] bit operation
[batch dos-cmd command - summary and summary] - view or modify file attributes (attrib), view and modify file association types (Assoc, ftype)
. Bytecode structure of class file
建立自己的网站(17)
Niuke cold training camp 6B (Freund has no green name level)
城联优品入股浩柏国际进军国际资本市场,已完成第一步
一行代码实现地址信息解析
第五篇,STM32系统定时器和通用定时器编程
A brief history of deep learning (I)
Part V: STM32 system timer and general timer programming
Informatics Orsay Ibn YBT 1172: find the factorial of n within 10000 | 1.6 14: find the factorial of n within 10000
Dell筆記本周期性閃屏故障
ActiveReportsJS 3.1中文版|||ActiveReportsJS 3.1英文版
UI control telerik UI for WinForms new theme - vs2022 heuristic theme
BFS realizes breadth first traversal of adjacency matrix (with examples)
[software reverse automation] complete collection of reverse tools
How to get started and improve test development?
Trace tool for MySQL further implementation plan
equals()与hashCode()