묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결로그관리와 모니터링 - ELK, 프로메테우스, 그라파나
7~8강 Log Level 관련 상세 설명/명세가 필요할 경우 log.info/warn <-> 주석의 적절한 사용 방법에 대한 질문
안녕하세요, 선생님! log.info/log.warn 과 주석의 사용에 대해 선생님의 실무적 견해, 고견을 여쭤보고자 질문 드리게 되었습니다. 질문 내용은 아래와 같습니다.만약 오픈소스나 실무에서 상세한 명세나 설명을 해야 한다면 log info, warn 및 주석 중에 어떤 것을 먼저 생각하는 것이 좋을지프레임워크의 예시처럼 일단 모두 주석으로 작성하고, 특징적인 부분(?)만 log로 보여주는 것이 좋을지 7강과 8강 log level 관련한 내용을 들었는데, 제가 이해한 내용이 맞으면 선생님께서log info의 경우 운영환경에서 기본적으로 사용하는 로그, 주요 흐름을 기억하기 위해 사용log warn의 경우 현재는 문제가 안되지만 트래픽 규모가 늘어나는 등 이후에 응답시간 지연 및 오류 발생 등의 중대한 상황을 유발할 수 있을때 활용 가능즉각적인 조치는 아니지만 이후 요구사항이 추가적으로 나타날 수 있기에 확장 가능성/보완이 필요할 경우 활용 가능 으로 이해하였습니다. 이 부분을 듣고 Spring Batch나 Tomcat 등의 프레임워크(라이브러리에 등록된 로직)에서 제공하는 주석이 생각났습니다. 이러한 프레임워크에서는 상세 설명/명세에 대한 부분은 모두 log.info/warn보다는 주석으로 처리하였던 부분을 떠올렸는데, Spring Batch의 경우는 거의 대부분이 주석으로 상세 설명을 하였고,물론 webMVC에서 tomcat이나 catalina를 실행하는 과정을 info로 보여주기는 했는데 핵심부분은 주석으로 모두 기재하여 보여주는 느낌이었습니다. 저의 부족한 식견일 수 있고, 말씀하신대로 팀의 정책이나 협의 과정에 의한 부분일 수 있겠지만, 추후 작은 규모의 오픈 소스 프로젝트 등을 시작할 생각도 있고, 이 강의를 기회로 실무에서 제대로 로그를 사용해보고자 하기에 선생님의 생각이 궁금하여 여쭤보고자 하였습니다. 패키지, 클래스의 상세한 설명은 주석으로 보여주고, 파라미터 등의 특징적인 부분(구체적으로 무엇을 log로 처리하는 것이 좋을지 몰라서 "특징적인 부분"으로 기재)만 보여지도록 log로 처리하면 될지 선생님의 고견을 참고해보고자 합니다! 감사합니다.
-
해결됨Springboot 모니터링 시스템 구축 (프로메테우스 + 그라파나)
actuator에서 health 외의 다른 URL은 404 Notfound 에러가 발생합니다.
Spring boot java를 사용하고있고, 현재 1. Spring Actuator 셋팅중입니다.actuator에서 health 외의 다른 URL은 404 Notfound 에러가 발생합니다.application.yml을 사용하여 include에서도 "*"로 전체허용 해놨는데도 안되네요
-
해결됨로그관리와 모니터링 - ELK, 프로메테우스, 그라파나
마이크로미터는 별도 설정이 없어도 되나요?
안녕하세요.아직 실습은 못해보고 영상만 보는 중입니다.마이크로미터가 중간에서 역할을 하는데, 별도 설정없이 의존성만 추가해주면 잘 동작하는 구조인지 궁금합니다.
-
미해결스프링 부트 - 핵심 원리와 활용
보안이 엄격한 데이터
보안이 엄격한 데이터(ex) db url, password, aws access/secret key, 관리자 id, password 등) 모두 properties/yaml 파일에서 관리해도 지장은 없을까요? 물론 gitignore에 해당 파일을 명시한다는 전제입니다.
-
미해결스프링 부트 - 핵심 원리와 활용
MyProperties 자체를 클라이언트 코드에서 사용
[질문 내용]여기에 질문 내용을 남겨주세요.행위가 없고, 아예 수정 불가한 읽기 전용 객체 타입인 경우, 별도의 MyDataSource 클래스를 Config 클래스에서 별도로 만들고 그것을 빈으로 등록하는 것보다 아예 MyDataSourceProperties 자체를 클라이언트 코드에서 사용하는 것이 좋을 것 같은데, 혹시 별로일까요?
-
미해결스프링 부트 - 핵심 원리와 활용
http://localhost:8080/actuator/prometheus
http://localhost:8080/actuator 경로로 메트릭을 확인했을때 프로메테우스가 보이지가 않습니다. build.gradle에 코드 추가한 후 다시 빌드 했고 인텔리제이 외부라이브러리 안에 프로메테우스가 있는 것도 확인을 했습니다. 엑츄에이터 메트릭 노출도 모두 노출하도록 application.yaml에 코드도 잘 작성되어 있습니다. 무엇을 더 확인해야 할 지 모르겠습니다;;질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결Grafana 설치하고 대시보드 만들기
postgres 수업중 case 함수 스크립트 자료
postgres 수업중 case 함수 스크립트 자료 받을수 있을까요? 부탁드립니다.
-
미해결스프링 부트 - 핵심 원리와 활용
jar 추가에대한 질문드려도될까요?
안녕하세요공부를 하다보니 궁금해서 질문드립니다.일반 톰캣인 embed 의존성 추가 여부가 궁금해서 그러는데요기존의 스프링? 에서 톰캣으로 war나 jar형식으로 배포 하다가embed 의존성을 추가해서 배포로 변경하면차이가있을지 궁금합니다.이전에 다른분들께 설명을 해주셨는지 모르겠지만.강의를 듣다톰캣에서 돌아가는 코드를 내장 톰켓을 추가할경우마이그레이션을 많이 해야하는지단순히 embed 라이브러리 추가만하면 되는지궁금해서 질문드리게 되었습니다.또 Fat jar로 배포할경우 class로 변경이 된다고하셨는데 만약에 코드를 수정해야할경우서버에서실시간 그렇게되면 java파일로 변경해서수정은 불가능할까요?기존의 코드를 수정하지않는 선에서 class에서 변경된 jar파일 내에서만 수정이 가능하는지 궁금합니다.1번 jar가 8081일경우 2번 jar가 8082인경우같은 프로젝트가 아니라 별도의 프로젝트 일경우..라면 통신은 어떻게하는지 궁금합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint4 (#Promethues #Grafana #Loki #OpenTelemetry)
profile을 "dev"로 실행했을 때 pod 오류
안녕하세요."Grafana dashboard 만들기"와 "open telemetry 구조와 log 포맷" 강의에서 실행하는 app tester를 실행하면 아래와 같이 프로세스가 종료되어 버리네요.kubectl logs -n anotherclass-435 core-4351-574f49d5d9-697cn --previous . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.1.0) 2026-01-25 02:49:14.322 [main] INFO com.pro.app.AppApplication - trace_id= user_id= Starting AppApplication v4.0.0-SNAPSHOT using Java 17.0.2 with PID 1 (/usr/src/myapp/app.jar started by root in /usr/src/myapp) 2026-01-25 02:49:14.421 [main] INFO com.pro.app.AppApplication - trace_id= user_id= The following 1 profile is active: "dev"profile이 dev 일 때만 발생하는 것 같은데, 어느 부분을 확인해보면 될까요?
-
미해결스프링 부트 - 핵심 원리와 활용
build.gradle bom link 변경
[질문 내용]기존 링크 https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring-boot-dependencies/build.gradle변경된 링크https://github.com/spring-projects/spring-boot/blob/main/platform/spring-boot-dependencies/build.gradle다음 링크로 변경이 필요할 거 같습니다.
-
미해결Springboot 모니터링 시스템 구축 (프로메테우스 + 그라파나)
[프로메테우스] Error scraping target: server returned HTTP status 404
https://github.com/laboratory-kkoon9/prometheus-grafana-lab 프로메테우스 화면에서 다음과 같은 에러가 발생하고 있습니다.원인 같이 확인해주실 수 있나요?
-
미해결스프링 부트 - 핵심 원리와 활용
@Counted 초기화
안녕하세요 강사님이 하시는것처럼 @Counted를 사용해서 메트릭을 수집하는데스프링 애플리케이션을 다시 실행하면 과거에 획득한 메트릭을 0으로 초기화되어서 처음부터 시작되더라고요.그런데 이러면 나중에 비즈니스 메트릭을 똑바로 수집하지 못하지 않나요?애플리케이션을 다시 시작해도 메트릭을 0부터가 초기화하는게 아니라 계속 누적되면서 하는 방법도 있나요?
-
미해결Grafana 설치하고 대시보드 만들기
posgresSQL 설치시 에러 내용
안녕하세요. grafana 수강자 입니다. posgresSQL 설치시 에러 내용 입니다. .' Error response from daemon: ports are not available: exposing port TCP 0.0.0.0:5432 -> 127.0.0.1:0: listen tcp 0.0.0.0:5432: bind: address already in use ''port 번호를 변경하면 실행이 안돼는것 같습니다. 어떻게 해야 할까요?
-
해결됨스프링 부트 - 핵심 원리와 활용
@Validated를 적용해도 빈 검증이 안되는 경우에 대한 조치 공유..
[요약]Spring Boot 3.4 이상을 사용하실 경우 MyDataSourcePropertiesV3의 필드 중 Etc 타입 필드에 @Valid를 적용해야 Etc 클래스 내부에 적용한 유효성 검증 어노테이션이 정상적으로 동작됩니다...package hello.datasource; import ... @Getter @ConfigurationProperties("my.datasource") @Validated public class MyDataSourcePropertiesV3 { @NotEmpty private String url; @NotEmpty private String username; @NotEmpty private String password; @Valid // 적용 필요 private Etc etc; public MyDataSourcePropertiesV3(String url, String username, String password, Etc etc) { this.url = url; this.username = username; this.password = password; this.etc = etc; } @Getter public static class Etc { @Min(1) @Max(999) final private int maxConnection; @DurationMin(seconds = 1) @DurationMax(seconds = 60) private Duration timeout; private List<String> options; // 생성자 주입 public Etc(int maxConnection, Duration timeout, List<String> options) { this.maxConnection = maxConnection; this.timeout = timeout; this.options = options; } } } =======================================================================================스프링 부트 3.4 이전 버전에서는 @ConfigurationProperties가 적용된 클래스에 @Validated만 적용해도 해당 클래스의 필드와 중첩 필드(필드의 타입으로 정의된 클래스 안의 필드)에 대해서도 자동으로 유효성 검증 어노테이션이 동작했다고 합니다.즉, @ConfigurationProperties가 적용된 MyDataSourcePropertiesV3 클래스에 @Validated를 적용하면 해당 클래스의 필드인 url, username, password, etc 뿐만 아니라 etc 안의 필드인 maxConnection, timeout, options의 유효성 검증 어노테이션이 모두 동작했다고 합니다. 그러나 스프링 부트 3.4 이후 버전에서는 @ConfigurationProperties가 적용된 클래스에 @Validated만 적용할 경우 해당 클래스의 필드에 적용된 유효성 검증 어노테이션만 동작하며 중첩 필드에 대하여 유효성 검증 어노테이션이 동작하도록 하기 위해서는 중첩 필드에 @Valid를 명시적으로 적용해야한다고 합니다. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.4-Release-Notes#bean-validation-of-configuration-properties
-
미해결스프링 부트 - 핵심 원리와 활용
springboot에서 actuator없이 micrometer를 사용할수 있나요?
springboot에서 actuator 강의 다음에 마이크로미터 강의가 나왔는데 actuator 없이 micrometer를 사용할수 있나요?
-
미해결스프링 부트 - 핵심 원리와 활용
@Configuration 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]publicclass ImportSelectorTest { @Test void staticConfig() { AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(StaticConfig.class); HelloBean bean = appContext.getBean(HelloBean.class); assertThat(bean).isNotNull(); } @Test void selectConfig() { AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(SelectorConfig.class); HelloBean bean = appContext.getBean(HelloBean.class); assertThat(bean).isNotNull(); } @Configuration @Import(HelloConfig.class) publicstaticclass StaticConfig {} @Configuration @Import(HelloImportSelector.class) publicstaticclass SelectorConfig {}}안녕하세요. StaticConfig, SelectorConfig 클래스에 @Configuration 애노테이션은 어떤 모질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용]public class ImportSelectorTest { @Test void staticConfig() { AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(StaticConfig.class); HelloBean bean = appContext.getBean(HelloBean.class); assertThat(bean).isNotNull(); } @Test void selectConfig() { AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext(SelectorConfig.class); HelloBean bean = appContext.getBean(HelloBean.class); assertThat(bean).isNotNull(); } @Configuration @Import(HelloConfig.class) public static class StaticConfig {} @Configuration @Import(HelloImportSelector.class) public static class SelectorConfig {}} 안녕하세요. StaticConfig, SelectorConfig 클래스에 @Configuration 애노테이션은 어떤 역할을 하나요? @Configuration 애노테이션을 주석 후 테스트를 해봤을 때 정상 동작하는 것까진 확인하였습니다.
-
해결됨Springboot 모니터링 시스템 구축 (프로메테우스 + 그라파나)
Discord 임계값 알림 시스템 구축 노션
Discord 임계값 알림 시스템 구축 부분 노션에 작성된 것이 없는 것같아 질문드립니다
-
미해결실습으로 배우는 프로메테우스 (Prometheus Stack)
thanos 관련 강의는 고려 중이신지 궁금합니다.
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://inf.run/DvsRD)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기]프로메테우스 강의 중 thanos 관련된 강의를 해주신다고 언급을 하셨는데, 혹시 별도의 강의나 보강으로 해주실 계획이 있으신지 궁금합니다.
-
해결됨실습으로 배우는 프로메테우스 (Prometheus Stack)
k get ipaddresspools.metallb.io -A No resources found
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://inf.run/DvsRD)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기안녕하세요. k get ipaddresspools.metallb.io -A 입력 시No resources found 가 뜹니다.Metallb CRD는 정상 설치된 듯 한데 따로 파일 생성이 안 된 듯 합니다. ipaddresspool.yaml , l2advertisement.yaml 을 따로 생성해야 하는 건가요? 생성한다면 생성 경로 안내도 부탁드립니다.도움 부탁드립니다.아래는 메탈LB 컨트롤러 로그 요약한 것 입니다.vagrant@cp-k8s:~$ kubectl logs -n metallb-system deploy/controller --tail=200{"branch":"dev","caller":"main.go:167","commit":"dev","goversion":"gc / go1.21.8 / amd64","level":"info","msg":"MetalLB controller starting version 0.14.4 (commit dev, branch dev)","ts":"2025-08-14T01:29:47Z"}{"action":"setting up cert rotation","caller":"webhook.go:31","level":"info","op":"startup","ts":"2025-08-14T01:29:47Z"}{"caller":"k8s.go:394","level":"info","msg":"secret successfully created","op":"CreateMlSecret","ts":"2025-08-14T01:29:47Z"}{"caller":"k8s.go:417","level":"info","msg":"Starting Manager","op":"Run","ts":"2025-08-14T01:29:47Z"}{"level":"info","ts":"2025-08-14T01:29:47Z","msg":"Starting Controller","controller":"cert-rotator"}{"level":"info","ts":"2025-08-14T01:29:47Z","logger":"cert-rotation","msg":"starting cert rotator controller"}{"level":"info","ts":"2025-08-14T01:29:47Z","msg":"Starting Controller","controller":"ipaddresspool","controllerGroup":"metallb.io"}{"level":"info","ts":"2025-08-14T01:29:47Z","msg":"Starting Controller","controller":"service"}{"level":"info","ts":"2025-08-14T01:29:47Z","logger":"cert-rotation","msg":"refreshing CA and server certs"}{"level":"info","ts":"2025-08-14T01:29:47Z","msg":"Starting workers","controller":"service","worker count":1}{"level":"info","ts":"2025-08-14T01:29:47Z","msg":"Starting workers","controller":"cert-rotator","worker count":1}{"level":"info","ts":"2025-08-14T01:29:47Z","msg":"Starting workers","controller":"ipaddresspool","controllerGroup":"metallb.io","controllerKind":"IPAddressPool","worker count":1}{"caller":"pool_controller.go:48","controller":"PoolReconciler","level":"info","start reconcile":"/kube-public"}{"caller":"pool_controller.go:99","controller":"PoolReconciler","event":"force service reload","level":"info"}{"caller":"service_controller_reload.go:108","controller":"ServiceReconciler - reprocessAll","event":"failed to handle service, no retry","level":"error","name":"ingress-nginx/ingress-nginx-controller"}{"level":"error","ts":"2025-08-14T01:29:48Z","logger":"cert-rotation","msg":"could not refresh CA and server certs","error":"Operation cannot be fulfilled on secrets \"metallb-webhook-cert\""}{"level":"error","ts":"2025-08-14T01:29:48Z","logger":"cert-rotation","msg":"secret is not well-formed, cannot update webhook configurations","error":"Cert secret is not well-formed, missing ca.crt"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"cert-rotation","msg":"certs are ready in /tmp/k8s-webhook-server/serving-certs"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"cert-rotation","msg":"CA certs are injected to webhooks"}{"action":"webhooks enabled","caller":"webhook.go:53","level":"info","op":"startup"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/validate-metallb-io-v1beta1-ipaddresspool"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/validate-metallb-io-v1beta2-bgppeer"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/validate-metallb-io-v1beta1-bgpadvertisement"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"controller-runtime.webhook","msg":"Starting webhook server"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"controller-runtime.certwatcher","msg":"Updated current TLS certificate"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"controller-runtime.certwatcher","msg":"Starting certificate watcher"}{"level":"info","ts":"2025-08-14T01:29:49Z","logger":"controller-runtime.webhook","msg":"Serving webhook server","port":9443}
-
미해결실습으로 배우는 프로메테우스 (Prometheus Stack)
설치 과정 문의
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://inf.run/DvsRD)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기] 안녕하세요 설치 과정 문의드립니다.기존에 윈도우 컴퓨터에서 버츄얼박스로 쿠버네티스를 설치하여 마스터노드1개 워커노드3대로 다른 작업을 하고 있는 상태입니다. Cilium 설치가 되어있는 환경입니다.강사님이 올려주신 코드를 깃클론한 후에 어느 시점부터 진행하면 되는지 헷갈려서 문의드립니다. 파워셸에서 다른 과정은 생략하고 vagrant up만 진행했는데 vm은 뜨지만 kubectl이 먹지 않습니다ㅠkubeam 설치도 했는데 안 되네요. 도움 부탁드립니다~