출처 - http://tallstory83.blogspot.kr/2016/06/elk-elasticsearch-logstash-kibana_35.html
ELK (ElasticSearch + Logstash + Kibana) 구성
Elasticsearch와 Logstash를 사용한 로그 수집 및 분석을 위한 환경 구축 절차 정리
nginx 로그를 수집하는 예제로 진행
설치 정보
- 사용 OS: ubuntu 14.04 Server
- 프로그램
.Elasticsearch 2.3.3
.Kibana 4.5.1
.Logstash 2.3.2
사전 준비
1. Java 1.8 설치
Elasticsearch를 실행하기 위해서는 java가 우선 설치되어 있어야 됨.
참고: http://tallstory83.blogspot.kr/2016/06/ubuntu-oracle-java.html
2. nginx 설치
수집용 nginx log 작성을 위해 설치
$ sudo apt-get install nginx
ELK Stack 구성
테스트를 위한 구성으로, 모두 standalone으로 동작하도록 구성함
logstash와 nginx, elasticsearch가 모두 하나의 OS 위에 설치된 것으로 구성
설치는 모두 사용자 홈디렉토리를 기준으로 작업
1. Elasticsearch 설치
Elasticsearch 다운로드
Elasticsearch 실행
Elasticsearch 실행 확인
2. logstash 설치
2.1 nginx 로그 접근 권한 변경
logstash가 nginx의 log를 읽을 수 있도록 log 권한 변경
임시 수정 방법: log 다시 작성시 권한 변경 됨.
영구 수정 방법
2.2 logstash 설치 / nginx log용 설정파일 작성
nginx.conf에 아래 내용 작성
logstash 실행
3. kibana 설치
kibana기본 설정을 사용하면 localhost:9200 의 elasticsearch에 연결 되도록 되어있다.
설정파일: ./kibana-4.5.1-linux-x64/config/kibana.yml
필드:
# The Elasticsearch instance to use for all your queries.
# elasticsearch.url: "http://localhost:9200"
Browser를 사용해 http://localhost:5601/ 에 연결하면, 아래 Status 화면을 확인 할 수 있다.
Dashboard를 접근하려면 아래 주소로 연결한다.
http://localhost:5601/app/kibana#/dashboard
설치 정보
- 사용 OS: ubuntu 14.04 Server
- 프로그램
.Elasticsearch 2.3.3
.Kibana 4.5.1
.Logstash 2.3.2
사전 준비
1. Java 1.8 설치
Elasticsearch를 실행하기 위해서는 java가 우선 설치되어 있어야 됨.
참고: http://tallstory83.blogspot.kr/2016/06/ubuntu-oracle-java.html
2. nginx 설치
수집용 nginx log 작성을 위해 설치
$ sudo apt-get install nginx
ELK Stack 구성
테스트를 위한 구성으로, 모두 standalone으로 동작하도록 구성함
logstash와 nginx, elasticsearch가 모두 하나의 OS 위에 설치된 것으로 구성
설치는 모두 사용자 홈디렉토리를 기준으로 작업
1. Elasticsearch 설치
Elasticsearch 다운로드
1 2 3 | $ cd ~ $ wget https: //download .elastic.co /elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2 .3.3 /elasticsearch-2 .3.3.zip $ unzip elasticsearch-2.3.3.zip |
Elasticsearch 실행
1 2 | $ cd elasticsearch-2.3.3 /bin $ . /elasticsearch |
Elasticsearch 실행 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ curl http: //localhost :9200/ { "name" : "Quincy Harker" , "cluster_name" : "elasticsearch" , "version" : { "number" : "2.3.3" , "build_hash" : "218bdf10790eef486ff2c41a3df5cfa32dadcfde" , "build_timestamp" : "2016-05-17T15:40:04Z" , "build_snapshot" : false , "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" } |
2. logstash 설치
2.1 nginx 로그 접근 권한 변경
logstash가 nginx의 log를 읽을 수 있도록 log 권한 변경
임시 수정 방법: log 다시 작성시 권한 변경 됨.
1 | $ sudo chmod 644 /var/log/ *.log |
영구 수정 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $ cat /etc/logrotate .d /nginx /var/log/nginx/ *.log { size 10M missingok rotate 52 compress delaycompress notifempty create 0644 www-data adm sharedscripts prerotate if [ -d /etc/logrotate .d /httpd-prerotate ]; then \ run-parts /etc/logrotate .d /httpd-prerotate ; \ fi \ endscript postrotate invoke-rc.d nginx rotate > /dev/null 2>&1 endscript } |
2.2 logstash 설치 / nginx log용 설정파일 작성
1 2 3 4 | $ wget https: //download .elastic.co /logstash/logstash/logstash-2 .3.2. tar .gz $ tar zxvf logstash-2.3.2. tar .gz $ cd logstash-2.3.2 $ mkdir etc |
nginx.conf에 아래 내용 작성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | $ cat . /etc/nginx .conf input { file { type => "nginx" start_position => "beginning" path => [ "/var/log/nginx/*.log" ] } } filter { if [ type ] == "nginx" { # NGINX access log entry grok { match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}" ] overwrite => [ "message" ] } mutate { convert => [ "response" , "integer" ] convert => [ "bytes" , "integer" ] convert => [ "responsetime" , "float" ] } geoip { source => "clientip" target => "geoip" add_tag => [ "nginx-geoip" ] } date { match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ] remove_field => [ "timestamp" ] }., useragent { source => "agent" } # NGINX error log grok { match => [ "message" , "(?<timestamp>%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}[- ]%{TIME}) \[%{LOGLEVEL:severity}\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage}(?:, client: (?<client>%{IP}|%{HOSTNAME}))(?:, server: %{IPORHOST:server})(?:, request: %{QS:request})?(?:, upstream: \"%{URI:upstream}\")?(?:, host: %{QS:host})?(?:, referrer: \"%{URI:referrer}\")" ] overwrite => [ "message" ] } geoip { source => "client" target => "geoip" add_tag => [ "nginx-geoip" ] } date { match => [ "timestamp" , "YYYY/MM/dd HH:mm:ss" ] remove_field => [ "timestamp" ] } } } output { stdout { } elasticsearch { hosts => [ "localhost:9200" ] } } < /client >< /timestamp > |
logstash 실행
1 | $ . /bin/logstash -f etc /nginx .conf |
3. kibana 설치
1 2 3 4 | $ wget https: //download .elastic.co /kibana/kibana/kibana-4 .5.1-linux-x64. tar .gz $ tar zxvf kibana-4.5.1-linux-x64. tar .gz $ cd . /kibana-4 .5.1-linux-x64 /bin $ . /kibana |
kibana기본 설정을 사용하면 localhost:9200 의 elasticsearch에 연결 되도록 되어있다.
설정파일: ./kibana-4.5.1-linux-x64/config/kibana.yml
필드:
# The Elasticsearch instance to use for all your queries.
# elasticsearch.url: "http://localhost:9200"
Browser를 사용해 http://localhost:5601/ 에 연결하면, 아래 Status 화면을 확인 할 수 있다.
Dashboard를 접근하려면 아래 주소로 연결한다.
http://localhost:5601/app/kibana#/dashboard
'Develop > Study' 카테고리의 다른 글
HTML 코드 작성규칙 (0) | 2019.07.03 |
---|---|
소스 내 주석 (0) | 2018.11.02 |
GNB 란 (0) | 2016.10.24 |
웹표준 코딩의 장점 (0) | 2016.10.24 |
특수문자, 용어 등 (0) | 2016.10.24 |