win10安裝Prometheus + grafana監控


 

 

參考文章: 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。

 

點擊其他的按鈕時, 提示  取消操作?  撤銷操作?  保存操作?

 

保存即可。

 

 

 

 

這里可以選擇刷新時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM