1. Introduction

Recently, more and more feel that any system online, operation and maintenance monitoring is too important. This paper introduces Prometheus + Grafana method to monitor Springboot 2.X and realize beautiful data visualization.

2. Add monitoring

Spring-boot-actuator Module helps you monitor and manage your applications as they go into production. You can choose to use HTTP endpoints or JMX to manage and monitor your application. Auditing, health, and metrics Gathering can also be automatically applied to your application. Import dependencies as follows:

<! -- monitoring alarm --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId> Spring-boot-starter -actuator</artifactId>  </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>Copy the code

For Springboot, use the Actuator and open the corresponding Endpoint:

# Prometheus configuration
info:alen:alenmanagement:endpoints:web:base-path:/actuatorexposure:include:"*"Copy the code

After startup Springboot, can use the following URL can get right to the monitoring data: localhost/physical/Prometheus to obtain data, explain Springboot provide monitoring data properly.

Primary endpoint

3. The configuration of Prometheus

Prometheus, a system and service monitoring system, is a project of the Cloud Native Computing Foundation. It collects metrics from configured targets at a given time interval, evaluates regular expressions, displays results, and triggers an alert if certain conditions are observed to be true.

features

• Multidimensional data model (time series defined by measure names and key/value dimension sets) • flexible query language to take advantage of this dimension • Independent of distributed storage; Individual server nodes are autonomous • Time series collection occurs through pull models over HTTP • Push time series are supported through intermediate gateways • Target discovery through service discovery or static configuration • Graphical and dashboard support for multiple modes • Hierarchical and horizontal support federationCopy the code

Using Prometheus to capture data Prometheus pulls indicator data promethe. yml in the endpoints (/actuator/ Prometheus) that are exposed according to the configured period

 - job_name: 'actuator-ruoyi'   
 # metrics_path defaults to '/metrics'   
 # scheme defaults to 'http'.    
    metrics_path: '/actuator/prometheus'    
    static_configs:    
        - targets: ['10.42.95.4']Copy the code

Restart Prometheus, access the site of Prometheus, and check whether targets starts normally as shown in the figure below

4. Add monitoring templates to Grafana

The default Grafana address is http://localhost:3000/, the login user name and password are admin/admin, and the import configuration is Grafana ID = 4701

The final result looks like this, as shown below

5. Note

Problem: Add-on cannot access the Endpoint? Solution: The reason is that shiro for the project needs to add filtering

filterChainDefinitionMap.put("/actuator/**"."anon");Copy the code

Problem two:

/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: Broken pipeCopy the code

Resolution: The cause of this error is that project.artifactid may contain uppercase. I’ll just change it to lowercase