분류 전체보기 308

Docker Build를 이용해서 커스텀 컨테이너 이미지 만들기

기본 이미지를 바탕으로 추가적인 명령어를 실행하여 원하는 이미지를 생성할 수 있다. [작업순서] Dockerfile 생성하기 docker build 명령어로 이미지 생성하기 Dockerfile 생성하기 본 logstash이미지에는 여러 플러그인들이 설치되어 있지만 원하는 플러그인이 없을 수도 있다. (ex: mongdb plugin) 이 경우 기본 이미지를 불러온 뒤 추가 명령어를 수행하여 mongodb 플러그인을 설치한 후 그것을 이미지화 시킬 수 있다. 파일이름은 반드시 Dockerfile로 해야한다. //logstash 기본 이미지 (Docker Hub 경로 입력..?) FROM logstash:7.17.0 //mongodb 플러그인 설치 커맨드 RUN logstash-plugin install l..

Docker 2022.10.29

Logstash를 이용한 Mongdb - Kafka 파이프라인 구성

목차 [개요] 로컬환경에서 Logstash를 활용하여 Mongodb 데이터를 Kafka로 이관하는 작업을 검증해본다. Source: Mongodb Sink: Kafka [준비물] Docker (Docker-compose 필요) Mongodb, Kafka 등을 컨테이너로 구동할 Docker-Compose.yml 파일 Datagrip: Mongodb에 데이터를 넣고 확인할 도구 Kafka-ui: 카프카 어드민 Logstash [작업순서] Docker-Compose.yml 파일 작성 mongodb, zookeeper, kafka, kafka-ui 구동 Datagrip으로 mongodb 접속 database 생성 collecction (table) 생성 document (row) 생성 logstash 세팅 mo..

Logstash

목차 [Logstash란?] 데이터 파이프라인 구조에서 데이터의 집계, 변환, 저장 역할을 수행함. Logstash는 형식이나 복잡성과 관계 없이 데이터를 동적으로 수집, 전환, 전송할 수 있다고 한다. grok을 이용해 비구조적 데이터에서 구조를 도출하여 IP 주소에서 위치 정보 좌표를 해독하고, 민감한 필드를 익명화하거나 제외시키며, 전반적인 처리를 손쉽게 해주는 역할을 한다. Components Source : 모든 형태, 크기, 소스의 데이터 수집 데이터의 매우 다양한 시스템에 매우 다양한 형태로 보관되어 있다. Logstash는 이같이 다양한 시스템에서 데이터를 가져오는 다양한 소스를 지원한다. Filter : 데이터 이동 과정에서의 구문 분석 및 변환 Logstash의 필터는 데이터가 소스에서..

Kafka Connector 개요

[Kafka Connect] 카프카는 프로듀서와 컨슈머 클라이언트를 통해 메시지 파이프라인을 구성할 수 있다. 하지만 파이프라인 구성을 위해 매번 프로듀서와 컨슈머를 개발하는 것은 쉽지 않다. => 카프카와 외부 시스템 간의 파이프라인 구성을 더욱 쉽고 간편하게 해주는 도구. Source Connector : 외부 시스템 -> 커넥트 -> 카프카 Sink Connector : 카프카 -> 커넥트 -> 외부 시스템 특징 다양한 Connector들을 지원한다. But 기능적으로 완벽한 것 같지는 않다. Connector 구축 및 관리를 위한 REST API를 지원한다. Connector별로 라이센스가 다르다. (ex: Elasticsearch Sink Connector는 Confluent 유료 라이센스) C..

Kafka/Connect 2022.10.29

Kafka 토픽명에 날짜가 포함된 경우 오래된 날짜의 토픽 주기적으로 삭제하기

일배치 작업을 위해 날짜가 포함되어 생성된 Kafka 토픽이 있을 수 있다. ex) topic-20221026 이 경우 시간이 흐를수록 토픽은 쌓이기만하므로 정기적으로 삭제해줄 필요가 있을 수 있다. 아래와 같은 스크립트 작성 후 Jenkins에서 스케줄링하는 방식으로 시도 #30일전 이름을 가진 토픽들을 배열에 담음 OLD_DAY=`date +%Y%m%d -d -30day` TOPICS=(`sudo kafka-topics --bootstrap-server localhost:9092 --list | grep $OLD_DAY`) #배열을 순회하면서 삭제 for topic in ${TOPICS[@]} do sudo kafka-topics --bootstrap-server localhost:9092 --del..

Kafka 2022.10.27

Ubuntu에서 Jenkins 스크립트 실행 시 sudo 권한 부여하기

Jenkins에서 쉘 스크립트를 실행하려고 아래와 같은 커맨드를 입력하면 오류가 난다. sudo 권한이 없기 때문 sudo sh /home/jaeshim/test2.sh sudo: no tty present and no askpass program specified jenkins 계정으로 jenkins 서비스를 구동하고 있을 경우 jenkins 계정에 sudo 권한 부여하기 # root로 전환 $ su - # visudo 열어서 sudoers 변경 $ visudo # root 아래에 다음 구문 추가 jenkins ALL=(ALL)NOPASSWD: ALL # Ctrl+X, Y, Enter 로 저장 재실행 성공 [Test] $ /bin/sh -xe /tmp/jenkins464703208738675039.sh..

Jenkins 2022.10.27

ClassPath (클래스패스) 란?

[Classpath?] 클래스패스란 말그대로 Java에서 클래스를 찾기위한 경로를 뜻함. Java는 JVM에서 실행되는데, 빌드 과정에서 .java라는 소스코드가 바이트코드인 .class 형태로 변환된다. 이때 Java Runtime으로 이 .class 파일에 포함된 명령을 실행시키려면 먼저 이 파일을 찾을 수 있어야 한다. 이 때 사용하는 것이 classpath이다. 참조 https://effectivesquid.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%81%B4%EB%9E%98%EC%8A%A4%ED%8C%A8%EC%8A%A4classpath%EB%9E%80

Java 2022.10.27

데이터 인프라 이해하기

[데이터 인프라의 목적] 비즈니스 리더들의 결정을 도와주기 서비스나 제품을 데이터의 도움을 받아 발전시키기 데이터 웨어하우스? 데이터 인프라의 기초는 각종 운영시스템이다. 이 데이터들을 분석하고 싶으면 각각의 분석 도구를 붙여아 한다. 어느 순간부터는 통합된 데이터 분석 환경이 필요하게 되었다. 그래서 다양한 소스로부터 데이터를 저장하는 DataWarehouse라는 곳이 필요하게 됨. 데이터 유형의 차이 운영시스템(Normalized Schema): 모든 데이터를 쪼개서 관리함. Warehouse(Dimensional Schema): 분석을 위한 단순한 데이터들만 관리함. [ETL, ELT] ETL이란 데이터의 추출(Extract), 변환(Transform), 로드(Load)를 나타내며 조직에서 여러 시..

Data Pipeline 2022.10.23