Fluentd 에서 http로 다른 서버로 로그 전송 후 로그를 받은 서버에서 log analytics로 전송하도록 만들었다. 로그 전송 서버 @type tail encoding utf-8 @type regexp expression /^\[(?\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]\[(?.*?)\] \[(?.*?)\] (?.*?)$/ path /%Y-%m-%d.txt pos_file /tmp/fluent/log_file.pos tag test.t1 @type record_modifier char_encoding utf-8 host_ip "#{Socket.ip_address_list.find { |ai| ai.ipv4? && !ai.ipv4_loopback? }.ip_addr..
Fluentd 를 실제 서버에 올려놓고 로그 수집을 기다리던 중에 중국어 와 json 로그를 전송하던 중에 \xE6 from ASCII-8BIT to UTF-8 에러가 나와서 로그가 정상적으로 발송되지 않는 현상이 일어났다. 이러한 에러는 서버에서 보내는 로그 형식이 UTF-8 인데 인코딩이 잘못되는 경우이다. 지금 회사의 경우에는 대만 회사여서 중국어가 로그에 포함되는 경우가 있는데 이 때 발생하는 에러 같다. 그래서 태그 안에서 tail 밑에 encoding UTF8을 적어서 하면 중국어는 깨져서 나와도 정상적으로 로그가 발송되는 것이 확인이 되었다. @type tail encoding utf8 ... 문제는 json 형식으로 보낼 때 \xE6 에러가 아닌 \xC 계열로 예외가 발생하는데 이 때는 f..
Fluentd 를 설치하고 사용하는 중에 추가해야 될 플러그인들이 많아져서 conf 파일이 길어지면서 보기가 어려워졌다. conf 파일을 여러 개 만들어서 분리한 다음 fluentd가 실행 될 때 읽는 파일에다가 import만 하면 어떨까 라는 생각이 들어 찾아봤는데 @include라는 녀석이 있다는 것을 알게 되었다. @include 를 사용하는 것은 간단하다. fluent.conf 또는 rpm으로 fluentd를 설치했다면 td-agent.conf에 @include를 하고 그 뒤에다가 분리 시켜놓은 conf 파일들의 경로와 함께 선언하면 된다. 사용법 fluent.conf @include /path/fluentd_config.conf @include /path/fluentd_config2.conf ...
fluentd에서 azure-loganayltics 플러그인을 설치 한 뒤 conf 파일을 수정하면 된다. ex) td-agent(fluentd rpm 설치)의 경우 sudo /usr/sbin/td-agent-gem install fluent-plugin-azure-loganalytics ex) fluentd(ruby gem 설치)의 경우 sudo /bin/gem install fluent-plugin-azure-loganalytics azure portal azure portal의 이미지는 여기에다가 올리기에는 보안 문제가 있으므로 글로 설명하겠다. loganalytics 리소스가 생성되 있는 상태라고 가정하고 azure portal에 접속한 뒤 에이전트 관리, 위의 탭에서 window server, ..
환경 : CentOS 6.10 fluentd 에 내장되 있는 ruby는 컴파일 할 때 박살이 날 수 있다. 기존에 설치한 td-agent(fluentd)에서 azure-loganalytics 플러그인을 설치할 때 Building native extensions. This could take a while... ERROR: Error installing fluent-plugin-azure-loganalytics: ERROR: Failed to build gem native extension. current directory: /opt/td-agent/embedded/lib/ruby/gems/2.4.0/gems/unf_ext-0.0.8.2/ext/unf_ext /opt/td-agent/embedded/bin..
tomcat access log 에서 500에러만 추출해서 azure storage로 남기기로 했다. 시작 flunetd 설치는 이전에 올린 글을 참고해주길 바란다. 먼저 /etc/td-agent/td-agent.conf 파일을 연다. sudo vi /etc/td-agent/td-agent.conf 그 후에 source -> parse -> filter 순서로 작성한다. @type tail @log_level warn @type regexp expression /^(?.*?) (?[^ ]*) (?[^ ]*) \[(?\d{2}\/[a-zA-Z]{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2} \+\d{4})\] \"(?.*?)\" (?\d+) (?[0-9\-]+) (?\d+)$/ path //loc..
회사에서 Fluentd 에서 수집한 로그를 MongoDB에 넣는 것도 한번 해보는게 어떻냐고 해서 함 해봤다. 회사에서 할 때는 fluentd 버전이 1.11.0 버전이여서 fluent-plugin-mongo를 설치 하려고 할 때마다 안됬었던거 같았다. fluentd 초짜였던 나는 fluentd 내장 ruby와 bson의 버전이 낮아 업그레이드 하는 방법을 몰라서 삭제하는 방법으로 했는데 역시 가장 좋은건 있는 그대로 놔두는게 제일 좋은거 같다. 이 후에 나오는건 에러 폭탄이였다. 결국 td-agent를 삭제를 했다. sudo yum remove td-agent sudo rpm -e --allmatches gpg-pubkey-ab97acbe-586223cc sudo rm /etc/yum.repos.d/t..
CPU 사용량을 확인해 보려고 Test를 해봤다. 테스트 툴 Jmeter(인위적 request) 테스트 총 flush_thread, request 수 : 1개 , 10000 request 테스트 시 사용한 url : Test할 url 사용한 config 설정 @type tail @log_level warn @type none path pos_file /.log.pos tag access @type azurestorage azure_storage_account azure_storage_access_key azure_container platformlogs azure_storage_type blob store_as text auto_create_container true path azure_object_ke..
Comment