当前位置:网站首页>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!
边栏推荐
- Windows installation mysql8 (5 minutes)
- from .cv2 import * ImportError: libGL.so.1: cannot open shared object file: No such file or direc
- Activereportsjs 3.1 Chinese version | | | activereportsjs 3.1 English version
- Tensorflow GPU installation
- Mongodb client operation (mongorepository)
- Js+svg love diffusion animation JS special effects
- 迈动互联中标北京人寿保险,助推客户提升品牌价值
- [batch dos-cmd command - summary and summary] - string search, search, and filter commands (find, findstr), and the difference and discrimination between find and findstr
- Provincial and urban level three coordinate boundary data CSV to JSON
- Distributed cache
猜你喜欢
Summary of being a microservice R & D Engineer in the past year
[force buckle]41 Missing first positive number
Set (generic & list & Set & custom sort)
Build your own website (17)
集合(泛型 & List & Set & 自定义排序)
「精致店主理人」青年创业孵化营·首期顺德场圆满结束!
windows安装mysql8(5分钟)
资产安全问题或制约加密行业发展 风控+合规成为平台破局关键
Stm32f407 ------- SPI communication
Dell筆記本周期性閃屏故障
随机推荐
建立自己的网站(17)
String comparison in batch file - string comparison in batch file
【批处理DOS-CMD命令-汇总和小结】-查看或修改文件属性(ATTRIB),查看、修改文件关联类型(assoc、ftype)
Tensorflow GPU installation
Tencent cloud webshell experience
随时随地查看远程试验数据与记录——IPEhub2与IPEmotion APP
Js+svg love diffusion animation JS special effects
Make a simple graphical interface with Tkinter
5种不同的代码相似性检测,以及代码相似性检测的发展趋势
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such
Attention SLAM:一種從人類注意中學習的視覺單目SLAM
tensorflow 1.14指定gpu运行设置
Eventbus source code analysis
[牛客] B-完全平方数
再聊聊我常用的15个数据源网站
做微服务研发工程师的一年来的总结
《安富莱嵌入式周报》第272期:2022.06.27--2022.07.03
Do you understand this patch of the interface control devaxpress WinForms skin editor?
界面控件DevExpress WinForms皮肤编辑器的这个补丁,你了解了吗?
【JokerのZYNQ7020】AXI_ EMC。