[{"data":1,"prerenderedAt":1184},["ShallowReactive",2],{"post-document:\u002Fjava\u002Fspring\u002F2026\u002F08\u002F23\u002Fspring-boot-actuator\u002F":3},{"id":4,"title":5,"body":6,"categories":1164,"date":1167,"description":1168,"extension":1169,"image":1170,"key_concepts":1170,"last_modified_at":1170,"legacyPath":1171,"meta":1172,"navigation":807,"part":1174,"path":1175,"published":807,"robots":1170,"seo":1176,"series":1177,"stem":1178,"strengths":1170,"summary":1170,"tags":1179,"tradeoffs":1170,"__hash__":1183},"posts\u002Fposts\u002FBackend\u002FSPRING\u002FSpring\u002F2026-08-23-spring-boot-actuator.md","Spring 기초 Part 11: Actuator와 애플리케이션 모니터링",{"type":7,"value":8,"toc":1149},"minimark",[9,13,20,23,34,37,40,45,161,163,167,170,203,206,229,235,237,241,359,362,371,373,377,394,397,427,481,484,524,527,529,533,536,548,551,563,566,639,642,644,648,651,663,669,672,732,738,740,744,760,832,835,873,876,891,893,897,900,928,934,937,940,975,977,981,1043,1046,1048,1052,1109,1114,1118,1145],[10,11,5],"h2",{"id":12},"spring-기초-part-11-actuator와-애플리케이션-모니터링",[14,15,16],"blockquote",{},[17,18,19],"p",{},"Spring Boot Actuator는 실행 중인 애플리케이션의 상태와 성능 지표를 확인하고 관리할 수 있도록 운영용 엔드포인트를 제공한다.",[17,21,22],{},"애플리케이션이 실행된다고 운영 준비가 끝난 것은 아니다.",[24,25,31],"pre",{"className":26,"code":28,"language":29,"meta":30},[27],"language-text","서버가 살아 있는가?\nDB 연결은 정상인가?\n메모리를 얼마나 사용하는가?\n요청이 얼마나 들어오는가?\n오류가 증가하고 있는가?\n","text","",[32,33,28],"code",{"__ignoreMap":30},[17,35,36],{},"Actuator와 Metrics는 이런 질문에 답할 수 있는 정보를 제공한다.",[38,39],"hr",{},[41,42,44],"h3",{"id":43},"_1-먼저-알아둘-단어","1. 먼저 알아둘 단어",[46,47,48,64],"table",{},[49,50,51],"thead",{},[52,53,54,58,61],"tr",{},[55,56,57],"th",{},"용어",[55,59,60],{},"정의",[55,62,63],{},"쉽게 말하면",[65,66,67,79,92,103,114,125,136,150],"tbody",{},[52,68,69,73,76],{},[70,71,72],"td",{},"모니터링",[70,74,75],{},"애플리케이션 상태와 성능을 지속적으로 관찰하는 작업",[70,77,78],{},"서버가 정상인지 확인",[52,80,81,84,87],{},[70,82,83],{},"Endpoint",[70,85,86],{},"운영 정보를 조회하거나 관리하는 접근 지점",[70,88,89],{},[32,90,91],{},"\u002Factuator\u002Fhealth",[52,93,94,97,100],{},[70,95,96],{},"Health Check",[70,98,99],{},"애플리케이션과 의존 시스템의 정상 여부 확인",[70,101,102],{},"DB 연결 상태 확인",[52,104,105,108,111],{},[70,106,107],{},"Metric",[70,109,110],{},"시간에 따라 측정되는 수치 데이터",[70,112,113],{},"CPU 사용량, 요청 수",[52,115,116,119,122],{},[70,117,118],{},"Micrometer",[70,120,121],{},"여러 모니터링 시스템에 Metrics를 전달하는 계측 라이브러리",[70,123,124],{},"Metrics 공통 인터페이스",[52,126,127,130,133],{},[70,128,129],{},"Prometheus",[70,131,132],{},"Metrics를 주기적으로 수집하고 저장하는 모니터링 시스템",[70,134,135],{},"Actuator Metrics 수집기",[52,137,138,141,144],{},[70,139,140],{},"Scrape",[70,142,143],{},"Prometheus가 애플리케이션의 Metrics Endpoint를 주기적으로 조회",[70,145,146,149],{},[32,147,148],{},"\u002Factuator\u002Fprometheus"," 호출",[52,151,152,155,158],{},[70,153,154],{},"Metadata",[70,156,157],{},"애플리케이션을 설명하는 부가 정보",[70,159,160],{},"버전, 빌드 정보",[38,162],{},[41,164,166],{"id":165},"_2-의존성-추가","2. 의존성 추가",[17,168,169],{},"Maven 프로젝트에 Actuator Starter를 추가한다.",[24,171,175],{"className":172,"code":173,"language":174,"meta":30,"style":30},"language-xml shiki shiki-themes github-light github-dark","\u003Cdependency>\n    \u003CgroupId>org.springframework.boot\u003C\u002FgroupId>\n    \u003CartifactId>spring-boot-starter-actuator\u003C\u002FartifactId>\n\u003C\u002Fdependency>\n","xml",[32,176,177,185,191,197],{"__ignoreMap":30},[178,179,182],"span",{"class":180,"line":181},"line",1,[178,183,184],{},"\u003Cdependency>\n",[178,186,188],{"class":180,"line":187},2,[178,189,190],{},"    \u003CgroupId>org.springframework.boot\u003C\u002FgroupId>\n",[178,192,194],{"class":180,"line":193},3,[178,195,196],{},"    \u003CartifactId>spring-boot-starter-actuator\u003C\u002FartifactId>\n",[178,198,200],{"class":180,"line":199},4,[178,201,202],{},"\u003C\u002Fdependency>\n",[17,204,205],{},"Prometheus 형식으로 Metrics를 제공하려면 Registry도 추가한다.",[24,207,209],{"className":172,"code":208,"language":174,"meta":30,"style":30},"\u003Cdependency>\n    \u003CgroupId>io.micrometer\u003C\u002FgroupId>\n    \u003CartifactId>micrometer-registry-prometheus\u003C\u002FartifactId>\n\u003C\u002Fdependency>\n",[32,210,211,215,220,225],{"__ignoreMap":30},[178,212,213],{"class":180,"line":181},[178,214,184],{},[178,216,217],{"class":180,"line":187},[178,218,219],{},"    \u003CgroupId>io.micrometer\u003C\u002FgroupId>\n",[178,221,222],{"class":180,"line":193},[178,223,224],{},"    \u003CartifactId>micrometer-registry-prometheus\u003C\u002FartifactId>\n",[178,226,227],{"class":180,"line":199},[178,228,202],{},[24,230,233],{"className":231,"code":232,"language":29,"meta":30},[27],"Spring Boot Actuator\n        ↓\nMicrometer가 Metrics 수집\n        ↓\nPrometheus Registry가 형식 변환\n        ↓\n\u002Factuator\u002Fprometheus로 노출\n        ↓\nPrometheus가 주기적으로 수집\n",[32,234,232],{"__ignoreMap":30},[38,236],{},[41,238,240],{"id":239},"_3-주요-엔드포인트","3. 주요 엔드포인트",[46,242,243,256],{},[49,244,245],{},[52,246,247,250,253],{},[55,248,249],{},"기능",[55,251,252],{},"설명",[55,254,255],{},"엔드포인트",[65,257,258,270,283,294,307,320,333,346],{},[52,259,260,263,266],{},[70,261,262],{},"Health",[70,264,265],{},"애플리케이션과 의존 시스템의 상태 확인",[70,267,268],{},[32,269,91],{},[52,271,272,275,278],{},[70,273,274],{},"Metrics",[70,276,277],{},"JVM, CPU, 메모리, GC, 요청 수 등의 지표 조회",[70,279,280],{},[32,281,282],{},"\u002Factuator\u002Fmetrics",[52,284,285,287,290],{},[70,286,129],{},[70,288,289],{},"Metrics를 Prometheus Scrape 형식으로 제공",[70,291,292],{},[32,293,148],{},[52,295,296,299,302],{},[70,297,298],{},"Info",[70,300,301],{},"버전과 빌드 정보 등의 Metadata 제공",[70,303,304],{},[32,305,306],{},"\u002Factuator\u002Finfo",[52,308,309,312,315],{},[70,310,311],{},"Env",[70,313,314],{},"환경 변수와 설정 속성 정보 제공",[70,316,317],{},[32,318,319],{},"\u002Factuator\u002Fenv",[52,321,322,325,328],{},[70,323,324],{},"Loggers",[70,326,327],{},"Logger 목록과 Log Level 조회 및 변경",[70,329,330],{},[32,331,332],{},"\u002Factuator\u002Floggers",[52,334,335,338,341],{},[70,336,337],{},"Beans",[70,339,340],{},"Spring Container에 등록된 Bean 정보 제공",[70,342,343],{},[32,344,345],{},"\u002Factuator\u002Fbeans",[52,347,348,351,354],{},[70,349,350],{},"Mappings",[70,352,353],{},"Controller의 URL Mapping 정보 제공",[70,355,356],{},[32,357,358],{},"\u002Factuator\u002Fmappings",[17,360,361],{},"엔드포인트가 Actuator에 존재하는 것과 HTTP로 외부에 노출되는 것은 다른 문제다.",[14,363,364],{},[17,365,366,367,370],{},"기본 설정에서는 일반적으로 ",[32,368,369],{},"health","만 HTTP와 JMX에 노출된다. 다른 엔드포인트는 필요한 항목을 명시적으로 노출해야 한다.",[38,372],{},[41,374,376],{"id":375},"_4-health-check","4. Health Check",[24,378,382],{"className":379,"code":380,"language":381,"meta":30,"style":30},"language-bash shiki shiki-themes github-light github-dark","curl 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fhealth'\n","bash",[32,383,384],{"__ignoreMap":30},[178,385,386,390],{"class":180,"line":181},[178,387,389],{"class":388},"sScJk","curl",[178,391,393],{"class":392},"sZZnC"," 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fhealth'\n",[17,395,396],{},"정상 상태라면 다음과 같은 응답을 확인할 수 있다.",[24,398,402],{"className":399,"code":400,"language":401,"meta":30,"style":30},"language-json shiki shiki-themes github-light github-dark","{\n  \"status\": \"UP\"\n}\n","json",[32,403,404,410,422],{"__ignoreMap":30},[178,405,406],{"class":180,"line":181},[178,407,409],{"class":408},"sVt8B","{\n",[178,411,412,416,419],{"class":180,"line":187},[178,413,415],{"class":414},"sj4cs","  \"status\"",[178,417,418],{"class":408},": ",[178,420,421],{"class":392},"\"UP\"\n",[178,423,424],{"class":180,"line":193},[178,425,426],{"class":408},"}\n",[46,428,429,439],{},[49,430,431],{},[52,432,433,436],{},[55,434,435],{},"상태",[55,437,438],{},"의미",[65,440,441,451,461,471],{},[52,442,443,448],{},[70,444,445],{},[32,446,447],{},"UP",[70,449,450],{},"정상적으로 동작 중",[52,452,453,458],{},[70,454,455],{},[32,456,457],{},"DOWN",[70,459,460],{},"구성 요소가 동작하지 않음",[52,462,463,468],{},[70,464,465],{},[32,466,467],{},"OUT_OF_SERVICE",[70,469,470],{},"서비스 대상에서 제외된 상태",[52,472,473,478],{},[70,474,475],{},[32,476,477],{},"UNKNOWN",[70,479,480],{},"상태를 판단할 수 없음",[17,482,483],{},"Health 정보의 상세 내용을 얼마나 공개할지는 별도로 설정한다.",[24,485,489],{"className":486,"code":487,"language":488,"meta":30,"style":30},"language-yaml shiki shiki-themes github-light github-dark","management:\n  endpoint:\n    health:\n      show-details: when_authorized\n","yaml",[32,490,491,500,507,514],{"__ignoreMap":30},[178,492,493,497],{"class":180,"line":181},[178,494,496],{"class":495},"s9eBZ","management",[178,498,499],{"class":408},":\n",[178,501,502,505],{"class":180,"line":187},[178,503,504],{"class":495},"  endpoint",[178,506,499],{"class":408},[178,508,509,512],{"class":180,"line":193},[178,510,511],{"class":495},"    health",[178,513,499],{"class":408},[178,515,516,519,521],{"class":180,"line":199},[178,517,518],{"class":495},"      show-details",[178,520,418],{"class":408},[178,522,523],{"class":392},"when_authorized\n",[17,525,526],{},"운영 환경에서 DB 주소나 내부 구성 정보가 불필요하게 공개되지 않도록 주의한다.",[38,528],{},[41,530,532],{"id":531},"_5-metrics","5. Metrics",[17,534,535],{},"Metrics Endpoint를 노출한 뒤 사용 가능한 지표 이름을 확인할 수 있다.",[24,537,539],{"className":379,"code":538,"language":381,"meta":30,"style":30},"curl 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fmetrics'\n",[32,540,541],{"__ignoreMap":30},[178,542,543,545],{"class":180,"line":181},[178,544,389],{"class":388},[178,546,547],{"class":392}," 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fmetrics'\n",[17,549,550],{},"특정 지표를 조회하려면 이름을 URL 뒤에 붙인다.",[24,552,554],{"className":379,"code":553,"language":381,"meta":30,"style":30},"curl 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fmetrics\u002Fjvm.memory.used'\n",[32,555,556],{"__ignoreMap":30},[178,557,558,560],{"class":180,"line":181},[178,559,389],{"class":388},[178,561,562],{"class":392}," 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fmetrics\u002Fjvm.memory.used'\n",[17,564,565],{},"대표적인 지표는 다음과 같다.",[46,567,568,577],{},[49,569,570],{},[52,571,572,575],{},[55,573,574],{},"지표",[55,576,438],{},[65,578,579,589,599,609,619,629],{},[52,580,581,586],{},[70,582,583],{},[32,584,585],{},"jvm.memory.used",[70,587,588],{},"JVM이 사용 중인 메모리",[52,590,591,596],{},[70,592,593],{},[32,594,595],{},"jvm.gc.pause",[70,597,598],{},"Garbage Collection 정지 시간",[52,600,601,606],{},[70,602,603],{},[32,604,605],{},"jvm.threads.live",[70,607,608],{},"현재 활성 Thread 수",[52,610,611,616],{},[70,612,613],{},[32,614,615],{},"process.cpu.usage",[70,617,618],{},"애플리케이션 프로세스 CPU 사용률",[52,620,621,626],{},[70,622,623],{},[32,624,625],{},"system.cpu.usage",[70,627,628],{},"시스템 전체 CPU 사용률",[52,630,631,636],{},[70,632,633],{},[32,634,635],{},"http.server.requests",[70,637,638],{},"HTTP 요청 수와 처리 시간",[17,640,641],{},"Metrics는 한 번 확인하는 값보다 시간에 따른 변화와 평소 기준을 함께 보는 것이 중요하다.",[38,643],{},[41,645,647],{"id":646},"_6-prometheus-연동","6. Prometheus 연동",[17,649,650],{},"Prometheus Registry 의존성을 추가하고 Endpoint를 노출하면 다음 주소에서 Metrics를 확인할 수 있다.",[24,652,654],{"className":379,"code":653,"language":381,"meta":30,"style":30},"curl 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fprometheus'\n",[32,655,656],{"__ignoreMap":30},[178,657,658,660],{"class":180,"line":181},[178,659,389],{"class":388},[178,661,662],{"class":392}," 'http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fprometheus'\n",[24,664,667],{"className":665,"code":666,"language":29,"meta":30},[27],"# HELP jvm_memory_used_bytes ...\n# TYPE jvm_memory_used_bytes gauge\njvm_memory_used_bytes{area=\"heap\",...} 1.2345678E8\n",[32,668,666],{"__ignoreMap":30},[17,670,671],{},"Prometheus는 이 Endpoint를 주기적으로 Scrape한다.",[24,673,675],{"className":486,"code":674,"language":488,"meta":30,"style":30},"scrape_configs:\n  - job_name: \"spring-app\"\n    metrics_path: \"\u002Factuator\u002Fprometheus\"\n    static_configs:\n      - targets: [\"localhost:8080\"]\n",[32,676,677,684,697,707,714],{"__ignoreMap":30},[178,678,679,682],{"class":180,"line":181},[178,680,681],{"class":495},"scrape_configs",[178,683,499],{"class":408},[178,685,686,689,692,694],{"class":180,"line":187},[178,687,688],{"class":408},"  - ",[178,690,691],{"class":495},"job_name",[178,693,418],{"class":408},[178,695,696],{"class":392},"\"spring-app\"\n",[178,698,699,702,704],{"class":180,"line":193},[178,700,701],{"class":495},"    metrics_path",[178,703,418],{"class":408},[178,705,706],{"class":392},"\"\u002Factuator\u002Fprometheus\"\n",[178,708,709,712],{"class":180,"line":199},[178,710,711],{"class":495},"    static_configs",[178,713,499],{"class":408},[178,715,717,720,723,726,729],{"class":180,"line":716},5,[178,718,719],{"class":408},"      - ",[178,721,722],{"class":495},"targets",[178,724,725],{"class":408},": [",[178,727,728],{"class":392},"\"localhost:8080\"",[178,730,731],{"class":408},"]\n",[24,733,736],{"className":734,"code":735,"language":29,"meta":30},[27],"Spring Boot\n  → \u002Factuator\u002Fprometheus\n  → Prometheus 수집\n  → 시계열 데이터 저장\n  → Grafana Dashboard와 Alert\n",[32,737,735],{"__ignoreMap":30},[38,739],{},[41,741,743],{"id":742},"_7-필요한-엔드포인트만-노출하기","7. 필요한 엔드포인트만 노출하기",[17,745,746,747,749,750,749,753,749,756,759],{},"학습 환경에서 ",[32,748,369],{},", ",[32,751,752],{},"info",[32,754,755],{},"metrics",[32,757,758],{},"prometheus","만 노출하는 예다.",[24,761,763],{"className":486,"code":762,"language":488,"meta":30,"style":30},"management:\n  endpoints:\n    web:\n      exposure:\n        include: health, info, metrics, prometheus\n\n  endpoint:\n    health:\n      show-details: when_authorized\n",[32,764,765,771,778,785,792,802,809,816,823],{"__ignoreMap":30},[178,766,767,769],{"class":180,"line":181},[178,768,496],{"class":495},[178,770,499],{"class":408},[178,772,773,776],{"class":180,"line":187},[178,774,775],{"class":495},"  endpoints",[178,777,499],{"class":408},[178,779,780,783],{"class":180,"line":193},[178,781,782],{"class":495},"    web",[178,784,499],{"class":408},[178,786,787,790],{"class":180,"line":199},[178,788,789],{"class":495},"      exposure",[178,791,499],{"class":408},[178,793,794,797,799],{"class":180,"line":716},[178,795,796],{"class":495},"        include",[178,798,418],{"class":408},[178,800,801],{"class":392},"health, info, metrics, prometheus\n",[178,803,805],{"class":180,"line":804},6,[178,806,808],{"emptyLinePlaceholder":807},true,"\n",[178,810,812,814],{"class":180,"line":811},7,[178,813,504],{"class":495},[178,815,499],{"class":408},[178,817,819,821],{"class":180,"line":818},8,[178,820,511],{"class":495},[178,822,499],{"class":408},[178,824,826,828,830],{"class":180,"line":825},9,[178,827,518],{"class":495},[178,829,418],{"class":408},[178,831,523],{"class":392},[17,833,834],{},"다음 설정은 모든 Endpoint를 노출한다.",[24,836,838],{"className":486,"code":837,"language":488,"meta":30,"style":30},"management:\n  endpoints:\n    web:\n      exposure:\n        include: \"*\"\n",[32,839,840,846,852,858,864],{"__ignoreMap":30},[178,841,842,844],{"class":180,"line":181},[178,843,496],{"class":495},[178,845,499],{"class":408},[178,847,848,850],{"class":180,"line":187},[178,849,775],{"class":495},[178,851,499],{"class":408},[178,853,854,856],{"class":180,"line":193},[178,855,782],{"class":495},[178,857,499],{"class":408},[178,859,860,862],{"class":180,"line":199},[178,861,789],{"class":495},[178,863,499],{"class":408},[178,865,866,868,870],{"class":180,"line":716},[178,867,796],{"class":495},[178,869,418],{"class":408},[178,871,872],{"class":392},"\"*\"\n",[17,874,875],{},"학습용 로컬 환경에서는 편할 수 있지만 운영 환경에서는 권장하지 않는다.",[17,877,878,749,881,749,884,749,887,890],{},[32,879,880],{},"env",[32,882,883],{},"beans",[32,885,886],{},"mappings",[32,888,889],{},"loggers"," 등은 내부 구조와 설정 정보를 보여주거나 동작을 변경할 수 있다. 필요한 Endpoint만 선택하고 인증, 방화벽, 내부 네트워크 등의 보호 수단을 적용한다.",[38,892],{},[41,894,896],{"id":895},"_8-관리-포트-분리","8. 관리 포트 분리",[17,898,899],{},"Actuator를 애플리케이션과 다른 포트에서 실행할 수도 있다.",[24,901,903],{"className":486,"code":902,"language":488,"meta":30,"style":30},"management:\n  server:\n    port: 8081\n",[32,904,905,911,918],{"__ignoreMap":30},[178,906,907,909],{"class":180,"line":181},[178,908,496],{"class":495},[178,910,499],{"class":408},[178,912,913,916],{"class":180,"line":187},[178,914,915],{"class":495},"  server",[178,917,499],{"class":408},[178,919,920,923,925],{"class":180,"line":193},[178,921,922],{"class":495},"    port",[178,924,418],{"class":408},[178,926,927],{"class":414},"8081\n",[24,929,932],{"className":930,"code":931,"language":29,"meta":30},[27],"사용자 API\n→ 8080\n\nActuator 관리 Endpoint\n→ 8081\n",[32,933,931],{"__ignoreMap":30},[17,935,936],{},"포트를 분리했다고 자동으로 안전해지는 것은 아니다. 외부 Network에서 관리 포트에 접근할 수 없도록 구성해야 한다.",[17,938,939],{},"로컬 주소에서만 수신하려면 관리 포트를 분리한 뒤 다음과 같은 설정을 고려할 수 있다.",[24,941,943],{"className":486,"code":942,"language":488,"meta":30,"style":30},"management:\n  server:\n    port: 8081\n    address: 127.0.0.1\n",[32,944,945,951,957,965],{"__ignoreMap":30},[178,946,947,949],{"class":180,"line":181},[178,948,496],{"class":495},[178,950,499],{"class":408},[178,952,953,955],{"class":180,"line":187},[178,954,915],{"class":495},[178,956,499],{"class":408},[178,958,959,961,963],{"class":180,"line":193},[178,960,922],{"class":495},[178,962,418],{"class":408},[178,964,927],{"class":414},[178,966,967,970,972],{"class":180,"line":199},[178,968,969],{"class":495},"    address",[178,971,418],{"class":408},[178,973,974],{"class":414},"127.0.0.1\n",[38,976],{},[41,978,980],{"id":979},"_9-운영-환경-체크리스트","9. 운영 환경 체크리스트",[46,982,983,993],{},[49,984,985],{},[52,986,987,990],{},[55,988,989],{},"확인 항목",[55,991,992],{},"이유",[65,994,995,1003,1011,1019,1027,1035],{},[52,996,997,1000],{},[70,998,999],{},"필요한 Endpoint만 노출했는가?",[70,1001,1002],{},"불필요한 내부 정보 공개 방지",[52,1004,1005,1008],{},[70,1006,1007],{},"인증 또는 Network 접근 제어가 있는가?",[70,1009,1010],{},"외부 사용자의 관리 기능 접근 차단",[52,1012,1013,1016],{},[70,1014,1015],{},"Health 상세 정보 공개 범위가 적절한가?",[70,1017,1018],{},"DB와 내부 시스템 정보 보호",[52,1020,1021,1024],{},[70,1022,1023],{},"Prometheus Endpoint를 내부에서만 수집하는가?",[70,1025,1026],{},"Metrics 정보 노출 방지",[52,1028,1029,1032],{},[70,1030,1031],{},"비밀번호와 Token이 설정 파일이나 응답에 노출되지 않는가?",[70,1033,1034],{},"Credential 유출 방지",[52,1036,1037,1040],{},[70,1038,1039],{},"Alert 기준을 설정했는가?",[70,1041,1042],{},"장애를 사람이 계속 화면을 보지 않아도 감지",[17,1044,1045],{},"Actuator는 정보를 제공하는 도구다. 장애 대응을 자동화하려면 Prometheus Alertmanager, Grafana Alerting 같은 별도의 알림 체계도 필요하다.",[38,1047],{},[41,1049,1051],{"id":1050},"핵심-정리","핵심 정리",[46,1053,1054,1064],{},[49,1055,1056],{},[52,1057,1058,1061],{},[55,1059,1060],{},"개념",[55,1062,1063],{},"한 줄 정리",[65,1065,1066,1074,1080,1087,1094,1101],{},[52,1067,1068,1071],{},[70,1069,1070],{},"Actuator",[70,1072,1073],{},"애플리케이션의 운영 상태를 제공하는 Spring Boot 기능",[52,1075,1076,1078],{},[70,1077,262],{},[70,1079,99],{},[52,1081,1082,1084],{},[70,1083,274],{},[70,1085,1086],{},"JVM, CPU, 요청 수 등의 측정값",[52,1088,1089,1091],{},[70,1090,118],{},[70,1092,1093],{},"Metrics 수집과 Registry 연결을 위한 계측 Facade",[52,1095,1096,1098],{},[70,1097,129],{},[70,1099,1100],{},"Metrics Endpoint를 주기적으로 Scrape하고 저장",[52,1102,1103,1106],{},[70,1104,1105],{},"Endpoint 노출",[70,1107,1108],{},"존재하는 Endpoint 중 HTTP로 공개할 범위를 설정",[14,1110,1111],{},[17,1112,1113],{},"Actuator의 핵심은 모든 Endpoint를 여는 것이 아니라, 운영에 필요한 정보를 안전하게 노출하고 지속적으로 관찰하는 것이다.",[41,1115,1117],{"id":1116},"참고-자료","참고 자료",[1119,1120,1121,1131,1138],"ul",{},[1122,1123,1124],"li",{},[1125,1126,1130],"a",{"href":1127,"rel":1128},"https:\u002F\u002Fdocs.spring.io\u002Fspring-boot\u002Freference\u002Factuator\u002Fendpoints.html",[1129],"nofollow","Spring Boot Actuator Endpoint 공식 문서",[1122,1132,1133],{},[1125,1134,1137],{"href":1135,"rel":1136},"https:\u002F\u002Fdocs.spring.io\u002Fspring-boot\u002Freference\u002Factuator\u002Fmetrics.html",[1129],"Spring Boot Actuator Metrics 공식 문서",[1122,1139,1140],{},[1125,1141,1144],{"href":1142,"rel":1143},"https:\u002F\u002Fdocs.spring.io\u002Fspring-boot\u002Freference\u002Factuator\u002Fmonitoring.html",[1129],"Spring Boot HTTP Monitoring 공식 문서",[1146,1147,1148],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":30,"searchDepth":187,"depth":187,"links":1150},[1151],{"id":12,"depth":187,"text":5,"children":1152},[1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163],{"id":43,"depth":193,"text":44},{"id":165,"depth":193,"text":166},{"id":239,"depth":193,"text":240},{"id":375,"depth":193,"text":376},{"id":531,"depth":193,"text":532},{"id":646,"depth":193,"text":647},{"id":742,"depth":193,"text":743},{"id":895,"depth":193,"text":896},{"id":979,"depth":193,"text":980},{"id":1050,"depth":193,"text":1051},{"id":1116,"depth":193,"text":1117},[1165,1166],"java","spring","2026-08-23 09:00:00 +0900","Spring Boot Actuator의 Health, Metrics, Prometheus 엔드포인트와 노출 설정, 운영 환경 보안 주의사항을 정리한다.","md",null,"\u002Fjava\u002Fspring\u002F2026\u002F08\u002F23\u002Fspring-boot-actuator\u002F",{"layout":1173},"post","11","\u002Fposts\u002Fbackend\u002Fspring\u002Fspring\u002F2026-08-23-spring-boot-actuator",{"title":5,"description":1168},"Spring 기초","posts\u002FBackend\u002FSPRING\u002FSpring\u002F2026-08-23-spring-boot-actuator",[1180,1181,1070,1182,274,118,129],"Java","Spring Boot","Monitoring","9Vv2YsiTrzdrU4Hxln3OaZGGxL6nFMZS70je4BrjMvg",1788744786527]