Thursday, July 5, 2018

ELK 설치

1. What is ELK?

= Elasticsearch + Logstash + Kibana

Elasticsearch: Apache Lucene 기반의 검색 서버
Logstash: log 수집기
Kibana: BI tool

2. Downloads

; Ubuntu docker 에 설치

* Elasticsearch:

$> wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz

* Logstash:


* Kibana:


3. Install

docker instance 2개: 1 for apache + logstash, 2 for elasticsearch + kibana

docker instance 에 java 필요 (4번 java 8 설치 참조)

§ Apache2 설치 - 데모서버

$> sudo apt-get update
$> sudo apt-get install apache2

* log format 추가
  • elasticsearch 가 JSON 형식의 API를 사용하기 때문
  • /etc/apache2/apache2.conf 파일에 아래 log format 추가
  • LogFormat "{ \"time\":\"%t\", \"clientip\":\"%a\",\"host\":\"%V\", \"request\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }" json_format

* log file 추가

  • /etc/apache2/sites-enabled/000-default.conf 파일에 아래 log 파일 추가
  • CustomLog ${APACHE_LOG_DIR}/jsonaccess.log json_format

$> sudo /etc/init.d/apache2 restart

cf)
index.html 위치: /var/www/html
log 위치: /var/log/apache2/access.log
파일 위치변경: /etc/apache2/sites-enabled/000-default.conf 파일에서 log 위치 및 home directory 위치 변경 가능
Timezone 변경: /etc/apache2/envvars 에서 TZ="Asia/Seoul" 추가
모든 변경 후에는 서버 재시작: /etc/init.d/apache2 restart

§ logstash 설정

$> tar -xzvf logstash-6.3.0.tar.gz
$> mv logstash-6.3.0 logstash
$> cd logstash
$logstash> mkdir conf
$logstash> touch conf/logstash.conf

* logstash.conf 파일에 input / filter / output 을 아래와 같이 설정
input{
        file{
                path => "/var/log/apache2/jsonaccess.log"
                type => apache
                codec => json
                start_position => beginning
        }
}
filter{
        geoip{source => "clientip"}
}
output{
        elasticsearch{ hosts => "192.168.56.102:9200" }    // hosts에는 맞는 주소값 입력
        stdout { codec => rubydebug }
}

$logstash> bin/logstash -f conf/logstash.conf

§  elasticsearch 설정

$> tar -xzvf elasticsearch-6.3.0.tar.gz
$> mv elasticsearch-6.3.0 elasticsearch
$> cd elasticsearch
$elasticsearch> echo "bin/elasticsearch -d -p es.pid" > start.sh
$elasticsearch> echo "kill `cat es.pid`" > stop.sh
$elasticsearch> chmod 755 start.sh stop.sh
$elasticsearch> start.sh

* 외부 접근 설정
config/elasticsearch.yml 파일의 network.host 를 0.0.0.0 으로 변경

* vm.max_map_count 에러 발생시 (docker 의 경우) host 에서 아래 실행
$> sudo sysctl -w vm.max_map_count=262144


§ kibana 설정

$> tar -xzvf kibana-6.3.0_linux-x86_64.tar.gz
$> mv kibana-6.3.0_linux-x86_64 kibana
$> cd kibana
$kibana> bin/kibana > 2>&1 &

* 외부 접근 설정
config/kibana.yml 파일의 server.host=0.0.0.0 으로 변경

4. Java 8 설치

$> sudo add-apt-repository ppa:webupd8team/java
$> sudo apt-get update
$> sudo apt-get install oracle-java8-installer

* profile 파일에 JAVA_HOME 추가
  • export JAVA_HOME=/usr/lib/jvm/java-8-oracle
  • export PATH=$PATH:$JAVA_HOME/bin













No comments:

Post a Comment

REST API 설계

좋은 글이 있어 링크 REST API의 이해와 설계-#1 개념 소개 REST API의 이해와 설계-#2 API 설계 가이드 REST API의 이해와 설계-#3 API 보안 Thanks to 조대협