springboot2 输出Prometheus

环境要求

因为 Prometheus 和 Grafana 都由 Go 编写,所以对环境基本没有要求,本文用的是 Centos 7。
但要保证所有服务器时间同步。

安装 Prometheus

下载地址: https://prometheus.io/download/
cd /app
tar xvf prometheus‐2.6.0.linux‐amd64.tar.gz
mv prometheus‐2.6.0.linux‐amd64 prometheus
rm prometheus‐2.6.0.linux‐amd64.tar.gz

添加 target

target 指发布指标数据的 http 服务的地址,添加新 target 后需要重启 Prometheus。
vim prometheus.yml 添加下面内容
scrape_configs:

The job name is added as a label job= 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: “node”
    static_configs:

    • targets: [“localhost:9100”]

任意写,建议英文,不要包含特殊字符

  • job_name: ‘spring’

多久采集一次数据

scrape_interval: 15s

采集时的超时时间

scrape_timeout: 10s

采集的路径是啥

metrics_path: '/actuator/prometheus'

采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。

static_configs:
- targets: ['IP:8080']

启动
下面是最简单的启动命令,可以利用 systemd 或者 supervisord 实现自动启动。下同。
cd prometheus/
nohup ./prometheus ‐‐config.file=prometheus.yml &

监控:
http://IP:9090/
http://IP:9090/targets

安装 Grafana

下载地址: https://grafana.com/grafana/download
cd /app
tar xvf grafana‐5.4.2.linux‐amd64.tar.gz
mv grafana‐5.4.2 grafana
rm grafana‐5.4.2.linux‐amd64.tar.gz
启动
cd grafana/
nohup ./grafana‐server &

Grafana 使用

访问 地址: http://IP:3000/login
初始用户名密码 [security] admin_user = admin admin_password = admin

添加 data source
按照向导,添加刚才启动的 Prometheus。
配置dashboard
菜单+号dashboard 编辑 选择一个panel 和metrics 例如
jvm_memory_used_bytes

springboot2集成Prometheus
添加依赖

org.springframework.boot
spring-boot-starter-actuator


io.micrometer
micrometer-registry-prometheus

配置开放端点和名称
spring.application.name=test
management.endpoints.web.exposure.include=prometheus
management.metrics.tags.application=${spring.application.name}

Metrics指标类型以及使用场景:
• Counter,只增不减的计数器
• Gauge,可增可减的仪表盘
• Histogram,自带buckets区间用于统计分布统计图
• Summary, 客户端定义的数据分布统计图

#Counter ,求和场景

@Autowired
    MeterRegistry meterRegistry;

    @RequestMapping(value = "a")
    public String test(@RequestParam int num){
     Counter co= meterRegistry.counter("my.test2",Tags.of("site", "SiteA", "cab", "cab01"));
    co.increment(num);

#计算max count 和sum 不同tag不同记录

private DistributionSummary summary;
............
 summary = meterRegistry.summary("my_aa_total","totalAmount",num+"");
        summary.record(num);

#最新值

 AtomicInteger passCases1 =  Metrics.gauge("pass.cases.guage.value", Tags.of("service", "SiteA"+num), atomicInteger);
        passCases1.set(num);

你可能感兴趣的:(springboot2 输出Prometheus)