Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
開発者のためのSpring Boot Actuator入門 / jsug-2019-08
Search
Ryo Shindo
August 28, 2019
Programming
6.5k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
開発者のためのSpring Boot Actuator入門 / jsug-2019-08
JSUG勉強会 2019その8 Spring for Beginner
https://jsug.doorkeeper.jp/events/95750
Ryo Shindo
August 28, 2019
More Decks by Ryo Shindo
See All by Ryo Shindo
今こそ知りたいSpring Test / Spring Fest 2020
rshindo
13
7.4k
こわくないソースコードリーディング生活 / JJUG CCC 2019 Fall
rshindo
15
10k
早わかりSpring Data JDBC / jsug-2019-01
rshindo
5
4.4k
ふつうのJavaアプリ開発のための自動テスト戦略 / JJUG CCC 2018 Fall
rshindo
9
5.4k
Spring WebFluxで学ぶReactive Application / Introduction to Reactive
rshindo
1
2.5k
まだまだ間に合う!JUnit 5入門 / JJUG CCC 2018 Spring
rshindo
6
3.5k
Spring Data JDBCを使い倒す! / Intruduction to Spring Data JDBC
rshindo
4
2.4k
Other Decks in Programming
See All in Programming
What We Talk About When We Talk About XP
m_seki
2
620
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
110
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.2k
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
270
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
950
巨大モノリシックアプリ モダン化大作戦
ktcryomm
0
1k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
240
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
260
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
240
Intent as Code
shoppingjaws
6
1k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
HDC tutorial
michielstock
2
870
Writing Fast Ruby
sferik
630
63k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Abbi's Birthday
coloredviolet
4
10k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
Optimizing for Happiness
mojombo
378
71k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Producing Creativity
orderedlist
PRO
348
41k
Skip the Path - Find Your Career Trail
mkilby
1
230
Transcript
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 1
開発者のための Spring Boot Actuator入門 JSUG勉強会 2019その8 Acroquest Technology株式会社 進藤 遼
自己紹介 • 進藤 遼 • Acroquest Technology株式会社 • 日本Springユーザ会 スタッフ
• Twitter: @shindo_ryo • Spring歴は約4年 • 最近はエンプラ系システムでアーキテクチャ設計やったり Goで分散トレーシングやったり。 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 2
Acroquestのミッション・ビジョン Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3 テクノロジストチームとして ビジネスの革新的価値創出に挑戦する ビジョン Acroquestの創り出す技術で 地球を感動で進化させる ミッション
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 4
Spring Boot 枠のセッションなので Spring Boot の話をします
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5
https://speakerdeck.com/masatoshitada/spring-for-spring-boot-number-jsug
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6
以上!!
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7
(ここから真面目に話す)
アジェンダ 1. Spring Bootとは 2. Spring Boot Actuatorとは 3. Actuatorに触ってみよう
4. 開発に役立つ使い方 ➢ env – アプリの設定の確認 ➢ mappings – ControllerとURLのマッピングの確認 ➢ loggers – ログレベルの確認/変更 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9
1. Spring Boot とは
Spring Bootとは・・・ • 重厚長大化したSpringプロジェクト群を使った 開発を簡単にはじめられる仕組み ✓ ただしシンプルであるとは言っていない (Simple is not
Easy.) • AutoConfigurationの仕組みによって、Spring アプリケーションに必要な設定・Bean定義等を 大幅に省略することができる ✓ dependencyに追加するだけでデフォルト設定が効く ✓ 設定を変えたければ、プロパティを指定するか、自分で Bean定義を部分的に書く Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10
本質ではないポイント • Uber jar (組み込みTomcat) ✓ Bootでもwarは作れる ✓ とはいえ、最近のWAFはほとんどExecutable Jarをつくる
• ymlファイルで設定を書く ✓ .propertiesでも.ymlでも設定する内容は同じ ✓ xmlはほとんど書く必要はないが、必要であれば書くという 程度 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12
2. Spring Boot Actuatorとは
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13
Actuator = 駆動装置?
2. Spring Boot Actuator とは • 実行中のSpring Boot アプリケーションの 情報を取得するための機能
• アプリケーションに組み込むことで、アプリの設定や メトリクスなどをHTTP/JMXで取得できるようになる Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14 Spring Boot Application Spring Boot Actuator Env Metrics Health Beans Thread dump HTTP … JMX
2. Spring Boot Actuator とは Copyright © Acroquest Technology Co.,
Ltd. All rights reserved. 15 $ curl -XGET localhost:8080/actuator/health { "status": "UP" } 共通のプレフィックス(/actuator) の後ろにエンドポイント名をつける JSON形式
2. Spring Boot Actuator とは ◼ エンドポイント一覧 (2.0~) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 16 auditevents beans caches conditions configprops env flyway health httptrace info integrationgraph loggers liquibase metrics mappings scheduledtasks sessions shutdown threaddump heapdump jolokia logfile prometheus
2. Spring Boot Actuator とは ◼ エンドポイント一覧 (2.0~) Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 17 auditevents beans caches conditions configprops env flyway health httptrace info integrationgraph loggers liquibase metrics mappings scheduledtasks sessions shutdown threaddump heapdump jolokia logfile prometheus ヘルスチェック スレッドダンプ メトリクス (JVM情報など)
2. Spring Boot Actuator とは • メトリクス収集ライブラリのMicrometer との統合も可能 ➢ Boot
2.0からはspring-boot-starter-actuatorに micrometerが含まれている • ただし今回は開発時に役立つActuatorの使い方を お話しします。 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19
3. Actuator に触ってみよう
3. Actuatorに触ってみよう Copyright © Acroquest Technology Co., Ltd. All rights
reserved. 20 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> pom.xml AutoConfiguration で エンドポイントが登録される
3. Actuatorに触ってみよう Copyright © Acroquest Technology Co., Ltd. All rights
reserved. 21 management: endpoints: web: base-path: /manage exposure: include: '*' exclude: flyway endpoint: shutdown: enabled: true server: port: 8082 application.yml Actuatorのエンドポイント共通 のプレフィックスを指定する (デフォルトは /actuator)
3. Actuatorに触ってみよう Copyright © Acroquest Technology Co., Ltd. All rights
reserved. management: endpoints: web: base-path: /manage exposure: include: '*' exclude: flyway endpoint: shutdown: enabled: true server: port: 8082 22 application.yml 公開するエンドポイントを指定 する。 デフォルトではhealthとinfo のみが公開される。
3. Actuatorに触ってみよう Copyright © Acroquest Technology Co., Ltd. All rights
reserved. management: endpoints: web: base-path: /manage exposure: include: '*' exclude: flyway endpoint: shutdown: enabled: true server: port: 8082 23 application.yml shutdownの公開は別設定
3. Actuatorに触ってみよう Copyright © Acroquest Technology Co., Ltd. All rights
reserved. management: endpoints: web: base-path: /manage exposure: include: '*' exclude: flyway endpoint: shutdown: enabled: true server: port: 8082 24 application.yml Actuator のみポートを分ける ことも可能
3. Actuatorに触ってみよう ◼ 注意事項 ✓ 本番環境にActuatorを適用する場合、 アクセス制御は必ずつけること ➢ アプリ本体と同様にSpring Securityで
Actuatorエンドポイントを保護してください ✓ 実際に利用するエンドポイントのみ公開すること ➢ プロファイルで環境ごとに公開範囲を分ける ➢ Dev環境以外は思い切ってOFFにするのもあり Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 26
4. 開発に役立つ使い方
4. 開発に役立つ使い方 Spring Bootで開発していると、こんな悩みありますよね? 実際に読み込まれたプロパティが分からない Controllerのどのメソッドがどのエンドポイント に対応しているか分からない ログレベルを変えるのにいちいち再起動 するのが面倒だ Copyright
© Acroquest Technology Co., Ltd. All rights reserved. 27
4. 開発に役立つ使い方 それ、Actuatorで楽になれるよ 実際に読み込まれたプロパティが分からない ⇒ env Controllerのどのメソッドがどのエンドポイント に対応しているか分からない ⇒ mappings
ログレベルを変えるのにいちいち再起動 するのが面倒だ ⇒ loggers Copyright © Acroquest Technology Co., Ltd. All rights reserved. 28
4. 開発に役立つ使い方 • お悩み① Copyright © Acroquest Technology Co., Ltd.
All rights reserved. 29 実際に読み込まれたプロパティ/ 環境変数が分からない! デバッガで確認するのが大変!
4. 開発に役立つ使い方 ◼ env エンドポイント • アプリが読み込んだ環境変数やプロパティを一覧にして 取得できる Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 30 { "activeProfiles": [ "mysql" ], "propertySources": [ { "name": "applicationConfig: [classpath:/application.properties]", "properties": { "management.endpoints.web.base-path": { "value": "/manage", "origin": "class path resource [application.properties]:18:36" } }
4. 開発に役立つ使い方 • お悩み② Copyright © Acroquest Technology Co., Ltd.
All rights reserved. 31 どんなエンドポイントがあるのか 分からない! Controllerとの対応が 全然見えない!
4. 開発に役立つ使い方 ◼ mapping エンドポイント • エンドポイントとControllerのメソッドとの対応関係を 一覧で取得できる Copyright ©
Acroquest Technology Co., Ltd. All rights reserved. 32 "dispatcherServlet": [ { “handler”: “public StringOwnerController.processCreationForm(Owner,BindingResult)", "predicate": "{POST /owners/new}", "details": { "handlerMethod": { "className": "org.springframework.samples.petclinic.owner.OwnerController", "name": "processCreationForm", }, "requestMappingConditions": { "methods": ["POST"], "params": [], "patterns": ["/owners/new"], "produces": [] }
4. 開発に役立つ使い方 • お悩み③ Copyright © Acroquest Technology Co., Ltd.
All rights reserved. 33 ログレベルの設定が複雑で 最終的な結果が分からない・・・ ログレベルを変えるためだけに アプリを再起動するのが 面倒・・・
4. 開発に役立つ使い方 ◼ loggers エンドポイント • アプリケーションを動かしながら、ログレベルの 取得と変更ができる ➢ /loggersでログレベルの一覧取得、/loggers/{ロガー名}で
特定のパッケージ・クラスに対するログレベルを取得 ➢ GETで取得、POSTで変更 ➢ ログレベルの変更は /loggers/{ロガー名} に対してのみ可能 (ログレベルをアプリ全体で変更する場合はROOTロガーの ログレベルを変更する) Copyright © Acroquest Technology Co., Ltd. All rights reserved. 34
4. 開発に役立つ使い方 ◼ ログレベルの取得 Copyright © Acroquest Technology Co., Ltd.
All rights reserved. 35 $ curl -XGET localhost:8080/actuator/loggers/org.springframework { "configuredLevel": null, "effectiveLevel": "INFO" } 実際に適用されているログレベルは effectiveLevel
4. 開発に役立つ使い方 ◼ ログレベルの変更 Copyright © Acroquest Technology Co., Ltd.
All rights reserved. 36 # ログレベルをDEBUGに変更 $ curl -XPOST localhost:8080/actuator/loggers/org.springframework -H ‘Content-Type: application/json’ –d ‘{“configuredLevel”: “DEBUG”}’ $ curl -XGET localhost:8080/actuator/loggers/org.springframework {"configuredLevel":"DEBUG","effectiveLevel":"DEBUG"} ConfiguredLevelのみ リクエストに入れる
4. 開発に役立つ使い方 • (余談)curl が面倒であればSpring Boot Adminを 使うのもありかも・・・ (時間があればデモします) Copyright
© Acroquest Technology Co., Ltd. All rights reserved. 37
まとめ ✓ Spring Boot Actuatorでアプリの情報を 簡単に取得できる! ✓ dependencyを追加するだけで適用できる! ✓ 運用だけじゃなくて開発にも役立つよ!
Copyright © Acroquest Technology Co., Ltd. All rights reserved. 38
Enjoy your Bootiful Life!! Evolve the Earth with Emotion of
Technology Copyright © Acroquest Technology Co., Ltd. All rights reserved. 39