Spring Boot集積Actutor端点配置

9305 ワード

1.説明
Actutorエンドポイントは、アプリケーションを監視し、対話することができます。Spring Bootは、healthエンドポイントなど、基本的なアプリケーションの動作状況情報を提供し、ユーザー定義のエンドポイントを追加することができます。
各個別のエンドポイントの有効化または無効化を制御しても良いし、includeとexclude属性の共通配置によって、エンドポイントのBen作成に影響を与えます。リモートでエンドポイントにアクセスするには、JMXまたはHTTPで公開しなければなりません。ほとんどのアプリケーションは、HTTP方式を選択して、外部に公開されています。ここで、/actuatプレフィックスとエンドポイントのIDは、外部に露出されるURLを構成しています。たとえばデフォルトの場合、healthエンドポイントは/actuat/healthにマッピングされます。
この論文では、HTTPによるモニタリングと管理について説明します。
2.サポートの端点
以下は技術と関係のない端点である。
ID
説明
audiitevents
現在のアプリケーションの審査イベント情報を公開します。
beans
アプリケーション内のすべてのSpring beanの完全なリストが表示されます。
caches
利用可能なキャッシュを公開します。
conditions
設定と自動構成クラスで評価された条件を表示します。また、それらの整合または不一致の原因も表示されます。
configprops
すべての@ConfigrationProptiesの整理リストを表示します。
エンv
SpringのConfigrable Evironmentから属性を公開します。
flyway
適用されたすべてのFlywayデータベースの遷移を表示します。
health
アプリケーションの運転状況情報が表示されます。
httptrace
HTTPトレース情報(デフォルトでは最後の100個のHTTP要求−応答を記録)が表示されます。
info
任意のアプリケーション情報を表示します。
integrationgraph
Spring集積図を表示します。
loggers
アプリケーションにおけるログレコーダの構成を表示および変更します。
liquibase
適用された任意のLiquibaseデータベースの遷移を表示します。
metrics
現在のアプリケーションのメトリック情報が表示されます。
mappings
すべての@Request Mappingパスの整理リストを表示します。
scheduledtask
アプリケーションに計画されたタスクが表示されます。
sessions
Spring Sessionをサポートするセッションストアからユーザセッションの検索と削除を許可します。Spring Sessionを使った反応式webアプリケーションのサポートは利用できません。
shutdown
アプリケーションを優雅にオフにします。
threaddump
スレッドダンプを実行します。
あなたのアプリケーションがウェブアプリケーション(Spring MVC、Spring WebFluxまたはJersey)であれば、以下の付加的なエンドポイントが使えます。
ID
説明
heappdump
hprofスタックに戻ってファイルを転送します。
ジョロキア
JMX beanはHTTPで公開されています。
logfile
ログファイルの内容を返します。HTTP Rangeヘッダを使ってログファイルの一部を検索することができます。
はい
プロメザス
Prometheusサーバでキャプチャできる形式でメトリックを公開します。
3.デフォルトの公開ポイント
端点には敏感な情報が含まれている可能性があるので、それらはいつ公開されるかをよく考えなければならない。以下の表は、内蔵端点がJMXまたはHTTPに対して、外部公開を黙認しているかどうかを示しています。
ID
JMX
HTTP
audiitevents
はい
No.
beans
はい
No.
caches
はい
No.
conditions
はい
No.
configprops
はい
No.
エンv
はい
No.
flyway
はい
No.
health
はい
はい
heappdump
N/A
No.
httptrace
はい
No.
info
はい
はい
integrationgraph
はい
No.
ジョロキア
N/A
No.
logfile
N/A
No.
loggers
はい
No.
liquibase
はい
No.
metrics
はい
No.
mappings
はい
No.
プロメザス
N/A
No.
scheduledtask
はい
No.
sessions
はい
No.
shutdown
はい
No.
threaddump
はい
No.
上の表からはHTTPのデフォルトの対外公開の2つのエンドポイントが見られます。healthとinfoだけです。
実際に公開されたエンドポイントは、includeとexcludeの属性によって制御され、下表では、これらの2つの属性のデフォルト構成が表示され、上記の表と一対一に対応することができ、ここでウェブの属性を含むのはHTTPの構成である。
属性
デフォルト
managerment.endpoints.jmx.exposure.exclude
managerment.endpoints.jmx.exposure.include

managerment.endpoints.web.exposure.exclude
managerment.endpoints.web.exposure.include
info、health
4.公開のポイントを修正する
ロゴポイントのみ公開:
management:
  endpoints:
    web:
      exposure:
        include: loggers
すべてのエンドポイントを公開しますが、loggersとenvエンドポイントを排除します。
management:
  endpoints:
    web:
      exposure:
        include: "*"
        exclude:
        - loggers
        - env
注意*YAMLには特殊な意味があります。すべてのエンドポイントを含む場合、必ず引用符を付けてください。また、エンドポイントを公開する際にユーザー定義のポリシーを実現したい場合は、EndpointFilter beanを登録することができます。
5.公開されているすべてのエンドポイントを確認する
設定を変更して、すべてのエンドポイントを公開した後、ブラウザはActutorが提供する管理URLにアクセスします。
http://localhost:8011/actuator
結果を返します
{
    "_links": {
        "self": {
            "href": "http://localhost:8011/actuator",
            "templated": false
        },
        "beans": {
            "href": "http://localhost:8011/actuator/beans",
            "templated": false
        },
        "caches-cache": {
            "href": "http://localhost:8011/actuator/caches/{cache}",
            "templated": true
        },
        "caches": {
            "href": "http://localhost:8011/actuator/caches",
            "templated": false
        },
        "health": {
            "href": "http://localhost:8011/actuator/health",
            "templated": false
        },
        "health-path": {
            "href": "http://localhost:8011/actuator/health/{*path}",
            "templated": true
        },
        "info": {
            "href": "http://localhost:8011/actuator/info",
            "templated": false
        },
        "conditions": {
            "href": "http://localhost:8011/actuator/conditions",
            "templated": false
        },
        "configprops": {
            "href": "http://localhost:8011/actuator/configprops",
            "templated": false
        },
        "env": {
            "href": "http://localhost:8011/actuator/env",
            "templated": false
        },
        "env-toMatch": {
            "href": "http://localhost:8011/actuator/env/{toMatch}",
            "templated": true
        },
        "loggers": {
            "href": "http://localhost:8011/actuator/loggers",
            "templated": false
        },
        "loggers-name": {
            "href": "http://localhost:8011/actuator/loggers/{name}",
            "templated": true
        },
        "heapdump": {
            "href": "http://localhost:8011/actuator/heapdump",
            "templated": false
        },
        "threaddump": {
            "href": "http://localhost:8011/actuator/threaddump",
            "templated": false
        },
        "metrics-requiredMetricName": {
            "href": "http://localhost:8011/actuator/metrics/{requiredMetricName}",
            "templated": true
        },
        "metrics": {
            "href": "http://localhost:8011/actuator/metrics",
            "templated": false
        },
        "scheduledtasks": {
            "href": "http://localhost:8011/actuator/scheduledtasks",
            "templated": false
        },
        "httptrace": {
            "href": "http://localhost:8011/actuator/httptrace",
            "templated": false
        },
        "mappings": {
            "href": "http://localhost:8011/actuator/mappings",
            "templated": false
        }
    }
}
対外開放が14つのエンドポイントで、対外開放がないエンドポイントは9つあります。auditevents、flyway、integration graph、jolokia、logfile、liquibase、prometheus、sessions、shutdown。
6.エンドポイントを有効にする
上記では公開の端点の配置が紹介されていますが、すべての端点が公開されていても、必ずしも対応の端点が見えてくるとは限りません。上にはまだ9つのエンドポイントがありますが、外部に開放されていません。原因は2つあります。一つのエンドポイントは有効にされていません。もう一つはエンドポイントです。関連の機能が実現されていないので、露出しても無駄です。またshutdown以外はすべてのエンドポイントがデフォルトで有効になります。
以下のプレゼンテーションではshutdownエンドポイントを有効にします。
management:
  endpoint:
    shutdown:
      enabled: true
7.エンドポイントを無効にする(オン/オフ)
エンドポイントを無効にすると、対応IDをfaslaseに設定することにより、以下のデモでは、そのエンドポイントを閉じることができます。
management:
  endpoint:
    loggers:
      enabled: false
すべてのエンドポイントのオープンのデフォルト値をfasleとして設定することで、すべてのエンドポイントを無効にし、特定のエンドポイントを有効にします。以下のプレゼンテーションでは、すべてのエンドポイントを無効にし、shutdownエンドポイントのみを有効にします。
management:
  endpoints:
    enabled-by-default: false
  endpoint:
    shutdown:
      enabled: true
同様にすべてのエンドポイントを有効にして、shutdownエンドポイントのみを無効にします。
management:
  endpoints:
    enabled-by-default: true
  endpoint:
    shutdown:
      enabled: false
8.オープンエンドポイントと有効エンドポイントの違い
一つのエンドポイントが同時に公開され、有効になってこそアクセスできます。一つのエンドポイントが有効になったら、HTTPではなくJMXで公開することができます。一つのエンドポイントが無効になったら、JMXやHTTPが公開されていてもアクセスできません。より細かいコントロール管理を実現します。
9.エンドポイントをカスタマイズ管理するパス
管理エンドポイントのためにプレフィックスをカスタマイズすることができます。特に、管理エンドポイントのプレフィックスは/manageとして以下に修正されます。
management:
  endpoints:
    web:
      base-path: /manage
サービスを再起動した後、元の管理URLは再アクセスできません。
http://localhost:8011/actuator
新しい管理URLにアクセスすべきです。
http://localhost:8011/manage
その下のhealthなど他のエンドポイントも新しいURLになります。
http://localhost:8011/manage/health
管理エンドポイントパスを/または空に設定すると、他のマッピングとの衝突を防ぐために管理URLを無効にします。
10.一般的なエンドポイントのパスをカスタマイズします。
エンドポイントを異なる経路にマッピングすることができます。次は健康診断を例にとって、プレゼンテーションは/actuat/healthを/actuat/healthcheckにマッピングします。
management:
  endpoints:
    web:
      path-mapping:
        health: healthcheck
再起動後、元の健康URLは再訪問できません。
http://localhost:8011/actuator/health
新しい健康URLにアクセスするべきです。
http://localhost:8011/actuator/healthcheck
管理エンドポイントパスの設定をさらに変更します。
management:
  endpoints:
    web:
      path-mapping:
        health: healthcheck
      base-path: /
管理URLにアクセスできませんが、より短い健康URLにアクセスできます。
http://localhost:8011/healthcheck