본문 바로가기

전체 글

(262)
2022.1월 회고 업무 Amazon Kubernetes인 EKS에 기존 로그 수집 프로그램인 Logstash 대신 Fluent Bit을 연동하고 S3와 연결했다. Fluent Bit의 내부 버퍼 대신 SQS같은 외부 버퍼를 사용하기 위해 키네시스, 카프카를 사용할 예정인데, 새로운 스택을 쓰게 되어 설렌다. 2주간 한 내용을 중간 보고, 발표하는 시간이 있었는데 그간 내가 했던 일들을 제대로 어필하지 못했다. 앞으로는 윗분들이 들어오는 발표는 철저하게 준비하고, 이걸 하는 이유와 목표, 기대 효과와 내가 한 것들을 조목조목 잘 설명할 수 있도록 하자. Fluent Bit의 output을 S3로 내보내는 과정에서 1주일을 헤맸다. 예외 케이스를 가정하고 설계를 해야 했는데, 그 점을 가정하지 못해 보완하느랴 엄청 시간을 썼..
혼자 공부하는 머신러닝+딥러닝 3주차 [기본 미션] 로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는 무엇인가요? -> 시그모이드 함수. 로지스틱 회귀는 선형회귀와 동일하게 선형 방정식을 학습한다. z = a * X1 + b * X2 + c * X3 + d * X4 + e a, b, c, d는 가중치, 혹은 계수이고 e는 절편이다. 여기서 z가 아주 큰 음수일 땐 0이 되고, z가 아주 큰 양수일 때 1이 되도록 바꾸기 위해서 시그모이드 함수를 사용한다. 사이킷런은 위의 z값에 따라 출력된 시그모이드 함수의 출력이 0.5보다 이하이면 음성 클래스(0), 0.5를 초과하면 양성 클래스(1)로 분류한다. [선택 미션] 1. 과소적합 2. 과대 적합
Fluent Bit Stream Processor 사용하여 데이터 특정 조건에 따라 다른 아웃풋으로 보내기 fluent-bit.conf: | [SERVICE] Flush 5 Log_Level info Daemon off Parsers_File parsers.conf Streams_File streams.conf HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020 먼저 [SERVICE]에 Streams_File 을 기재해줍니다. streams.conf: | [STREAM_TASK] Name check_one Exec CREATE STREAM three_check WITH (tag='userlog.*') AS SELECT * FROM TAG:'userlog.*' WHERE cluster_name = " " and pod_namespace = " " and pod_name = ..
Fluent Bit에서 특정 경로의 로그 파일 받아와 쿠버네티스 메타데이터 추가하기 한줄 미리보기 : 제목처럼 안 됩니다. 이거 되게 하려고 몇 시간을 허비했는지..... 저같이 '이거 설정 좀만 바꾸면 되는 거 아냐?' 하고 매달리실 분들을 위해 씁니다... 환경 : EKS (쿠버네티스 버전 1.8) fluent bit : latest fluent bit의 tail의 인풋 설정은 다음과 같은데, [INPUT] Name tail Tag kube.* Path /var/log/containers/*.log 여기서 Path를 /var/log/containers/custom-*.log 와 같이 조금이라도 바꾸면... 쿠버네티스 메타정보가 추가되지 않습니다. 시스템 로그(var/log/containers/~ 하위의 podname별로 생기는 {podname}_{namespace}_{containe..
자바 스프링부트 앱- 로그 레벨별로 여러 로그 파일 남기기 자바를 배워본적도 없는 내게 자바 스프링부트 앱으로 로그 파일을 3개나 만들라는 지시가 떨어졌다.... 두둥... 처음엔 멘붕이 와서 어버버버했는데, 인도인 유투버 아저씨들의 도움을 받아 개략적인 틀은 완성했지만 계속 뭔가 쫌 부족했다. 로그는 어떻게 찍어야 할지 감도 안 잡혔는데, 로그 레벨별로 debug, info, error 3개의 경우를 나눠 로그 파일을 만들어야 한다니... 정말 막막했다. 그래도 끊임없는 구글링과 다른 개발자분들의 조언 덕에 구현할 수 있었다. 기본적인 스프링부트 앱을 만드는 방법은 여기를 참조했다. https://donghoon-khan.github.io/2020/08/10/deploy-spring-boot-application-on-kubernetes/ Spring Boot..
혼자 공부하는 머신러닝+딥러닝 2주차 [기본 미션] # k-최근접 이웃 회귀 knr = KNeighborsRegressor() # 5부터 44까지의 데이터를 2차원 배열로 만들음 x = np.arange(5, 45).reshape(-1, 1) for n in [1, 5, 10]: knr.n_neighbors = n knr.fit(train_input, train_target) prediction = knr.predict(x) plt.scatter(train_input, train_target) plt.plot(x, prediction) plt.title(f'n_neighbors = {n}') plt.xlabel('length') plt.ylabel('weight') plt.show() [선택미션] 파라미터란? 한국어로 매개변수이며, 모델 내..
Kubernetes 특정 경로로 로그 파일 수집하기(nginx access 로그 만들기) nginx같은 경우는 /var/log/nginx/ 경로 하위에 access.log, error.log가 만들어진다. 이렇게 쌓이는 로그를 쿠버네티스에 띄운 Logstash로 수집할 수 있다. nginx.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx namespace: test spec: replicas: 3 selector: matchLabels: run: my-nginx template: metadata: labels: run: my-nginx spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchE..
혼자 공부하는 머신러닝+딥러닝 1주차 앞으로 6주간 한빛미디어의 혼자 공부하는 머신러닝+딥러닝 혼공학습단에 참여하게 되었다. 데이터 엔지니어로 일을 시작하면서 머신러닝, 딥러닝 고작 반년 안했다고 다 까먹었는데, 이번 기회에 기초부터 탄탄하게 다져야겠다...!!! [기본 미션] 코랩 실습 화면 캡쳐 [선택 미션] 2-1 확인문제 풀고, 풀이 과정 정리 확인문제 1. 머신러닝 알고리즘의 한 종류로서 샘플의 입력과 타깃(정답)을 알고 있을 때 사용할 수 있는 학습 방법은 무엇인가요? 1. 지도 학습 2. 비지도 학습 -> 타깃이 없는 데이터에 적용하는 머신러닝 알고리즘 3. 차원 축소 -> 비지도 학습의 하나로 데이터가 가지고 있는 특성의 개수를 줄이는 방법이다. 4. 강화 학습 -> 체스, 바둑과 같이 경기를 이길 때 보상을 주며 학습하는 방..