일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Git
- springboot
- java
- Spring Batch
- ReactJS
- 맛집
- db
- JVM
- devops
- Web Server
- Design Patterns
- Oracle
- elasticsearch
- Gradle
- laravel
- tool
- linux
- php
- MySQL
- Spring Boot
- 요리
- redis
- IntelliJ
- it
- jsp
- Spring
- javascript
- jenkins
- AWS
- ubuntu
- Today
- Total
아무거나
[logstash] 실전 인구분석 본문
[logstash] 실전 인구분석
1. 데이터는 catalog.data.gov/dataset 에서 직접 다운받도록 한다. ( 해당 사이트는 데이터가 많으므로 알아놓으면 좋다. )
- 세계 인구에 대한 dataset을 다운받는다. 검색어에 population by country(1980 - 2010) 로 검색한다.
- csv클릭하여 직접 다운받자(데이터가 NA나 --로 되어있는걸 지우는 작업을 하자. -> 해당 변경된 파일 첨부해놓음)
2. sudo vi logstash.conf 생성하자
// 파일에서 input을 받을 것이고 path는 절대경로로 지정하고 start_position을 beginning로 설정
// 현재 logstash 버전에서는 end가 기본설정이다 하지만 우리는 파일에서 받기 때문에 처음부터 읽어야한다. 그러므로 beginning으로 설정하자.
// end가 default로 설정되어있는 이유는 우리가 logstash로 항상 stream데이터를 받으므로 새로운 setdata를 받으려면 뒤에서부터 읽기 때문이다.
// sincedb_path "/dev/null" 로 설정하지 않으면 한번들어간 데이터를 logstash가 넣지않는다 그러므로 무조건 설정하자!
// filter는 csv의 데이터는 ,로 구분되어있으므로 separator로 사용하자 columns은 Country 1980~2010 까지 라고 명시한 부분이다.
// 그리고 csv에 표현된 모든 데이터를 1980~2010까지의 데이터를 숫자로 표시하기 위해서 float로 설정을 해두었다.
// output은 elasticsearch 로 보내는걸로 설정해 두었다.
// stdout은 log를 볼 수 있게 넣어 놓았다.
# [logstash.conf]
input {
file {
path => "/home/ubuntu/populationbycountry19802010millions.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["Country","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010"]
}
mutate {convert => ["1980", "float"]}
mutate {convert => ["1981", "float"]}
mutate {convert => ["1982", "float"]}
mutate {convert => ["1983", "float"]}
mutate {convert => ["1984", "float"]}
mutate {convert => ["1985", "float"]}
mutate {convert => ["1986", "float"]}
mutate {convert => ["1987", "float"]}
mutate {convert => ["1988", "float"]}
mutate {convert => ["1989", "float"]}
mutate {convert => ["1990", "float"]}
mutate {convert => ["1991", "float"]}
mutate {convert => ["1992", "float"]}
mutate {convert => ["1993", "float"]}
mutate {convert => ["1994", "float"]}
mutate {convert => ["1995", "float"]}
mutate {convert => ["1996", "float"]}
mutate {convert => ["1997", "float"]}
mutate {convert => ["1998", "float"]}
mutate {convert => ["1999", "float"]}
mutate {convert => ["2000", "float"]}
mutate {convert => ["2001", "float"]}
mutate {convert => ["2002", "float"]}
mutate {convert => ["2003", "float"]}
mutate {convert => ["2004", "float"]}
mutate {convert => ["2005", "float"]}
mutate {convert => ["2006", "float"]}
mutate {convert => ["2007", "float"]}
mutate {convert => ["2008", "float"]}
mutate {convert => ["2009", "float"]}
mutate {convert => ["2010", "float"]}
}
output {
elasticsearch {
hosts => "http://13.125.41.125:9200"
index => "population"
}
stdout {}
}
3. sudo ./logstash -f logstash.conf // logstash를 돌린다.
4. kibana에 접속하여 Management 탭 선택 후 index patterns 선택
- 아까 logstash에서 index를 population으로 지정했으니 create index patterns선택한 후 index patterns에 population을 입력시켜 준고 create버튼 클릭
그러면 데이터가 정상적으로 들어간것을 확인할 수 있다.
5. 좌측 메뉴에 discover 메뉴 선택 후 메뉴에서 population을 선택하면 데이터가 보일것인데 좀 지저분하게 보이므로 정리하자
- 도큐먼트 하나를 클릭한 후 우리가 원하는 country와 1980,2010년의 인구수만 원하므로 돋보기 옆에 네모두개모양 toggle버튼을 각각 클릭하면 정리되어 표시된다.
- 검색어에 korea라고 검색하면 south와 north 라고 검색된다.
6. 5번까지 마친후 좌측메뉴에 Visualize를 선택 후 Vertical bar chart를 선택하고 조건을 지정후 조회한다. 그리고 save로 저장한다.
- Y축 add metric에서 aggregation은 sum으로 선택 field는 1980
- X축에선 Term aggregation을 선택하고 field는 country.keyword를 선택한다.
- size를 10으로 두어 10개의 나라를 확인해보자.
'Data Store > Elastic Stack' 카테고리의 다른 글
[FileBeat] 설치 및 테스트 (0) | 2019.05.22 |
---|---|
[logstash] 실전 주식 분석 (0) | 2019.05.22 |
[logstash] 설치 (0) | 2019.05.20 |
[kibana] 키바나 대시보드(Kibana Dashboard) (0) | 2019.05.17 |
[kibana] 키바나 비주얼라이즈(Kibana Visualize) - 타일맵, 지도에 표시 (0) | 2019.05.17 |