본문 바로가기

문돌이 존버/ELK 스터디

ELK 보안 설정과 logstash conf 파일 기초

반응형

보안 설정

elasticsearch 보안 설정을 위해선 elasticsearh.yml에서 다음과 같은 코드를 추가하시면 됩니다. 

xpack.security.enabled: true 

이후 bin/elasticsearch-setup-passwords interactive를 커멘드라인에 입력한 후 비밀번호를 설정하면 되겠습니다. 

kibana 역시 보안 설정을 위해 kibana.yml에서 다음과 같은 코드를 추가하시면 됩니다.

elasticsearch.username: "user name" 
elasticsearch.password: "password"
xpack.security.encryptionKey: "something_at_least_32_characters"
xpack.security.sessionTimeout: 600000

elasticsearch & kibana가 서버에서 잘 돌아가고 있는지 확인

ps -ef | grep elasticsearch
ps -ef | grep kibana 

<출처: ELK 홈페이지>

logstash conf파일

conf파일은 본인이 원하는 대로 설정하는 것으로 편하게 만들면 됩니다. 따로 어느 폴더에 저장된 파일을 수정하는 것이 아니라 sudo vi logstash-simple.conf 명령어를 통해 새로운 파일을 생성하고 작업을 진행하는 것입니다. 

logstash는 자동으로 timestamp 값을 현재 입력된 시간으로 설정합니다. 만약 각 데이터에 특정 시간을 timestamp 값으로 설정하고 싶다면 아래와 같이 filter을 사용하면 됩니다. 

아래 코드는 임성현님의 블로그를 참고했습니다.

input { 
    stdin { # stdin의 경우, 커멘드라인에 직접 데이터를 입력합니다.
        codec => json
     }
}
filter {
    date{
        match => ["connect_date", "yyyyMMddHHmm"] #connect_date에 해당하는 내용을 날짜 형식으로 변환
    }

}
output {
    stdout{ # stdout의 경우, 커멘드라인에 결과값이 출력됩니다. 
        codec => rubydebug
    }
    elasticsearch {
    hosts => ["localhost:9200"]
    index => "logstash-simple"
    user => "user name"
    password => "password"
    }
}

아래 conf 파일은 허민석씨의 인프런 무료강의를 참고하면서 따라해봤습니다. 주의할 점은 처음 데이터를 logstash에 입력할 때 sincedb_path => "/dev/null"을 설정하시면 안된다는 것입니다. 만약 동일한 데이터를 다시 입력하게 된다면 sincedb_path => "/dev/null"이 필요합니다. 저 같은 경우, 처음 csv 파일을 logstash에 입력할 때부터 설정해두니 오류가 발생했네요. 

input {
  file {
    path => "/Users/"labtop name"/Downloads/logstash-7.7.1/populationbycountry19802010millions.csv"
    start_position => "beginning" #디폴트 값은 "end": 실시간 log는 최신 것부터 읽어야 하기 때문 
    #sincedb_path => "/dev/null"  
    #최초로 logstash에 데이터를 입력한 이후에는 start_position을 무시하고 sincedb_path에 저장된 부분부터 읽기 시작
    #개발이나 테스트 단계에서는 sincedb 정보를 저장하지 않도록 "/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://localhost:9200"]
        index => "population-data"
        user => "user name"
        password => "password"
    }
    stdout {}
}

참! 따로 설정한 logstash conf 파일을 실행하려면 logstash 폴더 내부에서 다음과 같은 명령어를 입력하면 됩니다. 특히 "-f"에 주의하셔야 하는데, 이유는 내가 따로 설정한 conf 파일을 실행하기 위해 꼭 필요한 조건이기 때문입니다. "-e"를 입력하면 command로 conf 설정을 하게 됩니다. 

bin/logstash -f /Users/"labtop name"/Downloads/logstash-7.7.1/populationbycountry19802010millions.csv
728x90
반응형