Megosztás a következőn keresztül:


Csatlakozás a Spring felügyelt rendszergazdájához az Azure Container Appsben

A Spring-felügyelet által felügyelt összetevő egy felügyeleti felületet biztosít a Spring Boot-webalkalmazásokhoz, amelyek aktuátorvégpontokat fednek le. Az Azure Container Apps felügyelt összetevőjeként egyszerűen kötheti a tárolóalkalmazást a Spring rendszergazdájához a zökkenőmentes integráció és felügyelet érdekében.

Ez az oktatóanyag bemutatja, hogyan hozhat létre rendszergazdai szerepkört a Spring Java-összetevőhöz, és hogyan kötheti azt a tárolóalkalmazáshoz, hogy könnyedén monitorozza és kezelje a Spring-alkalmazásokat.

Képernyőkép a Spring Insights rendszergazdai irányítópultjának áttekintéséről.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Hozzon létre egy Rendszergazda a Spring Java-összetevőhöz.
  • Kösse a tárolóalkalmazást egy Spring Java-összetevő rendszergazdájához.

Ha integrálni szeretné a Spring rendszergazdát az Eureka Server for Spring szolgáltatással, olvassa el a Spring rendszergazdájának integrálása a Spring-hez készült Eureka Serverrel a Container Appsben című témakört.

Fontos

Ez az oktatóanyag olyan szolgáltatásokat használ, amelyek hatással lehetnek az Azure-számlájára. Ha úgy dönt, hogy követi a műveletet, a váratlan számlázás elkerülése érdekében törölje a cikkben szereplő erőforrásokat.

Előfeltételek

Megfontolások

Amikor futtatja a Spring-rendszergazda összetevőt a Container Appsben, vegye figyelembe az alábbi részleteket:

Elem Magyarázat
Hatókör Az összetevők ugyanabban a környezetben futnak, mint a csatlakoztatott tárolóalkalmazás.
Méretezés Az összetevő nem skálázható. A skálázási tulajdonságok minReplicas és maxReplicas mindkettő a következőre 1van állítva: .
Források Az összetevők tárolóerőforrás-lefoglalása ki van javítva. A processzormagok száma 0,5, a memória mérete pedig 1 Gi.
Díjszabás Az összetevők számlázása a használatalapú díjszabás alá tartozik. A felügyelt összetevők által felhasznált erőforrások számlázása az aktív/tétlen díjszabás szerint van kiszámlázva. Törölheti azokat az összetevőket, amelyek már nincsenek használatban a számlázás leállításához.
Kötés A tárolóalkalmazások kötéssel csatlakoznak egy összetevőhöz. A kötések konfigurációkat injektálnak a tárolóalkalmazás környezeti változóiba. A kötés létrehozása után a tárolóalkalmazás beolvassa a környezeti változók konfigurációs értékeit, és csatlakozhat az összetevőhöz.

Beállítás

Mielőtt elkezdene dolgozni a Spring-rendszergazda összetevővel, először létre kell hoznia a szükséges erőforrásokat.

Az alábbi parancsok segítségével létrehozhatja az erőforráscsoportot és a tárolóalkalmazás-környezetet.

  1. Hozzon létre változókat az alkalmazáskonfiguráció támogatásához. Ezeket az értékeket a lecke céljaira biztosítjuk.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=admin
    export APP_NAME=sample-admin-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
    
    Változó Leírás
    LOCATION Az Azure-régió helye, ahol a tárolóalkalmazást és a Java-összetevőt hozza létre.
    ENVIRONMENT A bemutató alkalmazás tárolóalkalmazás-környezetének neve.
    RESOURCE_GROUP A bemutató alkalmazás Azure-erőforráscsoportjának neve.
    JAVA_COMPONENT_NAME A tárolóalkalmazáshoz létrehozott Java-összetevő neve. Ebben az esetben létre kell hoznia egy Rendszergazda a Spring Java-összetevőhöz.
    IMAGE A tárolóalkalmazásban használt tárolórendszerkép.
  2. Jelentkezzen be az Azure-ba az Azure CLI-vel.

    az login
    
  3. Hozzon létre egy erőforráscsoportot.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    A paraméter használatakor a --query válasz egy egyszerű sikeres vagy sikertelen üzenetre szűr.

  4. Hozza létre a tárolóalkalmazás-környezetet.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Az összetevő használata

Most, hogy már rendelkezik egy meglévő környezettel, létrehozhatja a tárolóalkalmazást, és egy Rendszergazda for Spring-összetevő Java-összetevőpéldányához kötheti.

  1. Hozza létre a Spring Java rendszergazdája összetevőt.

    az containerapp env java-component admin-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 1 \
        --max-replicas 1
    
  2. Frissítse a Spring Java rendszergazdája összetevőt.

    az containerapp env java-component admin-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 2 \
        --max-replicas 2
    

A tárolóalkalmazás kötése a Spring Java rendszergazdájához összetevőhöz

  1. Hozza létre a tárolóalkalmazást, és kösse hozzá a Spring-rendszergazda összetevőhöz.

    az containerapp create \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --environment $ENVIRONMENT \
        --image $IMAGE \
        --min-replicas 1 \
        --max-replicas 1 \
        --ingress external \
        --target-port 8080 \
        --bind $JAVA_COMPONENT_NAME
    

A kötési művelet a tárolóalkalmazást a Spring Java felügyeleti összetevőjéhez köti. A tárolóalkalmazás mostantól beolvassa a környezeti változók konfigurációs értékeit, elsősorban a SPRING_BOOT_ADMIN_CLIENT_URL tulajdonságot, és csatlakozhat a Spring-rendszergazda összetevőhöz.

A kötés a következő tulajdonságot is injektálja:

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

Ez a tulajdonság azt jelzi, hogy a Spring-összetevő rendszergazdájának előnyben kell részesítenie a tárolóalkalmazás-példány IP-címét, amikor a Spring-kiszolgáló rendszergazdájához csatlakozik.

Nem kötelező: A tárolóalkalmazás leválasztása a Spring Java felügyeleti összetevőjéről

Ha el szeretne távolítani egy kötést egy tárolóalkalmazásból, használja a --unbind lehetőséget.

az containerapp update \
    --name $APP_NAME \
    --unbind $JAVA_COMPONENT_NAME \
    --resource-group $RESOURCE_GROUP

Az irányítópult megtekintése

Fontos

Az irányítópult megtekintéséhez legalább a Microsoft.App/managedEnvironments/write fiókhoz hozzárendelt szerepkört kell hozzárendelnie a felügyelt környezeti erőforráshoz. Explicit módon hozzárendelheti az erőforráshoz a szerepkört vagy Contributor a Owner szerepkört. A lépéseket követve létrehozhat egy egyéni szerepkördefiníciót, és hozzárendelheti azt a fiókjához.

Feljegyzés

Az irányítópult nem érhető el az Azure China 21Vianetben.

  1. Hozza létre az egyéni szerepkördefiníciót.

    az role definition create --role-definition '{
        "Name": "<ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Ügyeljen arra, hogy a zárójelek közötti <> helyőrzőket cserélje le az értékekre.

  2. Rendelje hozzá az egyéni szerepkört a fiókjához a felügyelt környezeti erőforráson.

    A felügyelt környezet erőforrás-azonosítójának lekérése:

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. Rendelje hozzá a szerepkört a fiókjához.

    A parancs futtatása előtt cserélje le a helyőrzőt – a <> zárójelek szerint – a felhasználó vagy szolgáltatásnév azonosítójára vagy szerepkörnevére.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "<ROLE_NAME>" \
        --scope $ENVIRONMENT_ID
    

    Feljegyzés

    Az <USER_OR_SERVICE_PRINCIPAL_ID> értéknek az Azure Portal eléréséhez használt identitásnak kell lennie. Az <ROLE_NAME> érték az 1. lépésben hozzárendelt név.

  4. Kérje le a Rendszergazda a Springhez irányítópult URL-címét.

    az containerapp env java-component admin-for-spring show \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --query properties.ingress.fqdn \
        --output tsv
    

    Ez a parancs azt az URL-címet adja vissza, amellyel hozzáférhet a Rendszergazda a Spring-irányítópulthoz. Az irányítópulton a tárolóalkalmazás is látható, ahogy az alábbi képernyőképen is látható.

    Képernyőkép a Rendszergazda a Springhez irányítópult áttekintéséről.

Az erőforrások eltávolítása

Az oktatóanyagban létrehozott erőforrások hatással vannak az Azure-számlára. Ha nem fogja hosszú távon használni ezeket a szolgáltatásokat, futtassa az alábbi parancsot az oktatóanyagban létrehozott összes eltávolításához.

az group delete --resource-group $RESOURCE_GROUP

Dependency

Ha a felügyeleti összetevőt a saját tárolóalkalmazásában használja, a következő függőséget kell hozzáadnia a pom.xml fájlhoz. Cserélje le a verziószámot a Maven-adattárban elérhető legújabb verzióra.

<dependency>
    <groupId>de.codecentric</groupId>
    <version>3.3.2</version>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

Konfigurálható tulajdonságok

A Spring Boot 2-től kezdve a végpontok healthinfo alapértelmezés szerint nem jelennek meg. Ezeket az alábbi konfigurációval teheti elérhetővé az application.properties fájlban.

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

A spring-hez készült rendszergazda engedélyezett konfigurációs listája

Az alábbi lista az alkalmazáshoz konfigurálható rendszergazdai összetevő tulajdonságait ismerteti. További információ: Spring Boot Admin.

Tulajdonság neve Leírás Alapértelmezett érték
spring.boot.admin.server.enabled Engedélyezi a Spring Boot felügyeleti kiszolgálót. true
spring.boot.admin.context-path Az elérési út előtagja, ahol a rendszergazdai kiszolgáló statikus objektumai és API-ja kiszolgálva van. A Dispatcher-Servlethez viszonyítva.
spring.boot.admin.monitor.status-interval A példányok állapotának ellenőrzéséhez ezredmásodpercben megadott időintervallum. 10,000ms
spring.boot.admin.monitor.status-lifetime Az állapot élettartama ezredmásodpercben. Az állapot nem frissül, amíg az utolsó állapot nem járt le. 10 000 ms
spring.boot.admin.monitor.info-interval Időintervallum ezredmásodpercben a példányok adatainak ellenőrzéséhez. 1m
spring.boot.admin.monitor.info-lifetime Az információk élettartama percek alatt. Az adatok nem frissülnek, amíg az utolsó információ nem járt le. 1m
spring.boot.admin.monitor.default-timeout Alapértelmezett időtúllépés kérések esetén. Az egyes végpontok egyedi értékei felülírhatók a használatával spring.boot.admin.monitor.timeout.*. 10,000
spring.boot.admin.monitor.timeout.* Kulcs-érték párok az időkorlát per endpointId. Alapértelmezett érték.default-timeout
spring.boot.admin.monitor.default-retries A sikertelen kérések újrapróbálkozásának alapértelmezett száma. Az adatokat módosító kérések (PUT, POST, , PATCHDELETE) soha nem lesznek újrapróbálkozottak. Az egyes végpontok egyedi értékei felülírhatók a használatával spring.boot.admin.monitor.retries.*. 0
spring.boot.admin.monitor.retries.* Kulcs-érték párok az újrapróbálkozások endpointIdszámával . Az adatokat módosító kérések (PUT, POST, , PATCHDELETE) soha nem lesznek újrapróbálkozottak. Alapértelmezett érték.default-retries
spring.boot.admin.metadata-keys-to-sanitize Az összes JSON-kimenetben a megtisztításhoz használt regex mintáknak megfelelő kulcsok metaadat-értékei. A Spring Boot 3-tól kezdve az összes működtető érték alapértelmezés szerint maszkolt. Az egyhangúsági folyamat konfigurálásáról további információt a Bizalmas értékek megtisztítása című témakörben talál. ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$"
spring.boot.admin.probed-endpoints A Spring Boot 1.x-ügyfélalkalmazások esetében a Spring Boot rendszergazda egy OPTIONS kéréssel mintavételezi a megadott végpontokat. Ha az elérési út eltér az azonosítótól, ezt az értéket id:path megadhatja például health:ping. "health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents"
spring.boot.admin.instance-proxy.ignored-headers Az ügyfeleknek küldött kérések során nem továbbítandó fejlécek. "Cookie", "Set-Cookie", "Authorization"
spring.boot.admin.ui.title A megjelenített oldal címe. "Spring Boot Admin"
spring.boot.admin.ui.poll-timer.cache Lekérdezési időtartam ezredmásodpercben az új gyorsítótáradatok lekéréséhez. 2500
spring.boot.admin.ui.poll-timer.datasource Lekérdezés időtartama ezredmásodpercben az új adatforrásadatok lekéréséhez. 2500
spring.boot.admin.ui.poll-timer.gc Lekérdezési időtartam ezredmásodpercben az új gc-adatok lekéréséhez. 2500
spring.boot.admin.ui.poll-timer.process Lekérdezési időtartam ezredmásodpercben az új folyamatadatok lekéréséhez. 2500
spring.boot.admin.ui.poll-timer.memory A lekérdezés időtartama ezredmásodpercben új memóriaadatok beolvasásához. 2500
spring.boot.admin.ui.poll-timer.threads Lekérdezési időtartam ezredmásodpercben az új szálak adatainak lekéréséhez. 2500
spring.boot.admin.ui.poll-timer.logfile Lekérdezési időtartam ezredmásodpercben az új naplófájladatok lekéréséhez. 1000
spring.boot.admin.ui.enable-toasts Engedélyezi vagy letiltja a bejelentési értesítéseket. false
spring.boot.admin.ui.title A böngésző ablakcímének értéke. ""
spring.boot.admin.ui.brand A navigációs fejlécben renderelt HTML-kód, és alapértelmezés szerint a Spring Boot felügyeleti címkéje lesz. Alapértelmezés szerint a Spring Boot Felügyeleti emblémát a neve követi. ""
management.scheme Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címében lecserélt érték.
management.address Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címében lecserélt érték.
management.port Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címében lecserélt érték.
management.context-path Az aktuátorvégpontok eléréséhez használt szolgáltatás URL-címéhez hozzáfűzött érték. ${spring.boot.admin.discovery.converter.management-context-path}
health.path Az állapot-ellenőrzéshez használt szolgáltatás URL-címéhez hozzáfűzött érték. Figyelmen kívül hagyja a EurekaServiceInstanceConverter. ${spring.boot.admin.discovery.converter.health-endpoint}
spring.boot.admin.discovery.enabled Engedélyezi a DiscoveryClient rendszergazdai kiszolgáló támogatását. true
spring.boot.admin.discovery.converter.management-context-path A felderített szolgáltatáshoz service-url fűzött érték, amikor az értéket a management-url rendszer átalakítja.DefaultServiceInstanceConverter /actuator
spring.boot.admin.discovery.converter.health-endpoint-path A felderített szolgáltatáshoz management-url fűzött érték, amikor az értéket a health-url rendszer átalakítja.DefaultServiceInstanceConverter "health"
spring.boot.admin.discovery.ignored-services A felderítés használatakor figyelmen kívül hagyott és alkalmazásként nem regisztrált szolgáltatások. Támogatja az olyan egyszerű mintákat, mint a "foo*", "*bar"és "foo*bar*".
spring.boot.admin.discovery.services A felderítés és az alkalmazásként regisztrált szolgáltatások. Támogatja az olyan egyszerű mintákat, mint a "foo*", "*bar"és "foo*bar*". "*"
spring.boot.admin.discovery.ignored-instances-metadata A szolgáltatások figyelmen kívül hagyva, ha legalább egy olyan metaadatelemet tartalmaznak, amely megfelel a lista mintáinak. Támogatja az olyan mintákat, mint a "discoverable=false".
spring.boot.admin.discovery.instances-metadata Szolgáltatások, ha legalább egy olyan metaadatelemet tartalmaznak, amely megfelel a lista mintáinak. Támogatja az olyan mintákat, mint a "discoverable=true".

Gyakori konfigurációk

  • Naplózással kapcsolatos konfigurációk:
    • logging.level.*
    • logging.group.*
    • A névtérben lévő logging.* egyéb konfigurációknak tilosnak kell lenniük. Például a naplófájlok használatát logging.file tiltani kell.

Korlátozások

  • A Spring Boot felügyeleti irányítópultja nem érhető el az Azure China 21Vianetben.

A Spring felügyelt rendszergazdájának integrálása az Eureka Server for Spring szolgáltatással