묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 부트 - 핵심 원리와 활용
explodedWar 문의
server 프로젝트 위치에서 gradlew explodedWar 을 실행해 압축이 풀어진 WAR 파일 경로를 톰캣 Deployment directory 경로에 기재해두었습니다. 이후 강의를 보니 강사님께서는 프로젝트를 수정하고 나서 톰캣을 재실행하니 소스가 수정된 내역이 서버에 바로 반영이 되더라구요. 근데 저는 server 프로젝트 경로로 가서 build 폴더의 exploded 파일을 삭제하고 다시 gradlew explodedWar 명령어를 실행해야 수정된 소스가 톰캣에서 실행되던데 뭐가 잘못된걸까요..?
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
external-ip가 pending 상태
k get pod,service 명령어를 실행시 프로메테우스 웹에 접속하기 위한 external-ip가 계속 pending으로 설정 되어있습니다. MetaLB를 따로 설치해야할까요? root@cp-k8s:~/_Lecture_prom_learning.kit/ch2# kubectl get pods -n metallb-system NAME READY STATUS RESTARTS AGEcontroller-57cf8fbb89-w8l9c 1/1 Running 1 (90m ago) 137mspeaker-bhzf2 1/1 Running 0 137mspeaker-hkg7l 1/1 Running 0 83mspeaker-r4x8g 1/1 Running 0 91mspeaker-wwmsr 1/1 Running 0 88m root@cp-k8s:~/_Lecture_prom_learning.kit/ch2# kubectl get ipaddresspool -A No resources found
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
kubectl 명령어 실행시
root@cp-k8s:~# kubectl get nodes E0915 18:03:59.239484 2428 memcache.go:265] couldn't get current server API group list: Get "https://192.168.1.10:6443/api?timeout=32s": dial tcp 192.168.1.10:6443: i/o timeout 이미지와 같은 명령어 수행시 아래와 같은 에러가 발생합니다. 어떻게 해결하면 좋을까요?
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
ssh 연결 타임아웃
OVA로 버추얼박스에 VM들을 올리고 Tabby를 실행하여 접속을 하려해도 ssh timeout 에러가 발생해서 계속 접속이 안되는 상태입니다. 어떻게 해결할 수 있을까요?
-
미해결스프링 부트 - 핵심 원리와 활용
rate vs irate
rate는 초당 평균 증가율 (평균 변화율)irate 는 초당 순간 증가율을 나타낸다고 하네요 (미분계수)12시 ~ 12시 5분 사이에 얼마나 많은 변화가 있었는지 보고싶으면 rate딱 정확히 12시 3분이 된 시점에서 변화율을 보고싶으면 irate를 사용하면 되겠습니다.
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
[4.5] - 익스포터의 종류 내용
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기][4.5] - 익스포터의 종류의 데이터베이스 항목에서 MongoDB,MySQL,PostgreSQL,Redis가 있는데, k8s의 Pod형태가 아닌 Dedi 서버로 구축된 경우도 익스포터를 통해 모니터링이 가능할까요?
-
미해결DevOps를 위한 Docker 가상화 기술 (Private Harbor Registry)
Prometheus 및 컨테이너 상태 메트릭 수집
Prometheus 설명 부분에서요,컨테이너 상태에 대한 Metrics 수집 부분에 대해서 질문있습니다.실무에서 컨테이너 환경에서 애플리케이션을 개발한적은 없고, Prometheus, Grafana, Loki, Promtail 정도만 컨테이너 기반에서 로그 수집하는 정도로만 활용해봤는데요,스프링 부트 환경에 액츄에이터, 마이크로미터 라이브러리 구성해서 N개의 서버(운영, 개발, 스테이징 서버 등)에서 프로파일에 따른 로그를 수집하고, Promtail도 각 서버에 설치하고, 별도의 모니터링 서버에 컨테이너 기반으로 Prometheus, Grafana, Loki 셋팅해서 사용하고 있습니다.(이렇게 구성한 아키텍쳐?가 베스트 프랙티스인지는 잘모르겠네요)그런데 해당 강의를 듣고 생각한게 컨테이너 기반의 애플리케이션을 올릴 경우 추가적으로 컨테이너 상태에 대한 메트릭 수집이 있을 것 같은데요, 컨테이너 실행/중지 같은 상태 제외하면 어떤 유의미한 데이터를 수집할 수 있는지 감이 안오는데, 어떤것들이 있을까요? CPU나 메모리 같은 리소스 정도가 있을꺼 같고..추가적으로 컨테이너 환경의 애플리케이션을 구성한다면 MSA 환경이 아니더라도 로그 정보를 별도의 로그 서버에서 관리하는게 일반적인가요? 이 강의를 듣기전에는 애플리케이션 서버가 당연히 로그도 수집하는거로 생각해서 Promtail도 각 로그파일이 있는 서버에 다 설치했거든요. 이전 섹션에서 로그를 별도 컨테이너에서 관리하는거 보고 궁금증이 생겼습니다.
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
launchctl-load-vmware-utility 에러
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예]3. 질문 잘하기 법을 읽어보셨나요? [예](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기] 안녕하세요. M1 환경에서 Vmware-fusion 설치를 따라가고 있습니다.launchctl-load-vmware-utility 명령어를 실행하려고 하면 Load failed: 5: Input/output errorTry running launchctl bootstrap as root for richer errors.에러가 발생합니다. 어떻게 해야하나요?
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
operator alertmanager 연결 관련 문의
안녕하세요. 배운 내용을 가지고 회사에서 prometheus를 잘 활용하고 있습니다. 다만 막힌 부분이 있어 문의를 드립니다.Prometheus operator로 prometheus 와 alertmanager가 잘 연계되어있는지 확인하는 방법을 문의드립니다.코드 첨부가 어렵지만, 간단하게 말씀드리면,prometheus operator를 통해 prometheus A 와 alertmanager X를 띄우고 연결이 잘되어 있는 상황 (alertmanager X ui에서 a의 prometheusrules로 정의한 값의 firing 된 것을 확인 가능함 -> ui)prometheus operator를 통해 prometheus B를 띄우고 이 B도 alertmanager X를 이용하려고 했으나, B의 prometheusurule로 정의한 값이 firing 되어도 alertmanager X UI에 값이 나오지 않음. 이런 상황입니다. 기존 A가 연결된 alertmanager X에, 추가로 Prometheus B를 연결하고 싶습니다.이 부분에 대해서 제가 확인한 것은, prometheus B를 띄우고 edit으로 prometheus 값 수정 (config reload가 설정되어있음)alerting: alertmanagers: - apiVersion: v2 name: ~ // alertmanager 이름 입력 (service 명), 기존 잘 연결된 A와 동일한 값 namespace: ~~ // alertmanager X 의 namespace 입력, 기존 잘 연결된 A와 동일한 값 pathPrefix: / port: http-web2. 현재 같은 클러스터, namespace에 존재PrometheusRule 로 생성한 Rule이 Prometheus B의 UI Rule 메뉴에서 정상적으로 firing 된 것을 확인prometheus B의 pod에 log를 확인. -> 해당 로그에 alert이라는 값이 존재하지 않음기존에 연결되어 있던 prometheus A의 config 설정의 alerting 부분과 설정은 동일함. 위 와 같은 상황이며, alertmanager X UI에 B에서 firing 된 값이 나오지가 않습니다.혹시 제가 놓친 부분이 있는지, 아니면 잘 연결이 되어 있는지 추가적으로 더 검사할 방법이 있을까요?
-
미해결스프링 부트 - 핵심 원리와 활용
exploded 배포시 경로
인텔리제이에서 exploded로 war를 배포하면톰캣의 webapps에 배포가 되는게 아니라 , 프로젝트의 target 이라는 폴더를 톰캣이 바라보는거 같은데톰캣 설정파일 어디에 target이 명시되는걸까요?ㅠㅠ
-
해결됨실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
[A.001] prometheus-force-installer.sh 내용중 설치경로 변경요청건
안녕하세요 강사님정말 별건 아니지만....소스에 적힌 설치경로가 2.2 -> 2.11로 변경되어야 할 것 같아서 연락드렸습니다.echo "Start to deploy native prometheus with scraping 15s interval" echo "============================================================" sh ~/_Lecture_prom_learning.kit/ch2/2.11/prometheus-installer-15s.sh보강 수업도 열심히 따라가고 있습니다.두 강사님 모두 늘 감사드립니다.
-
해결됨실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
[7.1][7.2] OS 교체에 따른 yum -> apt-get 변경 요청 건
안녕하세요, 강사님큰 이슈는 아닙니다만.. 7강이 아무래도 CentOS에서 녹화하셨고, 소스도 그때 만드셔서 그런지redis, mysql 을 다운받는 sh 파일을 실행시키면 yum이 없다고 다운이 안되더라고요.물론 apt-get으로 소스 내용을 바꿔서 설치하고 실습을 이어가고 있습니다만아마 뒤에 강의들도 비슷한 상황일 듯 해서 조심스럽게 추후 소스 변경에 대한 건의를 드려봅니다.항상 세심하게 챙겨주셔서 감사드립니다.
-
미해결스프링 부트 - 핵심 원리와 활용
강의를 따라했는데 매핑 정보가 등록되지 않은 것 같습니다.
public interface AppInit { void onStartup(ServletContext servletContext); } /** * 서블릿 컨테이너 모방 * 프로그래밍 방식을 서블릿 컨테이너에 등록 */ public class AppInitV1Servlet implements AppInit { @Override public void onStartup(ServletContext servletContext) { System.out.println("AppInitV1Servlet.onStartup"); // 순수 서블릿 코드 등록 ServletRegistration.Dynamic helloServlet = servletContext.addServlet("helloServlet", new HelloServlet()); helloServlet.addMapping("/hello-servlet"); } }/** * 서블릿 그 자체 * 애플리케이션 초기화 */ public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet.service"); resp.getWriter().println("hello servlet!"); } }hello.container.MyContainerInitV1 hello.container.MyContainerInitV2 이런식으로 강의를 따라 서블릿에 매핑 정보를 등록했는데, http://localhost:8080/hello-servlet을 하게 되면 404 에러가 발생합니다. 어디서 문제가 생긴걸까요?
-
해결됨실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
[6.3] create-certificate.sh, 5.docker-image-pullpush-to-harbor.sh 실행시 에러발생건
안녕하세요, 강사님. 6.3을 실습하는 과정에서 표제에 적은 두 스크립트를 실행 할 때 동일한 이슈가 발생하여 문의드립니다. 일단 create-certificate.sh 실행 시 cp-k8s 노드에 sshpass 가 없어서 정상적으로 스크립트가 진행되지 못했습니다. (사실 이 부분을 제대로 인지하지 못하고 강의 뒷부분까지 진행하였습니다) 그다음 http://5.docker-image-pullpush-to-harbor.sh 실행 할 때는, docker가 없어서 docker login부터 push 과정까지 전부 진행이 안되더라고요.root@cp-k8s:~/_Lecture_prom_learning.kit/ch6/6.3# ./5.docker-image-pullpush-to-harbor.sh ./5.docker-image-pullpush-to-harbor.sh: line 3: docker: command not found ./5.docker-image-pullpush-to-harbor.sh: line 4: docker: command not found ./5.docker-image-pullpush-to-harbor.sh: line 5: docker: command not found ./5.docker-image-pullpush-to-harbor.sh: line 6: docker: command not found그래서 docker를 설치한 다음, 아래 내용들처럼 pull은 된 거 같은데, push는 인증서 이슈로 실패한 거 같습니다. root@cp-k8s:~/_Lecture_prom_learning.kit/ch6/6.3# ./5.docker-image-pullpush-to-harbor.sh WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://192.168.1.63/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority Using default tag: latest latest: Pulling from library/nginx f11c1adaa26e: Pull complete c6b156574604: Pull complete ea5d7144c337: Pull complete 1bbcb9df2c93: Pull complete 537a6cfe3404: Pull complete 767bff2cc03e: Pull complete adc73cb74f25: Pull complete Digest: sha256:67682bda769fae1ccf5183192b8daf37b64cae99c6c3302650f6f8bf5f0f95df Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest Using default tag: latest The push refers to repository [192.168.1.63/library/nginx] Get "https://192.168.1.63/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authorityroot@cp-k8s:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.1.63/library/nginx latest fffffc90d343 3 weeks ago 188MB nginx latest fffffc90d343 3 weeks ago 188MB그 다음엔 강의 앞 부분으로 돌아가서, 인증서 설치 부분을 다시 진행해보았습니다.root@harbor:~/_Lecture_prom_learning.kit/ch6/6.3/2.harbor-certificate# ./create-certificate.sh Certificate request self-signature ok subject=C = KR, ST = Seoul, L = Seoul, O = lecture, OU = prometheus, CN = 192.168.1.63 ./create-certificate.sh: line 26: sshpass: command not found ./create-certificate.sh: line 27: sshpass: command not found ./create-certificate.sh: line 28: sshpass: command not found ./create-certificate.sh: line 29: sshpass: command not found ./create-certificate.sh: line 33: sshpass: command not found ./create-certificate.sh: line 34: sshpass: command not found ./create-certificate.sh: line 35: sshpass: command not found ./create-certificate.sh: line 36: sshpass: command not found ./create-certificate.sh: line 33: sshpass: command not found ./create-certificate.sh: line 34: sshpass: command not found ./create-certificate.sh: line 35: sshpass: command not found ./create-certificate.sh: line 36: sshpass: command not found ./create-certificate.sh: line 33: sshpass: command not found ./create-certificate.sh: line 34: sshpass: command not found ./create-certificate.sh: line 35: sshpass: command not found ./create-certificate.sh: line 36: sshpass: command not found mkdir: cannot create directory ‘/root/_Lecture_prom_learning.kit/ch6/6.3/tls/’: File exists mv: cannot stat 'ca.srl': No such file or directory앞서 말씀드린 대로 docker처럼 sshpass 가 없어서 새로 설치한 다음, 계속 진행해보았는데 ca.srl 파일이 생성이 되지 않더라고요. 그래서 그런 건지 이미지 push가 계속 실패하였습니다. 질문을 좀 정리하자면... 일단 마스터 노드에 sshpass, docker 가 설치가 안 되어 있는 건지, 바쁘시겠지만 확인 한 번 부탁드립니다. 그리고 이미지 push 이슈를 해결하는 방법도 함께 가이드 부탁 드리겠습니다.감사합니다.
-
미해결스프링 부트 - 핵심 원리와 활용
영한님 좀 더 실무적인 메트릭 수집하는 방법과 운영환경이 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]1. 멀티스레드에 안전하게 처리하기 위해 Atomic.. 을 사용하셨는데, 실무에서는 데이터베이스같은곳에서 정보를 받아와야 하는데, 프로메테우스에서 데이터베이스의 테이블을 접근중일때 READ가 발생할텐데, 현재 유저한테 서비스되는 클라이언트단에서 READ, WRITE가 발생할때 lock이 발생하는 경우는 없나요?2. 1번 질문과 이어서.. 아래와 같은 곳에서 정보를 수집하는데 동시성/데드락/경합 문제가 발생하지는 않나요?아래에서 정보를 가져올때는 어떻게 하는게 best practice인지 궁금합니다- State DB(Mysql, postgresql, mongodb)- InMemory DB(Redis)- Kafka Topics3. 현재는 설치형으로 강의를 진행해주셨는데, docker나 k8s 환경에서 수집을 한다면 같은 네트워크에도 묶여야되는 등 신경써야 할 부분이 많은 것 같은데요.. 베어메탈에서 wget 등으로 받아서 띄우는거 말고 컨테이너 환경에서는 어떻게 하는지 또 궁금합니다!
-
해결됨실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
[2.11] prometheus-installer-15s.sh 설치시 repo edu not found 발생 이슈
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예]3. 질문 잘하기 법을 읽어보셨나요? [예](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기]안녕하세요, 강사님현재 윈도우11 home을 사용하고 있으며, 기본스펙은 i5-12세대, 16GB 를 사용하고 있습니다.x86-64 amd64에서 실습을 진행하기 위한 기본세팅은 알려주신 방법대로 정상적으로 설치되었습니다. 그런데 챕터 2.11 에서 prometheus-installer-15.sh 자동설치를 진행하는 과정에서 repo not found 이슈가 발생하였습니다. 영상 하단에 git 주소에 들어가서 repo URL을 등록했는데도, 계속 not found가 뜨네요. 혹시 해결방법을 알 수 있을지 문의드립니다. #repo 추가시 사용한 명령어helm repo add prometheus-community https://prometheus-community.github.io/helm-chartshelm repo update
-
미해결스프링 부트 - 핵심 원리와 활용
MyDataSourcePropertiesV1 스프링 빈으로 등록
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 좋은 강의 잘 듣고 있습니다!!이번 강의를 들으면서 @EnableConfigurationProperties(MyDataSourcePropertiesV1.class)를 통해 MyDataSourcePropertiesV1.class 클래스를 스프링 빈으로 등록해야지 외부 설정을 읽어서 해당 클래스에 바인딩하고 Config에서는 그걸 주입 받아 DataSource에 주입하는 걸로 이해를 했습니다.여기서 저는 단순히 스프링 빈으로 등록하는 거라면@Import를 사용하거나 MyDataSourcePropertiesV1.class에 @Component를 붙여서 컴포넌트 스캔 대상이 되도록 하는 등의 방법으로 해도 잘 동작하는게 아닐까? 라는 생각에2가지 다 사용해서 테스트를 진행했는데 별문제가 없었습니다.분명히 @EnableConfigurationProperties을 만든 이유가 있을듯한데 저의 짧은 지식으로는 잘 모르겠습니다.@ConfigurationPropertiesScan은@ConfigurationProperties가 붙은 클래스를 마치 컴포넌트 스캔과 같이 간편하게 스프링 빈으로 등록할 수 있다는 장점이 보이지만 @EnableConfigurationProperties 이 친구는 정말 모르겠습니다
-
미해결스프링 부트 - 핵심 원리와 활용
인텔리J 무료버전 Smart Tomcat 설정관련
해당 경로에 build폴더가 있는데 Deplyment directory에서 아래 사진과 같이 나오지가 않습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣설정 인텔리J 무료버전 설정
윈도우에서 가이드데로 진행했는데 실행이 실패했습니다.bulid.gradle에는 아래와 같이 똑같이 코딩했습니다.
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
tabby터미널 창이 안뜨는 문제
안녕하세요. 맥북으로 클러스터 설치중인데요.ch2/2.4/.cmd에 명시된 brew로 tabby를 설치했습니다. tabby를 실행하니 가동은 되는걸로 보이나 터미널 창이 뜨지 않습니다. 문제 해결방법이 있을까요?왼쪽 상단에 애플리케이션은 뜨나 창이 안뜹니다... 재설치, 리부트 등을 해봤는데 동일하네요. tabby github에서 tabby-1.0.207-macos-arm64.dmg로도 설치해봐도 동일하네요.