분류 전체보기 (262) 썸네일형 리스트형 Fluent Bit의 버퍼링Buffering (번역) Fluent Bit의 공식 문서에서 버퍼링과 스토리지, 백프레셔에 관해 번역한 글입니다. 백프레셔 Fluent Bit의 목표는 중앙으로 로그를 모으고, 파싱하고, 필터링하고, 적재하는 것입니다. 이 과정에서 처리할 새로운 데이터를 받는데, 데이터를 빠르게 전송하지 못한다면 백프레셔backpressure를 마주하게 됩니다. 특정한 환경에서는 로그나 데이터가 목적지로 보낼 수 있는 여력보다 빠르게 유입됩니다. 흔한 케이스로는 큰 로그 파일을 읽어오고 네트워크를 통해 백엔드로 보내는 것이 있는데, 응답하기까지 시간이 걸리고, 이것은 서비스에서 큰 메모리 소모를 야기하는 백프레셔를 생성하게 됩니다. 버퍼링 Fluent Bit는 버퍼링으로 백프레셔와 일반적인 전송 실패 문제를 풀고자 합니다. 버퍼링은 데이터가 적.. Logstash multiple kinesis input Logstash로 Kinesis Data Streams를 연결하고 나서, 추가적으로 Data Streams 하나를 더 생성해서 연결하려고 하는데 계속 제대로 연결되지 않았다. 🤔 왜일까... 하고 찾아봤는데, Logstash Kinesis input plugin (Kinesis Data Streams만 지원한다. Kinesis Firehose Delivery streams는 지원되지 않으니 주의! 대신 Kinesis Firehose Delivery Streams 의 목적지를 S3으로 하면 Logstash S3 input을 사용해서 S3에서 데이터를 받아오고 바로 지울 수 있다.) 은 Dynamodb를 사용하는데, 이 Dynamodb는 기본적으로 'logstash'라는 이름으로 생성되고, 로그스태시 플러그.. Logstash 6.3.x 버전에서의 GC(Garbage Collector) Logstash로 kinesis input 플러그인을 설치하려는데 Unrecognized VM option 'UseParNewGC' Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 오류가 났다. 찾아보니 jdk 버전 문제인 것 같았다. Remove or comment line: -XX:+UseParNewGC Remove or comment line: -XX:+UseConcMarkSweepGC Add this line instead: -XX:+UseG1GC Apparently the previously used GC in Java 8 and older was de.. Using Lua filter to find if log matches a pattern, and remove last n characters. Original log: [1646213018.112301921, {"log"=>"testtest1-"} Changed log : [1646213018.112301921, {"log"=>"testtest1"} [FILTER] Name lua Match test.* script checkend.lua call check_end If you use lua filter, you can find "If a log/word matches a specific pattern", and do some works. ex) if the condition suits, remove last n characters. I wrote on those codes on fluentbit configmap, so there is tab.. Remove last n characters using Regex & Fluent Bit I took a quite a munutes to find "remove / delete last n characters / words by regex" but there was no explicit answer. However, I found a solution. [FILTER] Name parser Match test.* Key_Name path Parser removelastn Reserve_Data On Preserve_key On [PARSER] Name removelastn Format regex Regex (?.*?).{6}$ link (?.*?) means "log" might not exist, anyway it catch all characters or nothing("") .{6}$ .. 2022.2월 회고 업무 EKS(Amazon Kubernetes) 위에서 Fluent bit을 사용해 로그를 모으고, 로그를 s3의 어떤 경로에 전송할지 path를 설정하는 과정에서 적지 않은 시간을 소모했다. Kubernetes - Fluent Bit 로 사용자 로그 S3에 output 설정하기 개발자들이 폴더와 파일 이름을 (가이드 외의) 여러 가지로 정하는 예외 상황을 가정하고, 그런 상황이 있어도 안정적으로 로그를 수집할 수 있도록 설정을 잡아야 했기 때문이다. Fluent bit 자체가 경량화된 로그 수집 프로그램이라 제약사항이 좀 있는 편이기도 했다. 하지만 이 과정에서 많이 배웠다. 단순히 내가 '개발자들이 다 가이드대로 따라주겠지~' 하고 경로를 잡고 끝내버리는 게 아니라, 예외 상황을 가정하고 로그를 놓치는.. 구글 코랩에서 Pyspark 사용하기 https://spark.apache.org/downloads.html 에서 아파치 하둡 2.7과 함께 사용할 수 있는 스파크 버전을 확인한다. !apt-get install openjdk-8-jdk-headless -qq > /dev/null !wget -q https://downloads.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz !tar -xvf spark-3.2.1-bin-hadoop2.7.tgz !pip install -q findspark !pip install pyspark 만약 버전이 다르다면 위 코드에서 버전을 변경하면 된다. import os os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8.. 스파크 완벽 가이드 Part 2 : 구조적 API (1) 스파크 트랜스포메이션*의 처리 과정을 정의하는 분산 프로그래밍 모델입니다. 트랜스포메이션 : 지향성 비순환 그래프(DAG)로 표현되는 명령을 만들어냅니다. 액션 : 하나의 잡을 클러스터에서 실행하기 위해 스테이지와 태스크로 나누고 DAG 처리 프로세스를 실행합니다. 트랜스포메이션과 액션으로 다루는 논리적 구조가 바로 DataFrame과 Dataset입니다. 새로운 DataFrame과 Dataset을 만들려면 트랜스포메이션을 호출해야 합니다. 연산을 시작하거나 사용한 언어에 맞는 데이터 타입으로 변환하려면 액션을 호출해야 합니다. 구조적 API 비정형 로그 파일부터 반정형 CSV 파일, 파케이Parquet 파일까지 다양한 유형의 데이터를 처리할 수 있습니다. 구조적 API에는 Dataset, DataFra.. 이전 1 ··· 5 6 7 8 9 10 11 ··· 33 다음