2023. 5. 16. 09:56γμΈνλ°/μ€νλ§ λΆνΈ - ν΅μ¬ μ리μ νμ©
μ€νλ§ Actuator Endpoint (health, info, logger, httpexchanges) (tistory.com)
μ λ² κΈμμ μ€νλ§μ΄ μ 곡νλ μ‘μΈμμ΄ν°μ λν΄μ μμλ΄€λ€.
Actuatorλ μ ν리μΌμ΄μ μ λν΄μ λͺ¨λν°λ§ λ° κ΄λ¦¬ν μ μλλ‘ λμμ£Όλ λΌμ΄λΈλ¬λ¦¬μ΄λ€.
μ€νλ§μ μ¬κΈ°μ λν΄μ λ§μ΄ν¬λ‘λ―Έν°, νλ‘λ©ν μ°μ€, κ·ΈλΌνλμ κ°μ μ΅κ·Ό μ ννλ λͺ¨λν°λ§ μμ€ν κ³Όλ λ§€μ° μ½κ² μ°λν μ μλλ‘ κΈ°λ₯μ μ 곡νλ€.
1οΈβ£ λ§μ΄ν¬λ‘λ―Έν°
μλΉμ€λ₯Ό μ΄μνλ©΄μ μ₯μ μ λμνκΈ° μν΄μ λͺ¨λν°λ§μ ν΄μΌνλλ°,
μ΄λ₯Ό λκΈ° μν΄ λ€μν λͺ¨λν°λ§ν΄μ΄ μ‘΄μ¬νλ€. λͺ¨λν°λ§ ν΄μκ² μμ€ν μ λ€μν μ 보λ₯Ό μ λ¬ν΄μ£Όλ©΄ λλ€.
(κ·Όλ° μ΄λ μ΄ λͺ¨λν°λ§ ν΄μ΄ μ μλνλ €λ©΄ μμ€ν μ λ€μν μ 보λ€μ ν΄λΉνλ κ°κ°μ λͺ¨λν°λ§ ν΄μ λ§μΆ°μ 보λ΄μΌ νλ€.)
μ²μμλ cpu, jvm, jdbc λ±μ μ 보λ₯Ό JMX ν΄μ μ λ¬νλ€κ³ νλ©΄ μ΄ μ 보λ€μ JMX λͺ¨λν°λ§ ν΄μμ μ ν νμμ λ§μΆ°μ μΈ‘μ νκ³ μ λ¬ν΄μ€¬λ€.
κ·Όλ° μ€κ°μ λͺ¨λν°λ§ ν΄μ κΈ°μ‘΄μ μ¬μ©νλ JMXμμ μ΅κ·Ό λ§μ΄ μ¬μ©νλ€λ νλ‘λ©ν μ°μ€λ‘ λ³κ²½νκΈ°λ‘ κ²°μ νλ€κ³ νλ€λ©΄...
μ΄ λ³κ²½νκΈ°λ‘ν λͺ¨λν°λ§ ν΄μ λ§λλ‘ λ€μ μ½λλ₯Ό μμ ν΄μΌ νλ€.
-> μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μ λ§μ΄ν¬λ‘λ―Έν° Micrometer λΌλ λΌμ΄λΈλ¬λ¦¬κ° μλ€.
λ§μ΄ν¬λ‘λ―Έν°λ μ ν리μΌμ΄μ λ©νΈλ¦ νμ¬λ λΌκ³ λ λΆλ¦¬λλ°, μ ν리μΌμ΄μ μ λ©νΈλ¦(μΈ‘μ μ§ν)λ₯Ό λ§μ΄ν¬λ‘λ―Έν°κ° μ ν νμ€ λ°©λ²μΌλ‘ λͺ¨μμ μ 곡νλ€. -> λ§μ΄ν¬λ‘λ―Έν°κ° μΆμνλ₯Ό ν΅ν΄μ ꡬν체λ₯Ό μ½κ² λ³κ²½ν μ μλλ‘ λμμ€λ€.
λ°λΌμ κ°λ°μλ λ§μ΄ν¬λ‘λ―Έν°κ° μ ν νμ€ λ°©λ²μΌλ‘ λ©νΈλ¦(μΈ‘μ μ§ν)λ₯Ό μ λ¬νλ©΄ λλ€. κ·Έλ¦¬κ³ μ¬μ©νκ³ μ νλ λͺ¨λν°λ§ ν΄μ λ§λ ꡬν체λ₯Ό μ ννλ©΄ λλ€. (μ΄νμλ λͺ¨λν°λ§ ν΄μ΄ λ³κ²½λμ΄λ ν΄λΉ ꡬνμ²΄λ§ λ³κ²½ν΄μ£Όλ©΄ λλ€.)
2οΈβ£ λ©νΈλ¦
κ°λ°μλ λ§μ΄ν¬λ‘λ―Έν°κ° μ ν νμ€ λ°©λ²μΌλ‘ CPU, JVM, λ±μ μ λ§μ μΈ‘μ μ§νλ€ μ§μ μμ§ν΄μ λ±λ‘νλ©΄ λλλ°
λ§μ΄ν¬λ‘λ―Έν°κ° λ©νΈλ¦ μμ§ κΈ°λ₯λ μ΄λ―Έ λ§λ€μ΄μ μ 곡ν΄μ€λ€.
κ·Έλ¦¬κ³ μ€νλ§ λΆνΈ μ‘μΈμμ΄ν°κ° λ§μ΄ν¬λ‘λ―Έν°κ° μ 곡νλ μ§ν μμ§μ @AutoConfiguration μ ν΅ν΄ μλμΌλ‘ λ±λ‘ν΄μ£Όκ³ μκΈ° λλ¬Έμ μ€νλ§ λΆνΈ μ‘μΈμμ΄ν°λ₯Ό μ¬μ©νλ©΄ λ©νΈλ¦ μ§νλ₯Ό νΈλ¦¬νκ² μ¬μ©ν μ μλ€.
http://localhost:8080/actuator/metrics
μ‘μΈμμ΄ν°κ° μ 곡νλ metrics μ€λν¬μΈνΈλ₯Ό μ¬μ©νλ©΄ κΈ°λ³ΈμΌλ‘ μ 곡νλ λ©νΈλ¦λ€μ νμΈν μ μλ€.
http://localhost:8080/actuator/metrics/system.cpu.count
μ΄λ°μμΌλ‘ νλ©΄ μ’ λ μμΈν λ©νΈλ¦μ νμΈν μ μλ€.
* Tag νν°
http://localhost:8080/actuator/metrics/jv m.memory.used?tag=area:heap
μ΄λ°μμΌλ‘ tag=KEY:VALUE νμμ μ¬μ©νλ©΄ μ 보λ₯Ό νν°λ§ν΄μ μ‘°νν μ μλ€.
http://localhost:8080/actuator/metrics/http.server.requests?tag=uri:/log&tag=status:200
-> uriκ° /log μ΄λ©΄μ status λ 200μΈ http μμ² μ‘°ν
3οΈβ£ λ©νΈλ¦ μ’ λ₯
λ§μ΄ν¬λ‘λ―Έν°μ μ‘μΈμμ΄ν°κ° κΈ°λ³ΈμΌλ‘ μ 곡νλ λ€μν λ©νΈλ¦μ΄ μλ€.
* JVM λ©νΈλ¦
λ©λͺ¨λ¦¬ λ° λ²νΌ ν μΈλΆ μ 보, κ°λΉμ§ μμ§ κ΄λ ¨ ν΅κ³, μ€λ λ νμ©, λ‘λ λ° μΈλ‘λλ ν΄λμ€ μ, JVM λ²μ μ 보, JIT μ»΄νμΌ μκ° λ±...
* μμ€ν λ©νΈλ¦
system, process, disk λ±μΌλ‘ μμνκ³ CPU μ§ν, νμΌ λμ€ν¬λ¦½ν° λ©νΈλ¦, κ°λ μκ° λ©νΈλ¦, μ¬μ© κ°λ₯ν λμ€ν¬ κ³΅κ° λ±μ νμΈν μ μλ€.
* μ ν리μΌμ΄μ μμ λ©νΈλ¦
μ ν리μΌμ΄μ μμ μκ° λ©νΈλ¦λ μ 곡νλ€.
application.started.time : μ ν리μΌμ΄μ μ μμνλλ° κ±Έλ¦¬λ μκ° (ApplicationStatedEvent λ‘ μΈ‘μ )
application.ready.time: μ ν리μΌμ΄μ μ΄ μμ²μ μ²λ¦¬ν μ€λΉκ° λλλ° κ±Έλ¦¬λ μκ° (ApplicationReadyEvent λ‘ μΈ‘μ )
ApplicationStatedEvent : μ€νλ§ μ»¨ν μ΄λκ° μμ ν μ€νλ μν
ApplicationReadyEvent : 컀맨λ λΌμΈ λ¬λκ° μ€νλ μ΄νμ νΈμΆ
* μ€νλ§ MVC λ©νΈλ¦
μ€νλ§ MVC 컨νΈλ‘€λ¬κ° μ²λ¦¬νλ λͺ¨λ μμ²μ λν΄μ λ€λ£¬λ€.
κ·Έλ¦¬κ³ tag λ₯Ό μ¬μ©ν΄μ μμΈν μ‘°νν μ μλ€.
uri : μμ² URI
method : GET, POST κ°μ HTTP λ©μλ
status : 200, 400, 500 κ°μ HTTP Status μ½λ
exception: μμΈ
outcome : μνμ½λλ₯Ό κ·Έλ£ΉμΌλ‘ λͺ¨μμ νμΈ 1xx: INFORMATION, 2xx: SUCCESS, 3xx: REDIRECTION, 4xx : CLIENT_ERROR, 5xx: SERVER_ERROR
http://localhost:8080/actuator/metrics/http.server.requests?tag=uri:/log&tag=status:200
* λ°μ΄ν°μμ€ λ©νΈλ¦
DataSource, 컀λ₯μ νμ κ΄ν λ©νΈλ¦μ νμΈν μ μλ€.
μ΅λ 컀λ₯μ , μ΅μ 컀λ₯μ , νμ± μ»€λ₯μ , λκΈ° 컀λ₯μ μ λ±μ νμΈν μ μλ€.
ν카리 컀λ₯μ νμ μ¬μ©νλ©΄ hikaricp λ₯Ό ν΅ν΄ ν카리 컀λ₯μ νμ μμΈν λ©νΈλ¦μ νμΈν μ μλ€.
* λ‘κ·Έ λ©νΈλ¦
logback λ‘κ·Έμ λν λ©νΈλ¦μ νμΈν μ μκ³ , trace, debug, info, warn, error κ°κ°μ λ‘κ·Έ λ 벨μ λ°λ₯Έ λ‘κ·Έ μλ₯Ό νμΈν μ μλ€.
* ν°μΊ£ λ©νΈλ¦ β
ν°μΊ£ λ©νΈλ¦μ λͺ¨λ μ¬μ©νλ €λ©΄ application.ymlμ μ΅μ μ ν€λ©΄ μ΅λ μ°λ λ, μ¬μ© μ°λ λ μλ₯Ό ν¬ν¨ν λ€μν λ©νΈλ¦μ νμΈν μ μλ€.
server:
tomcat:
mbeanregistry:
enabled: true
* μ¬μ©μ μ μ λ©νΈλ¦
νμκ°μ μ, μ£Όλ¬Έ μ.. λ± μ¬μ©μκ° μ§μ λ©νΈλ¦μ μ μν μ λ μλ€.
* κΈ°ν λ©νΈλ¦
HTTP ν΄λΌμ΄μΈνΈ λ©νΈλ¦, μΊμ λ©νΈλ¦, μμ μ€νκ³Ό μ€μΌμ€ λ©νΈλ¦, μ€νλ§ λ°μ΄ν° 리ν¬μ§ν 리 λ©νΈλ¦, λͺ½κ³ DB λ©νΈλ¦, λ λμ€ λ©νΈλ¦ λ± ..
4οΈβ£ νλ‘λ©ν μ°μ€
νλ‘λ©ν μ°μ€λ λ©νΈλ¦ μμ§, μκ°ν, μλ¦Ό, μλΉμ€ λμ€μ»€λ²λ¦¬ κΈ°λ₯μ λͺ¨λ μ 곡νλ μ€ν μμ€ λͺ¨λν°λ§ μμ€ν μ΄λ€.
νλ‘λ©ν μ°μ€λ μκ³μ΄μ μ μ₯νλ μΈλ©λͺ¨λ¦¬ λ°μ΄ν°λ² μ΄μ€μ΄μ λͺ¨λν°λ§ λ° κ²½λ³΄ μμ€ν μΌλ‘
μ ν리μΌμ΄μ μμ λ°μν λ©νΈλ¦μ μκ° μκ°λ§ νμΈνλ κ²μ΄κΈ° λλ¬Έμ κ³Όκ±° μ΄λ ₯κΉμ§ ν¨κ» νμΈνκΈ° μν΄μλ λ©νΈλ¦μ 보κ΄νλ DBκ° νμνλ€. κ·Έλ¦¬κ³ μ΄λ κ² νλ €λ©΄ μ΄λμ κ° κ³μ λ©νΈλ¦μ μμ§νκ³ DBμ μ μ₯ν΄μΌ νλλ° μ΄λ° μν μ νλ‘λ©ν μ°μ€κ° λ΄λΉνλ€.
5οΈβ£ κ·ΈλΌνλ
κ·ΈλΌνλλ μκ³μ΄ λ°μ΄ν°λ₯Ό νμνλ μ€ν μμ€ λκ΅¬λ‘ μκ°ν, νμ, κ²½κ³ μ€μ μ νκ³ μ ν리μΌμ΄μ λ°μ΄ν°λ₯Ό μ΄ν΄ν μ μλ λμ보λ μ§ν©μ μ 곡νλ€.
νλ‘λ©ν μ°μ€κ° DBλΌκ³ νλ€λ©΄ μ΄ DBμ μλ λ°μ΄ν°λ₯Ό λΆλ¬μ μ¬μ©μκ° λ³΄κΈ° νΈνκ² λ³΄μ¬μ£Όλ λμ보λκ° νμνλ° μ΄λ κ·ΈλΌνλλ λ§€μ° μ μ°νκ² λ°μ΄ν°λ₯Ό 보μ¬μ£Όλ ν΄μ΄λ€.
κ·ΈλΌνλλ μ λ§μ κ·Έλνλ₯Ό μ 곡νκ³ , νλ‘λ©ν μ°μ€λ₯Ό ν¬ν¨ν λ€μν λ°μ΄ν° μμ€λ₯Ό μ§μνλ€.
6οΈβ£ μ€νλ§ λΆνΈ μ‘μΈμμ΄ν°, νλ‘λ©ν μ°μ€, κ·ΈλΌνλ
- λ¨Όμ μ€νλ§ λΆνΈ μ‘μΈμμ΄ν°μ λ§μ΄ν¬λ‘λ―Έν°λ₯Ό μ¬μ©ν΄ μ λ§μ λ©νΈλ¦μ μλμΌλ‘ μμ±νλ€.
-> κ·Έ λ€μ νλ‘λ©ν μ°μ€λ λ§λ€μ΄μ§ λ©νΈλ¦μ μ§μμ μΌλ‘ μμ§νλ€.
-> νλ‘λ©ν μ°μ€λ μμ§ν λ©νΈλ¦μ λ΄λΆ DBμ μ μ₯νλ€.
-> μ¬μ©μλ κ·ΈλΌνλ λμ보λλ₯Ό ν΅ν΄ κ·Έλνλ‘ νΈλ¦¬νκ² λ©νΈλ¦μ μ‘°ννλ€. (λ©νΈλ¦ μ‘°νλ νλ‘λ©ν μ°μ€λ₯Ό ν΅ν΄μ μ‘°ννλ€.)
'μΈνλ° > μ€νλ§ λΆνΈ - ν΅μ¬ μ리μ νμ©' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€νλ§ & νλ‘λ©ν μ°μ€ & κ·ΈλΌνλ (κ·ΈλΌνλ μ€μΉ, μ°λ, μ¬μ© λ°©λ²) (0) | 2023.05.19 |
---|---|
μ€νλ§ & νλ‘λ©ν μ°μ€ (μ€μΉ, μ€μ , κΈ°λ³Έ κΈ°λ₯) (0) | 2023.05.18 |
μ€νλ§ Actuator Endpoint (health, info, logger, httpexchanges) (0) | 2023.05.15 |
μ€νλ§λΆνΈ Actuator (0) | 2023.05.15 |
μ€νλ§ YAML, @Profile (0) | 2023.05.11 |