728x90
반응형
Docker를 활용한 Elasticsearch 설치
#elasticsearch image 다운
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.0
#다운된 이미지 확인
docker images
#elasticsearch container구동
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.15.0
#프로세스 확인
docker ps -a
#포트확인
netstat -anp | grep LIST | grep docker
#설치테스트 확인
curl -X GET "http://127.0.0.1:9200/"
기존 elasticsearch 컨테이너 중지 및 삭제
$ docker stop elasticsearch
$ docker rm elasticsearch
나머지 이미지도 다운 및 네트워크 추가
#kibana 이미지 다운로드
$ docker pull docker.elastic.co/kibana/kibana:7.15.0
#logstash 이미지 다운
$ docker pull docker.elastic.co/logstash/logstash:7.15.0
#이미지 확인
$ docker images
#docker 네트워크 추가 및 확인
$ docker network create elastic
$ docker network ls
#elasticsearch 컨테이너 추가 및 구동
$ docker run -d --network=elastic --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.15.0
$ docker ps
logstash config 설정
$ mkdir -p /root/apps/logstash
$ vi /root/apps/logstash/logstash.conf
input {
beats {
port => 5044 # 지정된 포트로 filebeat의 데이터를 전송받음
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
user => elastic
password => password #패스워드 설정 입력
index => "suricata-log" # DB의 데이터베이스 명
document_type => "log" # DB의 테이블 명
}
}
Logstash, Kibana 컨테이너 구동
$ mkdir /usr/share/logstash/pipeline/logstash.conf
#logstash 컨테이너 구동
$ docker run -d --name logstash --network elastic -p 5044:5044 docker.elastic.co/logstash/logstash:7.15.0
#kibana 컨테이너 추가 및 구동
$ docker run -d --network=elastic --name kibana -p 5601:5601 docker.elastic.co/kibana/kibana:7.15.0
$ docker ps
방법1) Filebeat 이미지 다운 및 Suricata 연동
# filebeat 이미지다운
$ docker pull docker.elastic.co/beats/filebeat:7.15.0
$ mkdir -p /root/apps/filebeat
$ vi /root/apps/filebeat/filebeat.yml
filebeat.prospectors:
- input_type: log
paths:
- /var/log/suricata/eve.json
output:
logstash:
hosts: ["logstash:5044"]
# Filebeat 컨테이너 실행
$ docker run -d --name filebeat --network elastic -v /var/log/suricata/eve.json:/usr/share/filebeat/logs/suricata_log docker.elastic.co/beats/filebeat:7.15.0
방법2) Filebeat 설치와 Suricata 연동
1. filebeat 설치
$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.15.0-linux-x86_64.tar.gz
$ tar -xvzf filebeat-7.15.0-linux-x86_64.tar.gz
$ mv filebeat-7.15.0-linux-x86_64 filebeat
$ cd filebeat
2. filebeat.yml에서 다음 내용을 수정
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/suricata/*.log
setup.kibana:
host: "localhost:5601" #VPC인 경우 localhost 대신 private ip 주소 입력
output.elasticsearch:
hosts: ["localhost:9200"] #VPC인 경우 localhost 대신 private ip 주소 입력
username: "elastic"
password: "<password>"
3. suricata의 모듈 활성화
$ ./filebeat modules enable suricata
$ ./filebeat setup -e
setup 명령은 Suricata 로그를 Elasticsearch에 인덱싱하기 위한 setting / mapping 정보를 가진 index template를 자동으로 설정하고 ingest pipeline을 세팅하고 그 다음에 dashboard를 생성하는 세 가지 작업을 모두 수행한다.
여기까지 수행 후 Kibana>Dashboard 에서 Suricata 검색 시 Events/Alerts 대시보드가 잘 생성된 것을 확인할 수 있다.
4. 서비스 등록
$ vi /lib/systemd/system/filebeat.service
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/home/ubuntu/filebeat/filebeat -c /home/ubuntu/filebeat/filebeat.yml -path.data /home/ubuntu/filebeat/data
Restart=always
[Install]
WantedBy=multi-user.target
5. filebeat 실행
$ systemctl daemon-reload
$ systemctl enable filebeat
$ systemctl start filebeat
728x90
반응형
'ETC > ELK' 카테고리의 다른 글
Elasticsearch 기본 개념과 CRUD 사용법 알아보기 (0) | 2022.04.25 |
---|---|
Docker를 활용한 filebeat, ELK stack 설치하기 (AWS EC2 Ubuntu 20.04) (0) | 2021.10.07 |