ElasticSearch 활용 사례

SYSTEM/TECH / /
반응형

elasticsearch 로 하고 있는것들... 

 

최초 개발이유

 

1. 통합 로그 검색 시스템이 필요 

   (장애나 이슈 발생시 연관된 수많은 Node(서버,스위치,스토리지 등등) 의 Log를 일일이 접속해서 들여다본다는건 노가다 + 눈알 빠짐)

 

2. 공짜면서 운영이 쉬워야함 (splunk 등도있으나 결국 비용 발생)  / lucene query는 간단하고 배우기 쉽다.

 

이외 elasticsearch 의 장점 및 기능은 인터넷 검색 .....

 

 

 

 

 

1. SaaS 서비스 동시 접속자(ccu) 체크 

   접속자별 지도 표기(geoip) 

  



   하루에 한번 powershell 로 전체 VM(Guest) 리스트 parsing -> VM 리스트 (대략 10,000대 정도) -> 리눅스 script (winexe 활용) -> 
  -> VM별 특정 프로세스(application) ESTABILISH 카운트 -> IP리스트만 parsing 하여 파일로 저장 ->
  -> Logstash (파싱,Geoip) -> elasticsearch 저장 -> grafana view

 

 

 

 

 

 

2. 전체 호스트 서버(hypervisor)  중요 시스템 syslog 저장 및 알람

 

  리눅스 서버 : rsyslog 사용   

  윈도우 서버 : winlogbeat 사용 

 

winlogbeat.yml

 

winlogbeat.event_logs:

  - name: System

    level: critical, error, warning, information

    event_id: 5120, 1129, 129, 61110, 61117, 153, 17, 6006, 1074 <-중요한 이벤트 code만 

    ignore_older: 168h

 

output.elasticsearch:

  hosts:

    - 1xx.xx.xx:9200

 

logging.to_files: true

logging.files:

  path: C:/ProgramData/winlogbeat/Logs

logging.level: info

 

   알람 : 윈도우: 특정 이벤트 code 예: 5120, 6006 중요한것들

           

  스토리지, 스위치 logs : syslog ->  rsyslog VM + filebeat  -> logstash VM -> elasticsearch VM

  알람 : 스토리지 : disk fault, Queue depth over, scsi.cmd.notReadyCondition  <- 서비스 운영상 중요한 로그들 (이외 다수)

 

반응형

 

3. IP 관리 자동화

 

filebeat 사용

 

filebeat.yml 핵심 요약 

 

 

- input_type: log

  paths:

    - /root/.../ipam/filebeat/*-sumfile.log

  document_type: ipam

 

- input_type: log

  paths:

    - /root/.../ipam/filebeat/*-offip.log

  document_type: offip

 
output.logstash:
  hosts: ["1xx.xxx.xx:5000"]
 

 

    매일 하루에 한번 98개 IP 대역에 대하여 ->  masscan 으로 특정 Port 및 ICMP 체크 

    -> 사용중인 IP, 사용 Off IP Parsing 하여 file로 저장 -> filebeat -> logstash grok  파싱  -> 

    -> elastic 저장 -> grafana view

 

 

view 부분은 elastic kibana로도 가능하지만 개인적으로 grafana가 더 쉽고 편해서..

    

------------------------------------------------------------------------------------------------------

 

logstash 환경 설정

 

input {

  beats {

    port => 5000

   }

 

  file {

    type => "Saas"

    path => "/data/script/GEOIP/log/ip-list"

    start_position => "beginning"

  }

}

 

filter {

  if [type] == "apache" {

     grok {

       match => { "message" => "%{COMBINEDAPACHELOG}" }

    }

 }

 

  if [type] == "syslog" {

   grok {

            match => [ "message", "%{SYSLOGLINE}" ]

    }

  }

 

  if [type] == "ipam" {

   grok {

            patterns_dir => "/data/pattern/ipam"

            match => [ "message", "%{IPAM}" ]

    }

  }

 

  if [type] == "offip" {

   grok {

            patterns_dir => "/data/pattern/ipam"

            match => [ "message", "%{IPAM}" ]

    }

  }

 

  if [type] == "Saas" {

    grok {

      match => { "message" => "%{IP:clientip}" }

    }

    geoip {

      source => "clientip"

      }

  }

}

 

output {

 if [type] == "apache" {

    elasticsearch { hosts => ["x.x.x.x:9200"]

    index => "filebeat-%{+YYYY.MM.dd}"

  }

 }

 

 if [type] == "syslog" {

    elasticsearch { hosts => ["x.x.x.x:9200"]

    index => "syslog-%{+YYYY.MM.dd}"

  }

 }

 

 if [type] == "ipam" {

    elasticsearch { hosts => ["x.x.x.x:9200"]

    index => "ipam-%{+YYYY.MM.dd}"

  }

 }

 

 if [type] == "offip" {

    elasticsearch { hosts => ["x.x.x.x:9200"]

    index => "offip-%{+YYYY.MM.dd}"

  }

 }

 

 if [type] == "Saas" {

  elasticsearch { hosts => ["x.x.x.x:9200"]

  index => "Saas-%{+YYYY.MM.dd}"

  }

 }

 

}

 

elasticsearch 활용 사례 더보기

 

 

elasticsearch 활용 사례 보안 위협 탐지

전체 서비스 평일 평균 엘라스틱서치 클러스터로 쌓이는 전체 보안 이벤트 로그는 아래와 같은 상황이다. 날짜별 Document 수는 3억2천~3억4천건 정도... 가끔 불특정 다수 해외 IP에서 지속적으로

rootkey.tistory.com

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기