Skip to main content

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













Comments

Popular posts from this blog

VMWare Host-Only network 설정

Host-only network 설정시 삽질한 내용 기록해 두어야겠다.

Host OS: Windows 10
Guest OS: Windows 7

Host에 VMWare가 추가한 adapter 두개: VMnet1(host-only), VMne8(NAT)

진행내용)
1. Guest OS로 Windows 7 host-only 모드로 설치.
2. 그러면 Host OS(VMnet1)는 host-only network상의 gateway가 됨.
3. VMnet1에 셋팅된 주소가 Host의 IP
4. Guest에서 Host로 3번의 IP로 ping test
5. Guest OS 방화벽 비활성(중요)
6. host에서 Guest OS에 설정된 IP로 ping test

예제)

VMnet1 ip: 192.168.182.1
Guest ip: 192.168.182.123

from Guest
$> ping 192.168.182.1

from HOST
$> ping 192.168.100.104

JavaScript Coding Convention

Intro javascript(이하 js)로 개발함에 있어서 개발자들간에 지켜야할 코딩 규약을 정하고자 한다. ConventionJavascript Filefile encoding은 UTF-8로 한다.file extention은 .js로 한다. ex) Test.jsjavascript 코드는 기본적으로 HTML 파일에 들어가지 않는것을 권장한다.HTML에서 javascript include는 <script src="filename.js"> 형태로 기술한다.Indentation & Lineindent는 space 4칸으로 한다.(tab 지양)line length는 가능한 80 line에 맞추도록 한다.DeclarationVariable변수 선언은 반드시 var 를 사용한다.var statement는 function body의 최상단에 위치한다.var statement는 alphabetical ascending order로 배치 될수 있도록 한다.변수선언 샘플 ...