EFK_noDocker

Docker 없이 EFK 설치하기

Port 정보

elasticsearch 9200 fluentd-aggregator 24224 kibana 5601

1. Fluentd 설치

Before Installing

  • Setup NTP

    logging 시간 동기화를 위함

  • Increase Max # of File Desc ulimit -n 명령어를 값을 확인할수 있고, 아래 내용을 /etc/security/limits.conf에 추가 후 세션 재접속

    root soft nofile 65536
    root hard nofile 65536
    * soft nofile 65536
    * hard nofile 65536
  • Optimize Network Kernel Parameters

    여러 Fluentd instan를 사용하는 경우 최적의 성능을 위해,

    아래 내용을 /etc/sysctl.conf에 추가 후 세션 재접속 or 서버

    net.core.somaxconn = 1024
    net.core.netdev_max_backlog = 5000
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_wmem = 4096 12582912 16777216
    net.ipv4.tcp_rmem = 4096 12582912 16777216
    net.ipv4.tcp_max_syn_backlog = 8096
    net.ipv4.tcp_slow_start_after_idle = 0
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.ip_local_port_range = 10240 65535

    출처

td-agent 설치

- RPM 파일로 직접 설치하는 경우(인터넷 안됨)

  1. 인터넷이 가능한 PC에서 RPM 파일을 다운로드 받음(Dependency가 걸린 RPM까지 모두 다 다운로드 됨)

  2. 인터넷이 불가능한 PC에 해당 파일 이동 후 모두 설치

    일부 패키지의 버젼 문제로 설치 안되는 경우 해당 패키지 삭제해 재설치 시도

- yum으로 설치하기(인터넷 됨)

사내망이라 yum 설치가 안되는 경우 해당 패키지의 repository 정보를 사내 Nexus에 추가할 수 있음 Jira의 DevOps_Support 프로젝트에서 issue로 등록 함 추가 방법 상세 안내는 사내 Confluence DevOps Support 공간에 Guide > Library Repo. Guide 참고 하지만 등록 한 repository가 redirect 되는 경우 모든 경로를 다 등록해 줘야 하고, dependency가 있는 경우 이들이 잘 다운된다는 보장이 없음..

curl로 설치 스크립트를 다운받아 실행 함.

GPG key는 txt복사 후 파일로 생성해도 됨 이 경우 repo에는 file:///filepath 로 변경 해야 함

설치경로 참고

  • 설치 경로 : /opt/td-agent

  • 로그 경로 : /var/log/td-agent

  • config 경로 : /etc/td-agent

  • plugin : /opt/td-agent/embedded/lib/ruby/gems/2.4.0/gems

fluentd plugin 설치

fluentd-aggregator에 fluent-plugin-elasticsearch gem 설치 각 서비스의 fluentd-client에 fluent-plugin-grok-parser gem 설치

- gem 파일로 직접 설치하는 경우 (인터넷 안됨)

  1. https://rubygems.org/ 에서 gem 파일 다운로드

    • fluent-plugin-elasticsearch-2.11.1.gem (elasticsearch와 연계하기 위함)

    • fluent-plugin-grok-parser-2.1.6.gem (log내용 parsing)

  2. scp로 설치할 서버에 파일 전송

  3. fluentd가 설치된 환경에서 plugin 설치

- gem으로 설치 (인터넷 됨)

로그 경로 수정

/etc/systemd/system/td-agent.service 파일에서 td-agent 실행하는 부분에 --log 옵션의 경로를 수정합니다. (로그 파일 관리를 위한 /etc/logrotate.d/td-agent의 log경로도 수정)

fluentd config 설정

logback 로그패턴 %d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} ${LOG_LEVEL_PATTERN:-%5p} [${APP_NAME:-},%X{X-B3-TraceId},%X{X-B3-SpanId},%X{X-Span-Export}] ${PID:- } --- [%15.15t] %-40.40logger{39} [%4.4L] : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

fluentd-client 정보 (각 서비스의 log파일을 읽어 fluentd aggregator로 전송한다) /etc/td-agent/td-agent.conf 파일

fluentd-aggregator 정보 (각 서비스의 log정보를 받아 elasticsearch로 전송한다) /etc/td-agent/td-agent.conf 파일

참고 https://docs.fluentd.org/v1.0/articles/quickstart

실행하기

  • systemd If you want to customize systemd behaviour, put your td-agent.service into /etc/systemd/system

  • init.d

    Please make sure your configuration file is located at /etc/td-agent/td-agent.conf

테스트(Post Sample Logs)

td-agent.conf에 input을 HTTP로 설정하고 output을 stdout으로 설정하여 테스트 해본다.

http type으로 지정 시 해당 포트로 http 요청을 받을 수 있게된다.

td-agent.conf

/var/log/td-agent/td-agent.log에서 output을 확인한다.

2. Elastricsearch

8G 이하의 서버에서는 정상작동 안할 수 있음 출처

yum package

repository정보 추가 /etc/yum.repos.d/elasticsearch.repo

출처

Configuring elasticsearch

설정파일 경로confi 항목 상세 /etc/elasticsearch/elasticsearch.yml /etc/sysconfig/elasticsearch host 정보를 0.0.0.0 으로 설정

Running kibana with systemd

서버 시작시 자동 실행 등록

서비스 시작

tar 실행

it is recommended that you use the Oracle JDK version 1.8.0_131

binary를 통해 직접 설치 할 경우 vm 설정이 자동으로 적용되지 않으므로 /etc/sysctl.conf 파일에 vm.max_map_count=262144 설정을 추가해 줍니다. 참고

출처

3. Kibana

yum package

repository정보 추가 /etc/yum.repos.d/kibana.repo

출처

Configuring kibana

설정파일 경로 /etc/kibana/kibana.ymlconfi 항목 상세 host 정보를 0.0.0.0 으로 설정

Running kibana with systemd

서버 시작시 자동 실행 등록

서비스 시작

tar로 설치하는 경우

출처

Last updated