Es ist nicht das Ende der Erstellung eines Systems, aber es ist auch wichtig, es stabil zu betreiben und wie oft es verwendet wird. Selbst bei DevOps und Agile ist es wichtig, nach der Veröffentlichung Feedback zu erhalten und die nächste Strategie zu verfolgen. Was ist Feedback? Nicht nur "Ich möchte, dass Sie dies tun" und "Ich möchte diese Funktion, ich brauche sie nicht" von Benutzern, sondern auch "Ich verwende diese Funktion nicht" oder "Diese Funktion wurde plötzlich verwendet" vom Systembetreiber. Es ist auch wichtig, dies von der Anbieterseite aus zu beachten.
Spring Boot verfügt über eine Funktion namens Spring Boot Actuator, mit der die erforderlichen Informationen im aktuellen System abgerufen werden können. Ich möchte sie daher vorstellen.
Mit der Erweiterungsfunktion von SpringBoot können Sie leicht verschiedene Informationen erhalten. Typische
Es sind Informationen wie. Details finden Sie unter dem unten stehenden Link.
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html
How to Get Started Es ist einfach, verwenden Sie also Spring Initializr. Die Version von Spring Boot verwendet diesmal 2.3.0 M1. Wählen Sie Spring Web und Spring Boot Actuator für Abhängigkeiten aus.
Drücken Sie nach Abschluss der Einstellungen Genarate, um die Quellcodevorlage herunterzuladen. Wenn Sie fertig sind, entpacken Sie es und öffnen Sie es in Ihrer bevorzugten IDE.
Wenn Sie sich pom.xml ansehen, sehen Sie, dass die abhängigen Bibliotheken für SpringBoot Actuator aufgelistet sind.
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Die Informationen, die mit dieser Funktion gelernt werden können, können nützliche Informationen für Angreifer sein, die Schwachstellen ausnutzen. Daher ist die Funktion standardmäßig deaktiviert. Ändern Sie die Anwendungseinstellungen, um sie zu aktivieren.
application.properties
management.endpoints.enabled-by-default=true
management.endpoints.web.exposure.include=*
management.endpoints.enabled-by-default legt die Verfügbarkeit der Informationserfassung standardmäßig fest. management.endpoints.web.exposure.include ist eine Einstellung, die REST-Endpunkte aktiviert. Ersteres ist auf true gesetzt und kann standardmäßig abgerufen werden, und letzteres wird auf * gesetzt, in dem Sinne, dass es für alle Endpunkte aktiviert ist.
Nach dem Einstellen erstellen und starten. Sie können der normalen Spring Boot App folgen.
Erstellen Sie mit mvn package
und beginnen Sie mit java -jar target / demo-0.0.1-SNAPSHOT.jar
.
Versuchen Sie nach dem Start, auf http: // localhost: 8080 / actuator /
zuzugreifen.
Anschließend können Sie die Endpunktliste in JSON abrufen.
curl http://localhost:8080/actuator | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1659 0 1659 0 0 162k 0 --:--:-- --:--:-- --:--:-- 162k
{
"_links": {
"self": {
"href": "http://localhost:8080/actuator",
"templated": false
},
"beans": {
"href": "http://localhost:8080/actuator/beans",
"templated": false
},
"caches-cache": {
"href": "http://localhost:8080/actuator/caches/{cache}",
"templated": true
},
"caches": {
"href": "http://localhost:8080/actuator/caches",
"templated": false
},
"health-path": {
"href": "http://localhost:8080/actuator/health/{*path}",
"templated": true
},
"health": {
"href": "http://localhost:8080/actuator/health",
"templated": false
},
"info": {
"href": "http://localhost:8080/actuator/info",
"templated": false
},
"conditions": {
"href": "http://localhost:8080/actuator/conditions",
"templated": false
},
"shutdown": {
"href": "http://localhost:8080/actuator/shutdown",
"templated": false
},
"configprops": {
"href": "http://localhost:8080/actuator/configprops",
"templated": false
},
"env": {
"href": "http://localhost:8080/actuator/env",
"templated": false
},
"env-toMatch": {
"href": "http://localhost:8080/actuator/env/{toMatch}",
"templated": true
},
"loggers-name": {
"href": "http://localhost:8080/actuator/loggers/{name}",
"templated": true
},
"loggers": {
"href": "http://localhost:8080/actuator/loggers",
"templated": false
},
"heapdump": {
"href": "http://localhost:8080/actuator/heapdump",
"templated": false
},
"threaddump": {
"href": "http://localhost:8080/actuator/threaddump",
"templated": false
},
"metrics-requiredMetricName": {
"href": "http://localhost:8080/actuator/metrics/{requiredMetricName}",
"templated": true
},
"metrics": {
"href": "http://localhost:8080/actuator/metrics",
"templated": false
},
"scheduledtasks": {
"href": "http://localhost:8080/actuator/scheduledtasks",
"templated": false
},
"mappings": {
"href": "http://localhost:8080/actuator/mappings",
"templated": false
}
}
}
Da die Menge groß ist, werde ich nicht alles erklären, aber wenn es zum Beispiel Gesundheit ist, zeigt es, dass der Lebens- und Todeszustand der Anwendung mit diesem Endpunkt als Gesundheitsprüfungsfunktion erfasst werden kann.
curl http://localhost:8080/actuator/health | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 15 0 15 0 0 35 0 --:--:-- --:--:-- --:--:-- 35
{
"status": "UP"
}
Eine andere Möglichkeit, Umweltinformationen abzurufen, besteht darin, sie auf einem Endpunkt namens env zu veröffentlichen.
curl http://localhost:8080/actuator/env | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12493 0 12493 0 0 154k 0 --:--:-- --:--:-- --:--:-- 154k
{
"activeProfiles": [],
"propertySources": [
{
"name": "server.ports",
"properties": {
"local.server.port": {
"value": 8080
}
}
},
{
"name": "servletContextInitParams",
"properties": {}
},
{
"name": "systemProperties",
"properties": {
"java.runtime.name": {
"value": "OpenJDK Runtime Environment"
},
"java.protocol.handler.pkgs": {
"value": "org.springframework.boot.loader"
},
"sun.boot.library.path": {
"value": "/Users/user/.sdkman/candidates/java/8.0.212-amzn/jre/lib"
},
"java.vm.version": {
"value": "25.212-b04"
},
"gopherProxySet": {
"value": "false"
},
"java.vm.vendor": {
"value": "Amazon.com Inc."
},
"java.vendor.url": {
"value": "https://aws.amazon.com/corretto/"
},
"path.separator": {
"value": ":"
},
"java.vm.name": {
"value": "OpenJDK 64-Bit Server VM"
},
"file.encoding.pkg": {
"value": "sun.io"
},
"user.country": {
"value": "JP"
},
"sun.java.launcher": {
"value": "SUN_STANDARD"
},
"sun.os.patch.level": {
"value": "unknown"
},
"PID": {
"value": "59317"
},
"java.vm.specification.name": {
"value": "Java Virtual Machine Specification"
},
"user.dir": {
"value": "/Users/user/oper/spring/spring-docker"
},
"java.runtime.version": {
"value": "1.8.0_212-b04"
},
"java.awt.graphicsenv": {
"value": "sun.awt.CGraphicsEnvironment"
},
"java.endorsed.dirs": {
"value": "/Users/user/.sdkman/candidates/java/8.0.212-amzn/jre/lib/endorsed"
},
"os.arch": {
"value": "x86_64"
},
"java.io.tmpdir": {
"value": "/var/folders/1m/v_pnk3kd3hj0558d1z3nsnzh0000gn/T/"
},
"line.separator": {
"value": "\n"
},
"java.vm.specification.vendor": {
"value": "Oracle Corporation"
},
"os.name": {
"value": "Mac OS X"
},
"sun.jnu.encoding": {
"value": "UTF-8"
},
Unten weggelassen.
Wenn Sie hier schauen, was ist das Betriebssystem, was ist die Java-Implementierung, Version und Zeichenkodierung? Sie können Informationen wie erhalten.
Darüber hinaus sind Beans, die eine Liste der registrierten Beans und Konfigurationsprops abrufen können, die den festgelegten Inhalt abrufen können, praktisch, um die Umgebung zum Zeitpunkt der üblichen Fehlerbehebung zu überprüfen.
Bisher haben wir nur Endpoint eingeführt, das standardmäßig bereitgestellt wird. Sie können es jedoch anpassen. Wenn Sie etwas speziell in der App zurückgeben möchten, können Sie einen Endpunkt erstellen und ihn einfach in JSON zurückgeben. Ich werde das Beispiel hier weglassen. Wenn Sie dies tun möchten, lesen Sie bitte den offiziellen Leitfaden.
https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-endpoints-custom
Was haben Sie gedacht? Dieses Mal konnte ich nicht herausfinden, wie ich die Betriebsstatistikinformationen darüber abrufen kann, wie viele Funktionen wie erforderlich in DevOps verwendet werden, aber ich hoffe, Sie können sich vorstellen, dass es einfach zu sein scheint, die Umgebungsinformationen abzurufen. Wenn Sie die (?) Spring Boot-App Spring Boot Actuator nicht installiert haben, versuchen Sie es bitte.
Recommended Posts