묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결개발자에게 필요한 로그 관리
로그 레벨을 기준으로 알람 설정할 때, Kibana를 사용할 수 는 없나요?
안녕하세요 강사님. 이번에 강의를 복습하면서 한가지 궁금증이 생겨서 질문을 남기게 되었습니다. 섹션 5의 로그 레벨을 기준으로 알람 설정하려면? 강의를 보면 엘라스틱 서치로 직접 http 요청을 보낸 후 받은 응답을 기준으로 알람 설정을 하도록 설명을 해주시는데요 요즘 시각화 툴 (Ex. 그라파나) 들은 Alert 같은 기능들이 있어서, 해당 기능들을 사용하면 간단하게 노코드로도 알람 설정이 가능한 것 같던데 키바나는 해당 기능이 따로 없는 걸까요? 그래서 엘라스틱 서치 기준으로 알람 설정 하는 방법을 알려주신 걸까요? 좋은 강의 잘 봤습니다!!
-
미해결개발자에게 필요한 로그 관리
표준출력보다 Slf4J가 느릴 때
저는 컴터 사양이 꽤나 좋아서 인지? 항상 표준출력이 더 빠르더군요.알아보니 로깅 프레임워크가 느린 이유에는 대략 이런 이유들이 있네요.로그 출력에 여러 과정을 거침. Logger → Appender → Encoder → Layout → OutputStream레벨 설정에 의한 필터링로그 포맷팅 처리분명 표준출력이 synchronized에 의해서 멀티 스레드 환경에서 취약한건 맞으나 현재 테스트에서는 그 부분이 로깅 프레임워크의 처리 과정보다는 빨랐던 것 같습니다.테스트 환경 변경그래서 테스트 환경을 바꿔서 테스트 해보았습니다.멀티스레드 환경. 스레드 10개. 각 스레드별 100000번 출력package kr.co.shortenurlservice.log; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Slf4j public class SoutVsAsyncLoggingTest { private static final int THREAD_COUNT = 10; private static final int LOG_COUNT = 100_000; public static void main(String[] args) throws InterruptedException { // 1. System.out.println() 테스트 long sysoutTime = runTest(i -> System.out.println("[SYSOUT][" + Thread.currentThread().getName() + "] " + i) ); // 2. log.info() (AsyncAppender + Console) 테스트 long asyncLogTime = runTest(i -> log.info("[LOGGER][{}] {}", Thread.currentThread().getName(), i) ); // 결과 출력 Thread.sleep(5000); System.out.printf("System.out: %,d ms%n", sysoutTime); System.out.printf("Async log : %,d ms%n", asyncLogTime); } private static long runTest(StringConsumer task) throws InterruptedException { long start = System.currentTimeMillis(); ExecutorService executor = Executors.newFixedThreadPool(THREAD_COUNT); CountDownLatch latch = new CountDownLatch(THREAD_COUNT); for (int t = 0; t < THREAD_COUNT; t++) { executor.submit(() -> { for (int i = 0; i < LOG_COUNT; i++) { task.accept(i); } latch.countDown(); }); } latch.await(); executor.shutdown(); long end = System.currentTimeMillis(); return end - start; } @FunctionalInterface interface StringConsumer { void accept(int value); } } 또한 test/resources/logback.xml 설정으로 포맷을 날짜 같은것 제외하고 표준출력과 똑같이 맞춰주고 AsyncAppender를 통해 멀티 스레드 환경에서 차별점이 있도록 비동기 Appender를 추가해줌.<configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%msg%n</pattern> </encoder> </appender> <appender name="ASYNC_CONSOLE" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="CONSOLE"/> <queueSize>10240</queueSize> </appender> <root level="info"> <appender-ref ref="ASYNC_CONSOLE"/> </root> </configuration>이렇게 하니까 표준출력보다 빠르더군요.꼭 성능문제뿐 아니라 로그 관리체계 자체가 로깅 프레임워크가 넘사이기 때문에 안쓸 비교불가겠지만..성능적으로 보더라도 실무 환경이라면 메시지 출력 전후로 비즈니스 로직들이 있기 때문에 임계영역을 통해 스레드를 대시시키는 표준출력을 사용하는것보다는 로깅 프레임워크가 더욱 성능적으로 이점이 있을 것 같습니다.
-
미해결개발자에게 필요한 로그 관리
getStackTrace의 속도가 더 느리게 나옵니다
gpt에 질문을 해도 명확한 답이 안나와서 질문드립니다. 현재 2가지 장점으로 getStackTrace를 사용한다고 이해했습니다.printStackTrace를 사용하면 콘솔 출력이므로 로그 관리가 어렵다getStackTrace를 사용하면 속도 측면에서 이점이 있다. 속도가 조금 느리더라도 로그 관리를 위해서 getStackTrace를 사용한다고 말해야할까요? 아니면 다른 이유가 있어서 getStackTrace의 속도가 느린걸까요?
-
해결됨개발자에게 필요한 로그 관리
컴파일 단계에서 발생하는 문법 오류에 대한 에러 정의 질문
안녕하세요! 예외와 로그 강의 보던 중에 궁금한 점이 생겨 질문드립니다. 체크드 예외와 언체크드 예외 설명 과정에서, 컴파일 단계에서 발생하는 것은 예외가 아니라 문법 오류로 인한 에러라고 말씀해주셨습니다. 제가 이해하고 있는 에러 정의는프로그램에서 복구할 수 없는 심각한 문제입니다. 단순 문법 오류를 에러라고 이해해도되는건지 궁금하여 질문 남겨봅니다..! 감사합니다
-
해결됨실리콘밸리 엔지니어와 함께하는 Elasticsearch
index join 에 대한 질문
안녕하세요. 지금 강의 초반을 듣고 있는데요.질문 1. 회사에서 ELK stack 을 application log 모니터링 도구로 도입하려는 것이 아니라 사용자의 어떤 요구사항에 맞는 리포트로서 visualization 을 이용하려고 도입하려 합니다.rough 하게 학습한 내용으로는 elasticSearch 에서는 index 간 join 해서 search 를 못하는 것으로 알고 있는데요.kibana 를 이용하면 multi index 간의 join 이 가능할까요?구체적인 요청사항을 예로 말씀드리면가령 dogs 라는 index 가 있고, men 이라는 index 가 있다고 가정할 때, 어떤 개가 (dog) 어떤 사람 (man) 의 반려견인지, (서로 같은 key value 를 가지고 있다면) 주인이 있는 개 인지 아닌지.. 주인이 없는 개는 전체의 몇 %인지 등을 visualization 하고 싶습니다.
-
미해결빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
crontab 결과가 market.log 에 저장이 안돼요ㅠ
crontab 결과가 market.log 에 저장이 안돼요ㅠcrontab 내용 오타 없는지도 계속 확인했고, 파일 실행도 직접했을 때는 환율 잘 나와요. 로그 파일도 자동 생성이 됐는데cat market.log 하면 아무것도 뜨지 않네요ㅠ 이유가 뭘까요?
-
미해결IT인을 위한 ELK 통합로그시스템 구축과 활용
serarch에 관한 질문 입니다
안녕하세요search관한 질문으로서 질문을 해도 되는지 궁금하며 질문 내용은 아래와 같습니다질문내용조건 => (contents=장애인 or abstract=매매대금) and etype="민사 and (jdate>2023-01-01 and jdate<2025-03-01) 인경우 search구문은 아래와 같습니다"query": { "bool": { "must": [ { "bool": { "should": [ { "match": { "contents": { "query": "장애인" } } }, { "match": { "abstract": { "query": "매매대금", "boost": 2 } } } ] } }, { "term": { "etype": { "value": "행동" } } }, { "range": { "jdate": { "gt": "2023-01-01", "lt": "2025-03-01" } } } ] } }1.1 조건 => (contents=장애인 or abstract=매매대금) and etype=민사 인경우으로서 jdate전체로 할경우 range부분을 삭제 시키면 가능하나 삭제를 안하고 gt와 lt 값을 어떻케 주면 되는지(즉 최대일과 최소일을 모른다는 가정하에서)1.2 조건 => (contents=장애인 or abstract=매매대금) and (jdate>2023-01-01 and jdate<2025-03-01)etype 예에서는 행동로 했는데 행동이 아닌 전체를 할경우 이것 또한 term부문을 삭제를 하면 되는데삭제를 안할경우 value값을 무엇을 주어야 하는지요?1.3 1.1 및 1.2 질문을 한이유는 search 문을 여러개 만들어서 조건에 맞는 것을 사용해야 하는데 한개의 search문에서 값만 변경해서 사용할려고 합니다이게 가능한지 궁금 하네요
-
해결됨실리콘밸리 엔지니어와 함께하는 Elasticsearch
동시성 관련되어 궁금증이 생겨 질문을 남깁니다
안녕하세요!조회후 업데이트 로직이 있는 부분에서는 동시성 이슈가 발생할 여지가 있다고 생각이 들었습니다. 이런 경우 모든 POST동작에 if_primary_term, if_seq_no를 명시적으로 구성해주어야 하는건가요?
-
미해결실리콘밸리 엔지니어와 함께하는 Elasticsearch
multi node로 띄우는 상황에서 궁금증이 생겨 질문을 남깁니다
안녕하세요!docker-compose파일을 보면 es01에만 포트 포워딩이 되어있는데! 클라이언트와는 es01만 통신을 하는건가요? primary shard는 es02, es03도 될수 있는거 같아서 질문을 남깁니다. es01노드를 shut down시키면 service unavailable이 되는데! 이렇게 되면 진정한 의미에서의 Fault Tolerance가 안되는거 아닌가 하는 생각이들어서 질문을 남깁니다.(es01이 shut down되면 시간이 지나도 복구가 안되는 상황입니다..)
-
미해결개발자에게 필요한 로그 관리
Elasticsearch, logstash 세팅 시 오류 사항 공유
맥북 M1 시리즈 사용하고 있는데, 강의에서의 docker 이미지 다운로드 및 컨테이너 실행 시 문제가 발생하고 있습니다(이미지 다운로드는 문제없으나, 컨테이너 실행시 문제 발생). 플랫폼 관련 옵션이 추가적으로 필요합니다.--platform linux/amd64 강의 자료보면 각각 Elasticsearch, Logstash 따로 작성되어 있는데 yml 하나로 제공되어도 좋을 것으로 보입니다.version: "3.8" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.10.0 container_name: elasticsearch platform: linux/amd64 ports: - "9200:9200" environment: - discovery.type=single-node - xpack.security.enabled=false - xpack.security.http.ssl.enabled=false networks: - elastic-network logstash: image: docker.elastic.co/logstash/logstash:8.10.0 container_name: logstash platform: linux/amd64 ports: - "5044:5044" - "9600:9600" volumes: - ../logstash.conf:/usr/share/logstash/pipeline/logstash.conf # logstash.conf 경로 수정 필요 networks: - elastic-network networks: elastic-network: driver: bridge
-
미해결개발자에게 필요한 로그 관리
현재 섹션5 보고 있는 상태인데 이후에 push & pull model의 차이점도 나오나요?
모니터링 또는 메트릭 수집에는 Push 또는 Pull 모델이 있다고 들었습니다.이 두 방식의 차이점이나 도구들에 대한 부분도 나오는지 궁금합니다!
-
미해결개발자에게 필요한 로그 관리
body가 아닌 request Parameter는 디버그로 안남기나요?
안녕하세요. 강의 잘 듣고 있습니다. 강의에서 spring filter를 이용해서 controller 에서 들어온요청정보들에 대한 log를 찍는걸 보여주셨는데요.혹시 url 들어온 파라미터는 로그에 찍지않는지 궁금합니다. 그리고 요청마다 body가 안들어오는 경우가 있고, 파라미터만 들어온다던지 경우의 수가 다양할거같은데.. 이럴 때는 필터를 어떤식으로 구성해야하는지 궁금합니다.
-
미해결개발자에게 필요한 로그 관리
output이 제대로 작동하지 않는 것 같습니다.
output { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "application-logs-%{+YYYY.MM.dd}" } }위에 있는 설정 대로라면 yellow open application .. << 이게 localhost9200에 나타나야하는데 안뜨고 하단의 에러가 나옵니다.14:24:25,530 |-WARN in net.logstash.logback.appender.LogstashTcpSocketAppender[LOGSTASH] - Log destination localhost/<unresolved>:5044: Waiting 29951ms before attempting reconnection. 해결할려고 시도한 방법은 hosts의 url을 ip를 주소로 같게 해서 시도해보았으나 안되었습니다.
-
미해결개발자에게 필요한 로그 관리
예외발생하면 printstacktrace()를 사용하시나요 ?
구글에 쳐보니 예외가 터지면 printstacktrace()는 지양하고 getStackTrace() 를 사용하라는데의견이 궁금합니다 !
-
미해결빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
코딩 프로그램
수업에서 사용하고 계시는 코딩 프로그램이 무엇인가요?philip@philp해서 화면이 나오는데, 이건 어떤걸 사용해서 해야하는 걸까요?주피터 노트북 얘기해 주셔서 그걸로 하고 있는데, 아예 안되는 것들이 많아서요, 그리고 왔다갔다 하면서 하시던데, 어떤걸 사용하고 계시는 걸까요?
-
해결됨개발자에게 필요한 로그 관리
logstash 가 elasticsearch로 전달 할때 에러가 납니다.
logstash 가 elasticsearch로 전달 할때.. 에러가 나는것 같은데Log destination localhost/<unresolved>:5044: Waiting 29992ms before attempting reconnection. 이런에러가 납니다. 혹시 원인을 알수 있을까요?
-
미해결빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
색션2 실습 practice 1 질문드립니다.
아래와 같은 양식으로 질문을 남겨주세요 🙂교수님이 작성해주신 코드와 동일하게 작성하였는데 실행이 url링크만 나옵니다 왜그럴까요 ㅠㅠ
-
미해결빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
색션2 실습 Carwling에 practice 1 부분 질문드립니다.
아래와 같은 양식으로 질문을 남겨주세요 🙂수업을 들으시면 이해하기 어려운 부분이 있으면 상세히 질문을 남겨주세요.서로 Tone and Manner 를 지키며, 즐거운 수업 시간을 만들어보아요.실제 기상청 RSS에 가보면 mid-term 다음에 rss3.jsp로 나와있는것을 확인 할 수 있는데아래 교수님이 써주신 코드는 mid-term 다음에 lss3.jsp로 작성해 주셨습니다.# api 주소는 밑에거를 가져와 api_addr = "http://www.kma.go.kr/weather/forecast/mid-term-lss3.jsp" 실행을 해보니 rss3.jsp는 실행이 안되고lss3.jsp는 실행이 됩니다. 왜 그런 것일까요? 문의 드립니다!
-
미해결빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
yahoo finacne 데이터 다운로드 안됩니다.
yahoo finance data 는 "Gold subscription" 부터 가능하다고 합니다. 샘플 자료 공유 해주세요.
-
해결됨빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
섹션2 가상환경 설치 오류
안녕하세요. 섹션2 실습 진행 중 가상환경 설치 부분부터 막히고 있어 문의드립니다ㅠㅠ 다른 질문들 찾아보고 virtualbox 우분투 환경에서 진행 중입니다. python3 설치 방법, pip 설치 방법을 따로 안내해주시지 않아서 구글링 해서 진행했는데, 자꾸 오류가 나네요.우분투 버전이 24.04.01 입니다. 버전 차이에서 오는 오류일까요? 오류 내용을 보고 구글링해봐도 해결이 어려워 도움 요청합니다ㅠㅠ