参考文章: https://blog.csdn.net/qq_38362419/article/details/108527506

https://blog.csdn.net/u010053119/article/details/110800259

https://www.cnblogs.com/xidianzxm/p/11542135.html

 

1、安装prometheus

1.1下载prometheus

打开prometheus的官网:https://prometheus.io/ , 点击DOWNLOAD

 

我下载的是window版本:

 

 

1.2 运行prometheus。

解压后进入目录运行prometheus.exe

 

访问端口9090即可,需要查看监控的对象列表可以进入status>targets查看

 

 

2、监控window系统信息

2.1下载windows_exporter, 监控 window系统信息。

在这里下载相关exporter:https://github.com/prometheus-community/ 

 

 

直接msi安装即可。

 

2.2 配置prometheus。

默认端口是9182,然后到prometheus安装目录修改配置文件prometheus.yml,修改配置文件后重启prometheus,然后就可以看到targets列表增加的项目,状态为up表示正常监控,状态为down表示未检测到

    # winodows monitor

  - job_name: "windows_exporter"

 

    # metrics_path defaults to '/metrics'

    # scheme defaults to 'http'.

 

    static_configs:

      - targets: ["localhost:9182"]

 

重启prometheus,进入status>targets查看

 

 

在标红处可选择监控的window指标:

 

选择指标后,点击execute。

 

3.监控mysql

https://prometheus.io/download/ 下载mysqld_exporter

 

 

解压后,添加.my.cnf文件。

 

内容如下:

[client]

host=192.168.1.173

user=xxx

password=xxx

 

运行mysqld_exporter.exe文件:

 

Mysqld_exporter的运行端口是:9104

 

在prometheus的yaml中添加:

# mysql monitor

  - job_name: "mysql_exporter"

 

    # metrics_path defaults to '/metrics'

    # scheme defaults to 'http'.

 

    static_configs:

      - targets: ["localhost:9104"]

 

 

重启prometheus:

 

 

Mysql相关的监控也有了:

 

 

 

4、监控springBoot的值

4.1 先搭建springBoot项目,添加prometheus的依赖

<!--增加依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-core</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

 

 

4.2 配置yaml

spring:
  application:
    name: prometheus-demo

server:
  port: 8877

management:
  endpoints:
    web:
      exposure:
        include:  '*'
      base-path: /
  metrics:
    tags:
      application: ${spring.application.name}

 

 

 

4.3 SpringBoot启动时加载这个Bean

 

@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
    return (registry) -> registry.config().commonTags("application", applicationName);
}

 

 

 

4.4 绑定MeterBinder

@Component
public class JobMetrics implements MeterBinder {
    public Counter job1Counter;
    public Counter job2Counter;

    public Map<String, Double> map;

    JobMetrics() {
        map = new HashMap<>();
    }

    @Override
    public void bindTo(MeterRegistry meterRegistry) {
        this.job1Counter = Counter.builder("counter_builder_job_counter1")
                .tags(new String[]{"name", "tag_job_counter1"})
                .description("description-Job counter1 execute count").register(meterRegistry);

        this.job2Counter = Counter.builder("counter_builder_job_counter2")
                .tags(new String[]{"name", "tag_job_counter2"})
                .description("description-Job counter2 execute count ").register(meterRegistry);

        Gauge.builder("gauge_builder_job_gauge", map, x -> x.get("x"))
                .tags("name", "tag_job_gauge")
                .description("description-Job gauge")
                .register(meterRegistry);
    }

}

 

 

4.5 建定时任务测试

@Component
@EnableScheduling
public class MyJob {

    private Integer count1 = 0;

    private Integer count2 = 0;

    @Autowired
    private JobMetrics jobMetrics;

    @Async("main")
    @Scheduled(fixedDelay = 1000)
    public void doSomething() {
        count1++;
        jobMetrics.job1Counter.increment();
        jobMetrics.map.put("x", Double.valueOf(count1));
        System.out.println("task1 count:" + count1);
        if(count1%5==0){
            System.out.println("%5==0");
            jobMetrics.map.put("x", Double.valueOf(1));
        }

    }

    @Async
    @Scheduled(fixedDelay = 10000)
    public void doSomethingOther() {
        count2++;
        jobMetrics.job2Counter.increment();
        System.out.println("task2 count:" + count2);
    }
}

 

 

4.6 建Controller测试

@RestController
public class CounterController {
    @Autowired
    private JobMetrics jobMetrics;

    @RequestMapping(value = "/counter1", method= RequestMethod.GET)
    public void counter1() {
        jobMetrics.job2Counter.increment();
    }

    @RequestMapping(value = "/counter2", method= RequestMethod.GET)
    public void counter2() {
        jobMetrics.job2Counter.increment();
    }
    @RequestMapping(value = "/gauge", method= RequestMethod.GET)
    public void gauge(@RequestParam(value = "x") String x) {
        System.out.println("gauge controller x"+x);
        jobMetrics.map.put("x",Double.valueOf(x));
    }
}

 

 

启动springBoot后,配置prometheus。

4.7配置prometheus

 

      #SpringBoot应用配置

  - job_name: 'prometheus_demo'

    scrape_interval: 5s

    metrics_path: '/prometheus'

    static_configs:

      - targets: ['localhost:8877']

 

 

重启prometheus:

 

监控的指标就出来了:

 

 

5、安装grafana

5.1 下载grafana

地址:https://grafana.com/grafana/download?platform=windows

需要注册后才能下载。我下载的是grafana-enterprise-8.2.5.windows-amd64.msi,直接安装就可以。

 

 

安装完成后进入grafana/bin目录下,双击运行garafana-server.exe,访问地址http://localhost:3000/,默认用户名密码admin/admin

 

 

6、向grafana添加prometheus数据源

 

点Add data source 按钮 添加数据源:

 

 

点select,填写prometheus的信息:

 

 

填完之后,点下面的save&test按钮。

 

 

保存成功后, 可以从以下路径查看已添加的prometheus数据源:

 

 

 

7、向grafana添加监控mysql的仪表板

 

Grafana官网有提供一些仪表板模板,地址:https://grafana.com/grafana/dashboards/

可全页面搜索mysql:

 

点mysql Overview

搜索出想要的仪表板后复制它的ID

 

导入模板:

 

 

 

黏贴复制的id后,点击右侧的Load。

 

标红处选择prommetheus数据源,然后Import即可。

这是监控mysql的仪表板:

 

 

监控window或linux系统的参数也是类似。

 

 

8、向grafana添加springBoot的仪表盘,监控自己定义的数据

 

 

 

 

添加一个空的panel。

 

 

复制prometheus要监控的数据:

 

 

counter_builder_job_counter1_total{application="prometheus-demo", instance="localhost:8877", job="prometheus_demo", name="tag_job_counter1"}

 

 

鼠标离开焦点后,就可以监控了,不过还没保存。

点Query在同一个panel里监控多个值。

 

 

 

点击右上角的Apply。

 

点击其他的按钮时, 提示  取消操作?  撤销操作?  保存操作?

 

保存即可。

 

 

 

 

这里可以选择刷新时间。

posted on 2022-01-21 17:44  毛会懂  阅读(1785)  评论(0编辑  收藏  举报