SpringBoot + Prometheus + Grafana réalise la surveillance et l'alarme des applications

Cliquez sur la police bleue ci-dessus et sélectionnez "Compte officiel Star"

Articles de haute qualité, livrés immédiatement

Suivez le compte officiel dans les coulisses pour répondre au paiement ou au centre commercial pour obtenir des informations réelles sur le projet + vidéo

Auteur: je fume

cnblogs.com/2YSP/p/12827487.html 

1. Origines

SpringBoot propose de nombreuses solutions de surveillance des applications et SpringBoot + Prometheus + Grafana est actuellement l'une des solutions les plus couramment utilisées. La relation entre les trois est la suivante:

tableau des relations

Deuxièmement, développer l'application SpringBoot

Tout d'abord, créez un projet SpringBoot, le fichier pom est le suivant:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

<!-- https://mvnrepository.com/artifact/io.prometheus/simpleclient_spring_boot -->
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_spring_boot</artifactId>
    <version>0.8.1</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Remarque:  la version SpringBoot ici est 1.5.7.RELEASE. La raison pour laquelle la dernière version 2.X n'est pas utilisée est que la dernière version simpleclient_spring_boot ne prend en charge que la version 1.5.X, vous ne savez pas si la version 2.X peut être prise en charge.

Ajout d'annotations à la classe de démarrage MonitorDemoApplication

package cn.sp; 
 
import io.prometheus.client.spring.boot.EnablePrometheusEndpoint; 
import io.prometheus.client.spring.boot.EnableSpringBootMetricsCollector; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
@EnablePrometheusEndpoint 
@EnableSpringBootMetricsCollector 
@SpringBootApplication 
public class MonitorDemoApplication { 
 
    public static void main(String[] args) { 
        SpringApplication.run(MonitorDemoApplication.class, args); 
    } 
 
} 

Fichier de configuration application.yml

server: 
  port: 8848 
spring: 
  application: 
    name: monitor-demo 
 
security: 
  user: 
    name: admin 
    password: 1234 
  basic: 
    enabled: true 
    # 安全路径列表,逗号分隔,此处只针对/admin路径进行认证 
    path: /admin 
 
# actuator暴露接口的前缀 
management: 
  context-path: /admin 
  # actuator暴露接口使用的端口,为了和api接口使用的端口进行分离 
  port: 8888 
  security: 
    enabled: true 
    roles: SUPERUSER 

Code de test TestController

@RequestMapping("/heap/test")
@RestController
public class TestController {
 
    public static final Map<String, Object> map = new ConcurrentHashMap<>();
 
    @RequestMapping("")
    public String testHeapUsed() {
        for (int i = 0; i < 10000000; i++) {
            map.put(i + "", new Object());
        }
        return "ok";
    }
}

La logique ici est de créer un grand nombre d'objets et de les enregistrer dans la carte pour augmenter l'utilisation de la mémoire du tas après avoir demandé cette interface, ce qui est pratique pour tester les alarmes par e-mail plus tard.

Après le démarrage du projet, vous pouvez voir de nombreux points de terminaison dans IDEA, comme illustré dans la figure:

Au début, mon IDEA n'affichait pas cet Endpoints, mais plus tard, j'ai trouvé que la version de l'idée que j'utilisais était trop ancienne, ou 2017.1,
et cela nécessite idea2017.2 ou supérieur pour pouvoir la voir.

Plus tard, j'ai dû le télécharger et l'installer à nouveau, et cela a pris du temps. . . .

Après le démarrage, visitez http: // localhost: 8888 / admin / prometheus pour voir les indicateurs de surveillance exposés par le service. Remarque:

Étant donné que l'authentification de sécurité est activée, vous devez être invité à entrer le compte / mot de passe pour accéder à cette URL. Si le message 404 s'affiche, veuillez vérifier si l'adresse demandée est correcte. Si vous ne définissez pas management.context-path, la valeur par défaut l'adresse est http: // ip: port / prometheus

Troisièmement, installez Prometheus

lien de téléchargement

https://prometheus.io/download/

Cet article télécharge la version Windows de prometheus-2.17.2.windows-amd64.tar.gz.

Après la décompression, modifiez le fichier prometheus.yml pour configurer les informations cibles pour la collecte de données.

scrape_configs: 
  # The job name is added as a label `job=<job_name>` 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: 'monitor-demo' 
    scrape_interval: 5s # 刮取的时间间隔 
    scrape_timeout: 5s  
    metrics_path: /admin/prometheus 
    scheme: http  
    basic_auth: #认证信息 
      username: admin 
      password: 1234 
    static_configs: 
      - targets: 
        - 127.0.0.1:8888  #此处填写 Spring Boot 应用的 IP + 端口号

Pour plus d'informations sur la configuration, veuillez consulter la documentation officielle.

Vous pouvez maintenant démarrer Prometheus. Entrez la ligne de commande: prometheus.exe --config.file = prometheus.yml pour
visiter http: // localhost: 9090 / cibles pour vérifier si l'état de la collecte Spring Boot est normal.

Quatrièmement, installez Grafana

lien de téléchargement

https://grafana.com/grafana/download

Cet article utilise la version Windows grafana-6.3.3.windows-amd64.zip.

Après la décompression, exécutez grafana-server.exe dans le répertoire bin pour démarrer et le navigateur peut accéder à http: // localhost: 3000 pour voir la page de connexion. Le mot de passe par défaut du compte est admin / admin.

Commencez maintenant à créer votre propre panneau de surveillance visuelle.

1. Configurer la source de données

2. Créez un tableau de bord

3. Remplissez les points d'index collectés

Remarque:  Les points indicateurs ici ne peuvent pas être remplis de manière désinvolte, ils doivent exister et peuvent être vus dans Prometheus. 4. Sélectionnez le style de graphique
5. Remplissez la description du titre

Enfin, cliquez sur Enregistrer dans le coin supérieur droit et entrez le nom de Dashboad.

Astuces:  La disposition du graphique ici peut être déplacée avec la souris

Cinq, ajouter une alarme par e-mail

Dans un projet réel, lorsqu'un indicateur surveillé dépasse un seuil (par exemple, l'utilisation du processeur est trop élevée), on espère que le système de surveillance alertera automatiquement le personnel d'exploitation et de maintenance par SMS, DingTalk et e-mail. Grafana prend en charge cette fonction .

Étape 1:  Cliquez sur [Alerte] ——> [Canaux de notification] pour ajouter des canaux de notification

Créer une chaîne
Éditer

Il existe de nombreuses options pour Type ici, y compris webhook, Dingding, etc. Ici, nous prenons le courrier électronique comme exemple.

Étape 2:  configuration des e-mails

Grafana s'exécute par défaut en utilisant defaults.ini dans le répertoire conf comme fichier de configuration. Selon les recommandations officielles, nous ne devons pas changer defaults.ini mais créer un nouveau fichier de configuration custom.ini dans le même répertoire.

Prenons l'exemple de la boîte aux lettres d'entreprise Tencent, la configuration est la suivante:

#################################### SMTP / Emailing #####################
[smtp]
enabled = true
host = smtp.exmail.qq.com:465
user = [email protected]
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = XXX
cert_file =
key_file =
skip_verify = true
from_address = [email protected]
from_name = Grafana
ehlo_identity = ininin.com

Après cela, exigez beaucoup Grafana, instruction grafana-server.exe -config = E: \ file \ grafana-6.3.3 \ conf \ custom.ini

Étape 3:  Ajouter une alerte à l'indicateur

Configurer les règles d'alerte
Configurer la méthode de notification et les informations

Évaluez chaque

Indique le taux de détection, ici pour tester l'effet, passer à 1 seconde

Pour

Si la règle d'alerte est configurée avec Pour et que la requête enfreint le seuil configuré, elle passera d'abord de OK à En attente. Aucune notification ne sera envoyée de OK à Pending Grafana. Une fois que l'heure de déclenchement de la règle d'alerte dépasse la durée, elle passe à Alerte et envoie une notification d'alerte.

Conditions

Lorsque représente le temps, de représente la condition, est au-dessus représente la valeur de déclenchement
en même temps, il y aura une ligne rouge après le réglage est au-dessus.

Si aucune donnée ou toutes les valeurs sont nulles

S'il n'y a pas de données ou que toutes les valeurs sont vides, sélectionnez déclencher l'alarme ici

En cas d'erreur d'exécution ou de timeout

Si l'exécution est erronée ou en heures supplémentaires, choisissez de déclencher l'alarme ici

Remarque: la  prochaine fois qu'il sera déclenché, par exemple 10 secondes plus tard, il ne se déclenchera pas à nouveau pour éviter que des tempêtes d'alarme ne se produisent!

Étape 4: Après la
demande de  test http: // localhost: 8848 / heap / test interface, la mémoire dépasse le seuil défini, puis un e-mail d'alarme est reçu.

Messagerie d'alarme

L'image ici n'est pas montrée, je ne comprends pas pourquoi.

Six, résumé

Cet ensemble de fonctions de surveillance est assez puissant, mais Prometheus a beaucoup d'expressions.

Joindre quelques liens:

  • https://prometheus.io/docs/introduction/first_steps/

  • https://grafana.com/docs/grafana/latest/

  • https://github.com/2YSP/monitor-demo

}



有热门推荐????
10个解放双手实用在线工具,有些代码真的不用手写!微信小程序练手实战:前端+后端(Java)
又一神操作,SpringBoot2.x 集成百度 uidgenerator搞定全局ID为什么阿里不允许用Executors创建线程池,而是通过ThreadPoolExecutor的方式?
为什么要在2021年放弃Jenkins?我已经对他失去耐心了...
Docker + FastDFS + Spring Boot 一键式搭建分布式文件服务器

点击阅读原文,前往学习SpringCloud实战项目

Je suppose que tu aimes

Origine blog.csdn.net/qq_17231297/article/details/114697181
conseillé
Classement