studybook
  • Introduction
  • 실무 하며 깨닫는 부분 정리
    • 옵션에 대해서
    • 코드 작성의 순서
    • 자바 프로그램에 문제가 생겼다면
    • 장애 대처법
  • Logstash, Beats 정리
  • Zookeeper 정리
  • Message Queue 정리
    • RabbitMQ 삽질
  • Java 관련 정리
    • Java Primitive Wrapper class
    • Java NIO
    • Java8 Double colon operator
    • Effective Java
      • 4장
      • 5장
      • 6장 - Enum, Annotation
      • 7장 - Method
      • 8장 - 프로그래밍 일반
      • 9장 - Exception
    • Java8 Lambda expression
    • JDBC
    • Linux에서 WatchService 이상동작
  • Spring 관련 정리
    • Spring Bean init, destroy 순서
    • Spring Async Controller
    • Spring Executable jar 웹 개발 및 배포
    • Spring Boot Font 배포 에러
    • Spring AOP
      • Spring AOP로 모든 Request 로그 남기기
    • Spring Cache
    • Spring Cloud
      • Consul로 spring 설정 관리하기
    • Spring Test
      • Spring Test DirtiesContext
      • Spring Test MockBean, SpyBean
      • Spring Test Dynamic @Scheduled
    • Spring JDBC
    • Spring Validation
    • Spring Transaction Management
      • Spring with JTA 삽질
    • Spring에서 효율적으로 Static resource 관리하기
    • Zuul을 사용해서 Spring Reverse proxy 만들기
    • Spring Security
    • 스프링 어노테이션이 안 먹힐 때 의심해볼만한 것
    • Spring Data
    • Spring Webflux
      • Tobi 강연
  • 코드 리팩토링
    • 한번에 하나씩
  • 지속적 통합 (CI)
    • Jenkins pipeline 삽질기
  • Log Aggregator 정리
    • Flume 테스트
    • Fluentd 테스트
  • Web Socket 정리
  • Akka
    • Actor 모델
    • Supervision
  • IE 8 대응 정리
  • 함수형 프로그래밍
    • 모나드
  • Netty
    • Netty 기본 예제
    • Netty 주요 특징
    • Netty 부트스트랩
    • Netty 채널 파이프라인, 코덱
    • Netty 이벤트 모델
    • Netty 바이트 버퍼
  • 스칼라 관련 정리
    • Maven으로 컴파일하기
    • Scala def 괄호 여부의 차이
    • 스칼라 function, method 차이점
    • ScalaTest와 Spring 연동하기
    • Programming in Scala
  • J2S 컨퍼런스
  • Android
    • 테스트
    • NDK
  • DDOS
  • HTTP
  • HttpClient
  • Container
    • Image 개요
    • cri-o
    • kata containers
    • Open Container Initiative Image
    • Buildkit
  • Github pages
  • Static Website
  • Webhook
  • Service Discovery Tools
    • Etcd
    • Eureka
    • Consul
      • ACL
    • 비교
  • React
    • JSX
    • React Element
    • Components, Props
    • State, Lifecycle
    • Handling Event
    • Flux
  • Vagrant
    • SSH 접속
  • Linux
    • Systemd
    • Alternatives
  • Messaging protocols
    • XMPP
    • AMQP
  • Windows
    • Windows10 내장 우분투에 ssh 클라이언트로 접속하기
    • Windows10 Hyper-V와 Virtual Box가 충돌을 일으켰을 때
    • Hyper-V 기반 docker에서 Shared Drives 설정 실패할 때
    • 윈도우 개발환경 설정
    • Docker desktop 없이 docker 환경 세팅하기
    • UWP 앱을 항상 관리자권한으로 실행하는 바로가기 만들기
  • Spring camp 2017
    • Project Reactive
    • 이벤트 소싱
    • CQRS
  • Spring webflux
  • 리액티브 프로그래밍
  • Linux Settings
    • 홈서버 백업 및 복구기
    • 홈서버 트러블슈팅
  • Kubernetes
    • k3s 설치 및 삽질
    • pod resources
    • Argo workflow
    • 트러블 슈팅
      • Kubernetes namespace의 phase가 Terminating에서 멈춰있을 때
    • 쿠버네티스 마스터
    • Knative
    • Knative Pipeline
    • Aggrerated API server
    • Accessing the API
      • Authenticating
  • Sonarqube
  • HTTP/2
  • Go
    • Go Module
    • Go dependency injection
    • Go Error handling
    • Go in Action
      • 3장 패키지
      • 4장 배열, 슬라이스, 맵
      • 5장 GO의 타입 시스템
      • 6장 동시성
      • 7장 동시성 패턴
      • 8장 표준 라이브러리
      • 9장 테스트와 벤치마킹
    • Go Channel 사용법
  • Cloud Native
Powered by GitBook
On this page
  • 설치
  • 실행 방법
  • 구성
  • Consumer
  • Tail -> Memory buffer -> Forward
  • Listener
  • Forward -> File buffer -> HDFS(|| File)
  • 테스트
  • 테스트 2 (물리 서버 -> 물리 서버)
  • Consumer [xdevnnidb02.npush] -> Listener [xdevnnidb01.npush]
  • 장점
  • 손쉬운 세팅
  • 자동 load balancing, fail over
  • HDFS output 제공
  • 단점
  • 네트워크 대역폭 제한 불가
  • 서버 세팅 곤란
  • 불필요한 오버헤드 발생
  • 루비
  1. Log Aggregator 정리

Fluentd 테스트

PreviousFlume 테스트NextWeb Socket 정리

Last updated 7 years ago

설치

# sudo
sudo yum install -y libyaml-devel libffi-devel
# deployer
FLUENT_HOME=/user/path/fluent

# rvm & ruby 설치 
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -L https://get.rvm.io | bash -s stable --ruby
source ~/.profile

gem install fluentd -v "~> 0.12.0" --no-ri --no-rdoc
fluentd --setup $FLUENT_HOME

echo "export FLUENT_HOME=$FLUENT_HOME" >> ~/.bashrc
source ~/.bashrc

실행 방법

우선 각 설정파일들을 FLUENT_HOME에 넣어주고

fluentd -c $FLUENT_HOME/consumer.conf -vv
fluentd -c $FLUENT_HOME/listener.conf -vv

구성

Consumer

Tail -> Memory buffer -> Forward

in_tail

  • 특정 디렉토리/파일을 지정, 각 라인 단위로 잘라서 버퍼로 저장하는 역할

  • 같은 파일을 여러번 읽지 않도록 pos_file을 지정할 수 있음

  • 다 읽은 파일을 처리하는 옵션이 없어 별도의 스크립트 등으로 처리해야함

memory buffer

  • buffer chunk를 저장하기 위해 메모리를 사용

  • default인 file buffer에 비해 빠른 성능을 가짐

  • fluentd 인스턴스가 종료되었을 때, 버퍼에 들어있던 데이터가 사라짐

  • 필요한 데이터가 이미 파일로 남아있으므로 두번 파일로 저장할 필요가 없어 memory buffer 사용

out_forward

  • 보통 Fluentd에서 다층 구조를 구현하기위해 사용하는 옵션

  • 자동적으로 Load balancing과 fail over 지원

Listener

Forward -> File buffer -> HDFS(|| File)

in_forward

  • 보통 Fluentd에서 다층 구조를 구현하기위해 사용하는 옵션

  • 자동적으로 Load balancing과 fail over 지원

file buffer

  • buffer chunk를 저장하기 위해서 파일을 이용

  • default 값으로, 각종 장애에 우수한 신뢰도를 보여줌

out_webhdfs

  • HDFS에 파일을 저장하기 위해서 사용

  • 경우에 따라서는 이것을 사용하지 않고 그냥 file로 저장한 후 현재 listener에서 사용중인 스크립트를 쓰는 것도 고려해볼 수 있음

테스트

테스트 2 (물리 서버 -> 물리 서버)

Consumer [xdevnnidb02.npush] -> Listener [xdevnnidb01.npush]

Buffer size

Buffer size, Queue length

avg CPU (%)

time (s)

TPS

MBps

비고

5MB, 1

4.25%

106s

23490

24.15 MB/s

16MB, 3

4.26%

105s

23714

24.38 MB/s

64MB, 6

4.26%

105s

23714

24.38 MB/s

256MB, 12

4.25%

107s

23271

23.92 MB/s

장점

손쉬운 세팅

  • 루비, gem 설치 후 config 파일을 집어넣으면 바로 실행 가능. config 파일도 상대적으로 간단한 편.

자동 load balancing, fail over

  • Sever list를 넣어놓으면 자동적으로 각 서버마다 비율을 맞춰서 load balancing 해줌. 또한 fail over용 서버도 별도로 지정할 수 있으며, 모든 서버가 사용 불가능할 때를 대비하여 파일에 쓰도록 설정해둘 수도 있음.

HDFS output 제공

  • flume과 마찬가지로 별도의 절차 필요없이 바로 HDFS로 넣는 것이 가능.

단점

네트워크 대역폭 제한 불가

  • 코어에서 관련 기능을 제공하지 않음. document에선 flush_interval을 통해 특정 시간마다, buffer_chunk_limit를 통해 특정 용량마다 보낼 수 있을 뿐이며, 실질적으로 초당 전송량 제한 옵션이 제공되지 않음. 그와 같은 상황에 다른 서버로 보내거나 secondary라고 하는 별도의 백업으로 보내도록 권장하고 있음.

서버 세팅 곤란

  • config파일에 가용한 모든 서버를 입력해야되므로 차후 새로운 서버를 추가하거나 제거해야할 때 수정된 config을 모두 다시 배포하고 재시작해야 함.

불필요한 오버헤드 발생

  • 각 파일을 라인단위로 자르고, 전송할 때 특정 포맷으로 한번 감싸서 보내기 때문에 불필요한 오버헤드가 발생.

루비

  • 사내에서 잘 쓰이지 않는 언어라서 내부적으로 수정해서 쓸 일이 있거나 할 때 불리

http://docs.fluentd.org/articles/install-by-rpm