elasticsearch의 데이터 타입중 geoip가 있다. 이 데이터는 kibana에서 지도에서 표시가 가능하다.
apache-access로그의 client IP를 통해 지도에 데이터를 표시하는 예제를 만들어 보자
121.160.132.126 - - [30/Jan/2017:14:24:02 +0530] "GET /index HTTP/1.1" 200 200
common 패턴의 apache access 로그이다. 여기에있는 client IP를 통해 geo_point 데이터를 추출해 Kibana를 통해 지도에 표시해보자
apache access 로그 설정은 아래 글을 참조하면 된다.
http://gyrfalcon.tistory.com/entry/Apache-Tomcat-access-log-%EC%84%A4%EC%A0%95
1. Logstash
logstash의 config파일을 다음과 같이 작성한다. input은 간단히 stdin으로 입력을 받자
그리고 grok을 통해 binding한다. clientip 로 ip가 들어온다. 이 데이터를 geoip를 통해 매핑할 수 있다.
output은 localhost로 미리 세팅해 놓았다.
이제 logstash를 실행하자.
sudo bin/logstash -f logstash-geoip.conf
아래 elasticsearch 설정을 하고 log 데이터를 입력해보자
2. Elasticsearch Mapping
index template를 등록해 내가 geoip.location의 type을 geo_point로 매핑하자.
위 template에 대한 설명은 생략한다. 나도 지금공부단계라 자세히는 모른다.
다른 예제에는 CURL로 되어있는데 난 참 불편하다. 그래서 insomnia 라는 앱을 사용했다. 참 편하다
localhost:9200/_template/access 로 template를 등록한다. access-* 로 index 패턴을 등록했기 때문에 위에서 설정한 access-YYYY.MM.DD 인덱스가 만들어졌을 때 자동으로 매핑된다.
3. 데이터 입력
위에서 실행한 logstash에 아래 로그를 입력하자
121.160.132.126 - - [30/Jan/2017:14:24:02 +0530] "GET /index HTTP/1.1" 200 200
4. Kibana를 통해 지도에 표시
index patterns에 logstash에서 설정한 index대로 access-*를 설정하자.
geoip 데이터가 잘 들어왓는지 discover 페이지를 통해 확인해보자
이제 지도에 표시해보자.
vosualize 페이지에 Tile Map을 선택한다. index pattern을 access-*를 선택하고 geo_point 컬럼을 지정한다.
elasticsearch template에 설정한대로 geoip.location을 지정한다.
그림 아래 같이 지도에 잘 표시가 된다.
끝
'Big Data > Elastic stack' 카테고리의 다른 글
elastic stack #5 beats 소개 & quickstart (0) | 2017.03.18 |
---|---|
elastic stack #4 kibana 소개 & quick start (0) | 2017.03.14 |
elastic stack #3 logstash 소개 & quick start (0) | 2017.03.13 |
elastic stack #2 elasticsearch 설치 & quick start (0) | 2017.03.12 |
elastic stack #1 elasticsearch 소개 (0) | 2017.03.12 |