Monitoring

Docker 사용하여 ELK 설치 (Elasticsearch, Logstash, Kibana)

황동리 2024. 9. 11. 14:26
반응형

이번엔 ELK 설치를 해보겠습니다.

 

먼저 Elasticsearch를 설치해보겠습니다.

Elasticsearch 설치

먼저 elasticsearch 이미지를 받아주겠습니다.

# docker pull docker.elastic.co/elasticsearch/elasticsearch:8.15.1

 

그리고 docker 볼륨을 생성해줍니다.

# docker volume create elasticsearch

 

생성해주면, /var/lib/docker/volume/elasticsearch 디렉터리에 생성이 됩니다.

볼륨을 생성해주는 이유는 elasticsearch의 설정 파일을 로컬에도 가지고 있기 위함 입니다.

이제 컨테이너 실행을 해줍니다.

# docker run -itd --name es -p 9200:9200 -m 1GB -v elasticsearch:/usr/share/elasticsearch docker.elastic.co/elasticsearch/elasticsearch:8.15.1

elasticsearch.yml 설정

저 같은 경우에는 테스트 환경에서 사용하는 것 이라서 클러스터 구성이 아닌 단일 노드로 사용하고, 보안 설정을 꺼두었습니다.

cluster.name: "docker-cluster"

# elasticsearch에 접근 가능한 IP 설정
# 현재는 모두 접근 가능하도록 설정
network.host: 0.0.0.0

# 단일 노드 사용
discovery.type: single-node 

#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
#
# The following settings, TLS certificates, and keys have been automatically
# generated to configure Elasticsearch security features on 10-09-2024 07:53:30
#
# --------------------------------------------------------------------------------

# Enable security features

# 인증, 권한 부여, TLS 암호화 끄기
xpack.security.enabled: false

xpack.security.enrollment.enabled: true

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents

# SSL 인증 끄기
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes

# 클러스터간 SSL 인증 끄기
xpack.security.transport.ssl:
  enabled: false
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later

# 단일 노드로 사용할 것 이기 때문에, 마스터 노드 지정 설정 주석
#cluster.initial_master_nodes: ["bd7e3d35b5e4"]

#----------------------- END SECURITY AUTO CONFIGURATION -------------------------

 

설정 변경 후 컨테이너 재시작

# docker restart es

Kibana 설치

마찬가지로 이미지를 받아주고 볼륨을 생성해줍니다.

# docker pull docker.elastic.co/kibana/kibana:8.15.1
# docker volume create kibana

 

이제 컨테이너를 실행 해줍니다.

# docker run -itd --name kibana01 -v kibana:/usr/share/kibana -p 5601:5601 docker.elastic.co/kibana/kibana:8.15.1

kibana.yml 설정

정상적으로 kibana 컨테이너가 실행이 되면 kibana.yml 파일의 설정을 변경 해줍니다.

# Default Kibana configuration for docker target

# 모든 IP 대역에서 kibana 서버에 접근 가능
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"

# elasticsearch 서버와 연결하기 위한 설정
elasticsearch.hosts: [ "http://<elasticsearch-IP>:9200" ]

monitoring.ui.container.elasticsearch.enabled: true

 

설정 변경 후 컨테이너 재시작

# docker restart kibana

 

이후 대시보드 접근 확인
URL에 http://kibana-IP:5601 입력하여 접근

Logstash 설치

위와 동일하게 이미지 받고, volume 생성을 해줍니다.

# docker pull docker.elastic.co/logstash/logstash:8.15.1
# docker volume create logstash

 

컨테이너 실행

# docker run -itd -v logstash:/usr/share/logstash docker.elastic.co/logstash/logstash:8.15.1

 

다음에는 elk 사용법에 대해 공부해보겠습니다.

감사합니다.

반응형

'Monitoring' 카테고리의 다른 글

ELK 연결 구성 (filebeat 포함)  (3) 2024.09.24
filebeat 설치 해보기  (0) 2024.09.13