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:
![](https://img-blog.csdnimg.cn/img_convert/dc554c5723af448bf5fbaa7616ed3c0a.png)
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
![](https://img-blog.csdnimg.cn/img_convert/4c433df0ffa1ef28ae62536b4c07708e.png)
![](https://img-blog.csdnimg.cn/img_convert/86d25e32639405cdd6f3758ef6d41885.png)
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
![](https://img-blog.csdnimg.cn/img_convert/d76c4f0d0d0528bfa0ba8db6a2776670.png)
![](https://img-blog.csdnimg.cn/img_convert/93a4396e28a896f0c39607cf8467657c.png)
É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.
![](https://img-blog.csdnimg.cn/img_convert/06ed8865afa5f9773f3b0d25cbbf1341.png)
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实战项目