아무거나

[logstash] 실전 인구분석 본문

Data Store/Elastic Stack

[logstash] 실전 인구분석

전봉근 2019. 5. 20. 18:13
반응형

 

logstash.conf
0.00MB
populationbycountry19802010millions.csv
0.05MB

 

[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개의 나라를 확인해보자.

반응형
Comments