코딩마을방범대
[ELK] 도커를 통해 ELK 구축한 후 Spring boot 로그와 연결하기 본문
ELK란 아래 포스트를 통해 개념을 확인할 수 있다.
구축하기
로그를 쉽게 분석하기 위해 ELK 를 도입하기로 하였고, 도커를 이용해 손쉽게 구축할 예정이다.
우선은 도커 설치가 필요하다.
아래 명령어들을 순차적으로 실행해준다.
1. 도커 설치
# 패키지 목록 업데이트
sudo apt update
# 필수 패키지 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 도커 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 도커 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 도커 설치
sudo apt update
sudo apt install docker-ce
# 도커 서비스 시작 및 자동 시작 설정
sudo systemctl start docker
sudo systemctl enable docker
# 도커 소켓 파일 권한 변경
sudo chown root:docker /var/run/docker.sock
# 도커가 잘 설치되었는지 확인
docker --version
2. 도커 컴포즈 설치
# 도커 컴포즈 설치
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
# 도커 컴포즈 버전 확인
docker-compose --version
Warning: Failed to create the file /usr/local/bin/docker-compose: No such file Warning: or directory
위 오류는 /usr/local/bin 폴더가 없어서 발생하는 오류이므로, 아래 명령어를 통해 폴더를 생성해주면 된다.
sudo mkdir -p /usr/local/bin
3. docker-elk git clone 진행
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
docker-elk 설치 후 폴더를 확인해보면 ELK 의 구성요소가 전부 포함되어 있는 것을 확인해볼 수 있다.
해당 파일들에 대해 아래와 같이 설명할 수 있다.
파일명 | 경로 | 설명 |
.env | / | 환경 변수 정의 (비밀번호 설정 시 6자 이상이여야함!) |
docker-compose.yml | / | 도커 컴포즈를 사용하여 여러 컨테이너를 정의하고 실행하는 데 필요한 설정을 포함. (이 파일을 통해 ELK 스택을 한 번의 명령으로 쉽게 시작할 수 있음) |
Docker | /logstash/ | Logstash 컨테이너 이미지를 생성하는 파일 |
logstash.yml | /logstash/config/ | 이 파일에는 로그 수집, 필터링, 출력 관련 설정을 포함하여 Logstash의 동작 방식을 조정할 수 있음 (성능 최적화나 플러그인 설정을 위한 옵션이 포함됨) |
logstash.conf | /logstash/pipeline/ | 로그 수집 및 처리에 대한 세부 정보를 정의 (입력(input), 필터(filter), 출력(output) 설정이 포함) |
elasticsearch.yml | /elasticsearch/config/ | 클러스터 이름, 노드 이름, 인덱스 설정, 보안 설정 등 다양한 Elasticsearch 설정이 포함됨 (xpack.security.enabled와 같은 보안 관련 설정을 추가할 수 있음) |
kibana.yml | /kibana/config/ | Kibana가 Elasticsearch와 어떻게 연결될지를 정의 (Elasticsearch의 호스트 URL, 인증 정보, Kibana의 기본 설정 등이 포함됨) |
4. env 파일 수정
다른 서비스들의 yml에서 사용되는 환경 변수를 설정해주어야 한다.
.env 파일을 열어보면 아래와 같이 설정되어있다.
비밀번호 부분들을 수정해주면 된다.
서비스들의 yml에 설정되는 비밀번호는,
서비스 이용을 위한 로그인정보이지 Elasticsearch에 자동으로 계정을 생성해주는 것이 아니다.
ELASTIC_VERSION=8.15.3
## Passwords for stack users
#
# User 'elastic' (built-in)
#
# Superuser role, full access to cluster management and data indices.
# https://www.elastic.co/guide/en/elasticsearch/reference/current/built-in-users.html
ELASTIC_PASSWORD='changeme'
...
비밀번호를 작은따옴표로 감싸서 입력하고 실행해보았더니 아래와 같이 변수 자체에 따옴표와 같이 부여된 것을 볼 수 있다.
저장 시 따옴표를 제거하고 저장해주자!
5. Logstash 설정 파일 수정 ★
logstash 설정 파일로는 yml과 conf 파일 총 두 개가 있다.
yml은 아래와 같이 기본 세팅이 되어있어 따로 수정할 사항은 없다.
---
## Default Logstash configuration from Logstash base image.
## https://github.com/elastic/logstash/blob/main/docker/data/logstash/config/logstash-full.yml
#
http.host: 0.0.0.0
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
node.name: logstash
X-pack
Elastic Stack의 기능을 확장하여 보안, 모니터링, 경고, 보고서, 머신러닝 및 데이터 관리 기능을 제공하는 모듈
X-pack은 ELK에서 제공하는 유료 라이선스라서 주석 처리를 해주어야 한다는 글이 있었다.
Elastic Search 7.2 버전 이상부터 X-pack을 무료로 제공하기 때문에 X-pack 사용을 권고한다.
X-PACK 시큐리티 무료 기능 사용
위 설정은 그대로 냅두고 우리가 수정할 파일은 pipeline 설정 파일이다.
아래와 같이 명령어를 입력해 편집기를 실행 해준다.
(pipeline 폴더에는 conf 파일 외에 아무것도 존재해선 안된다.)
필자의 경우 특정 폴더에 있는 로그들을 수집할 것이므로, input 내에 file 옵션을 설정해준다.
vi ./logstash/pipeline/logstash.conf
input {
beats {
port => 5044
}
tcp {
port => 5000
}
file {
path => "/수집할 로그위치/*.log" # 로그 파일 경로
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"] # Elasticsearch 호스트
user => "elastic"
password => "비밀번호" # 비밀번호
index => "logs-%{+YYYY.MM.dd}" # 인덱스 이름
}
}
위 파일을 어떻게 설정해야 할지 감이 오지 않는다면 아래 예시를 참고하면 좋을 것 같다.
예시.
로그 파일들이 위치한 폴더명은 /home/test/test_api/logs/ 이다.
로그 파일명은 당일 로그의 경우 api.log 이고, 이전 로그는 api.2024-10-15.log.0 이런식으로 저장된다.
위와 같이 구축되어 있는 상황일 경우 아래처럼 설정해주면 된다.
# 부분은 빼고 저장해야하며, 인덱스명은 소문자만 가능하다. (대문자 불가)
input {
file {
path => [
"/home/test/test_api/logs/api.log", # 당일 로그 파일
"/home/test/test_api/logs/api.*.log.*" # 이전 날짜 로그 파일
]
start_position => "beginning" # 처음부터 읽기
sincedb_path => "/dev/null" # sincedb 파일 사용 안 함 (테스트용)
}
}
filter {
mutate { # 로그 경로 제거 및 파일명만 따로 저장
gsub => ["[log][file][path]", ".*/", ""]
add_field => { "filename" => "%{[log][file][path]}" }
}
# 파일 이름에서 날짜 추출
grok {
match => {"[filename]" => "api\.%{YEAR:log_year}-%{MONTHNUM:log_month}-%{MONTHDAY:log_day}" }
add_field => { "log_date" => "%{log_year}.%{log_month}.%{log_day}" }
add_field => { "log_type" => "old" } # 이전 로그 파일에 대한 태그
}
# 당일 로그 파일의 경우
if "API.log" in [filename] {
mutate {
add_field => { "log_date" => "%{+YYYY.MM.dd}" } # 현재 날짜 사용 # dd를 DD로 하면 오류 발생
add_field => { "log_type" => "current" } # 현재 로그 파일에 대한 태그
}
}
# 날짜를 기반으로 인덱스 이름 설정
mutate {
add_field => { "log_index" => "api_logs_%{log_type}_%{log_date}" }
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"] # Elasticsearch 호스트
user => "${ELASTICSEARCH_USER}"
password => "${ELASTICSEARCH_PASSWORD}"
index => "%{log_index}" # 인덱스 이름
}
}
옵션 설명
start_position => "beginning"
: Logstash가 처음 실행될 때 모든 로그를 읽어들임 (테스트 단계만 실행하고, 이후에는 빼주는게 좋음)
sincedb_path => "/dev/null"
: /dev/null로 설정하면 Logstash가 파일의 마지막 읽은 위치를 저장하지 않음
만약 커스텀 필드를 미리 불러들이고 싶다면 위 포스트를 참고하자!
grok 패턴이 정상적인지 확인하는 방법은 아래 사이트를 참고하자!
6. elasticsearch 설정 파일 수정
vi elasticsearch/config/elasticsearch.yml
아래와 같이 기본 세팅이 되어있어 따로 수정할 필요는 없다.
---
## Default Elasticsearch configuration from Elasticsearch base image.
## https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/config/elasticsearch.yml
#
cluster.name: docker-cluster
network.host: 0.0.0.0
## X-Pack settings
## see https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html
xpack.license.self_generated.type: trial
xpack.security.enabled: true
xpack.security.enabled: true 를 false로 변경해주면 계정 설정 없이 로그인이 가능하다.
하지만 이것은 임시 방편으로, X-pack을 사용하는 것이 보안 상 권고되는 사항이다.
7. kibana 설정 파일 수정
vi ./kibana/config/kibana.yml
이 파일에서도 username, password 외에는 별도로 수정할 사항이 없다.
server.name: kibana
server.host: 0.0.0.0
elasticsearch.hosts: [ http://elasticsearch:9200 ]
monitoring.ui.container.elasticsearch.enabled: true
monitoring.ui.container.logstash.enabled: true
## X-Pack security credentials
#
elasticsearch.username: kibana_system
elasticsearch.password: ${KIBANA_SYSTEM_PASSWORD}
8. ELK 스택 설정
vi docker-compose.yml
아래는 docker-compose.yml 파일 내용이다. (버전 별로 옵션명이 다를 수 있으니 확인 필요)
※ 주의 사항
1. 세팅 시 내부 전체를 주석 처리할 경우 오류 발생
아래와 같이 작성되어 있을 경우 environment 내에 항목 전체를 주석 처리하고 environment 는 남겨두는 경우 오류가 발생한다.
environment 설정으로 인해 변수들을 가져오려 하는데 아무 항목도 조회되지 않기 때문이다.
2. volume 설정
서비스 별로 volume이 기본 세팅되어 있을텐데, 만약 elasticsearch의 volume에 data 경로를 호스트 디렉토리로 매핑해놓을 경우 재부팅 시에도 데이터가 손실되지 않는다.
하지만 /usr/share/elasticsearch/data 와 매핑되어 있는 호스트 디렉토리가 없는 경우 데이터가 별도로 저장되지 않아 재부팅 시 데이터가 사라진다!
Elasticsearch 데이터에는 문서, 설정, 사용자, 역할 등이 포함되기 때문에 굉장히 중요한 데이터다!
(Kibana는 Elasticsearch에서 메타데이터를 읽고 쓰며, 대시보드와 시각화 설정을 Elasticsearch에 저장하기 때문)
이 점 유의해서 설정 파일을 다루어야한다.
기본 설정으로는 아래와 같이 elasticsearch_data에 매칭되어있는데, 이는 Docker 볼륨에 저장되는 것을 의미한다.
(elasticsearch_data 대신에 로컬 폴더 경로를 지정해줘도 무방하다.)
elasticsearch_data:/usr/share/elasticsearch/data
일반적으로 Docker의 볼륨은 /var/lib/docker/volumes/ 에 저장된다.
:ro 옵션은 해당 파일을 읽기 전용으로 마운트
:Z는 SELinux를 사용하는 시스템에서 파일의 보안 컨텍스트를 설정하는 옵션
수정할 사항
1. elasticsearch와 logstash의 자바 메모리 사용 옵션을 1024로 수정,
2. setup 내의 depends_on에 kibana와 logstash를 추가
3. volumes에서 '/usr/share~' 부분 설치되어있는 경로로 수정
9. ELK 스택 실행
아래 명령어를 실행할 땐, 무조건 docker-compose.yml 파일이 위치한 곳으로 이동한 후 실행해야 한다.
sudo docker-compose build && sudo docker-compose up -d
Docker compose의 캐시를 지운 후 빌드하고 싶다면 아래 명령어를 사용하면 된다.
docker-compose build --no-cache
10. kibana 계정정보 설정
부팅 후 kibana 사이트에 바로 접속하게 되면 오류가 발생한다.
elastic 계정은 있지만 kibana 계정을 따로 설정해주지 않았기 때문이다.
yml에 적은 정보는, 해당 정보를 기반으로 데이터를 받는다는 소리지 계정을 자동으로 생성해주는 것이 아니다.
아래 api를 호출해주면 계정 설정이 완료된다.
curl -X POST "http://localhost:9200/_security/user/유저명/_password" -H 'Content-Type: application/json' -d'
{
"password" : "설정할 비밀번호"
}
' -u elastic:비밀번호
elastic 계정에 대한 비밀번호는 elasticpassword이고, kibana_system 이라는 사용자의 비밀번호를 설정하고 싶은 경우,
아래와 같이 호출하면 된다.
초기 세팅 시에는 kibana_system 계정의 비밀번호를 세팅해주어야 사이트 접속이 가능하다.
curl -X POST "http://localhost:9200/_security/user/kibana_system/_password" -H 'Content-Type: application/json' -d'
{
"password" : "testtest123"
}
' -u elastic:elasticpassword
curl: (56) Recv failure: Connection reset by peer
위 오류는 elasticsearch의 포트가 차단되어 있을 경우일 것이다.
$ sudo ufw allow 9200
위 명령어를 통해 포트를 허용해주거나, AWS 인스턴스로 구축되어 있는 서버일 경우 보안그룹에서 포트를 허용해주면 된다.
11. kibana 사이트 접속
이제 키바나 사이트에 접속해보면 아래와 같은 로그인화면을 볼 수 있다.
(localhost일 경우 위 하이퍼링크 클릭하면됨)
여기서 kibana_sytem으로 로그인하면 안되고, elastic 계정으로 로그인해줘야 한다.
elastic이 아닌 계정으로 로그인을 하려하면 권한이 부족하다는 오류가 발생하기 때문에,
로그인 하려는 계정에 별도로 애플리케이션 권한을 설정해줘야 한다.
(권한 설정 방법은 아래 포스트의 1번에서 확인 가능하다.)
Filebeat란?
ELK 스택을 구축할 때 Filebeat를 설치하라는 경우가 있을 수 있지만, Filebeat 설치는 선택 사항이다.
Logstash를 거쳐가는 경우 Logstash에서 데이터를 받아 필터링이나 변환 작업을 수행할 수 있고,
경유하지 않고 직접 Elasticsearch에 로그를 전송할 수도 있다.
Filebeat의 역할
- 로그 수집: 다양한 로그 파일을 실시간으로 수집하여 Logstash나 Elasticsearch로 전송하는 경량 데이터 수집기이다.
여러 서버에서 발생하는 로그를 중앙에서 수집하고 분석하는 데 유용하다. - 전송 효율성: 로그 파일의 변화를 감지하고, 변경된 내용을 최소한의 리소스로 전송할 수 있게 설계되었다.
이는 시스템의 성능을 저하시키지 않으면서 로그를 수집할 수 있게 한다. - 다양한 입력 소스 지원: 다양한 로그 형식과 소스를 지원하여, 애플리케이션 로그, 시스템 로그 등 여러 유형의 로그를 수집할 수 있다.
선택 사항이라하면 Filebeat는 어느 경우에 설치해야 할까?
- 분산 환경: 여러 서버에서 로그를 수집해야 하는 경우, Filebeat를 설치하여 각 서버에서 로그를 수집하고 Logstash 또는 Elasticsearch로 전송하는 것이 좋다.
- 리소스 절약: Logstash는 상대적으로 많은 리소스를 사용하는 반면, Filebeat는 가벼운 수집기로 설계되어 있으므로, 수집 작업을 Filebeat에 맡기면 Logstash의 부하를 줄일 수 있다.
- 간단한 로그 전송: 로그 처리가 복잡하지 않거나, 단순히 로그를 Elasticsearch로 전송하려는 경우 Filebeat를 직접 Elasticsearch에 연결하여 사용할 수 있다.
서비스 관련 명령어 모음
모든 명령어는 'docker-compose.yml' 파일이 있는 경로에서 실행해야 한다.
(하위에는 logstash 폴더 등이 존재해야 한다.)
서비스 시작 및 종료
Docker Compose 서비스 종료
docker-compose.yml 파일을 수정했다면 종료 후 서비스 재시작이 필요하다.
docker-compose down
Docker Compose 서비스 시작
-d는 백그라운드 실행을 의미한다.
docker-compose up -d
Logstash 재시작
logstash.conf 파일을 수정했다면 재시작 명령어를 꼭 실행해줘야 한다.
docker-compose restart logstash
Kibana 재시작
docker-compose restart kibana
로그 확인
Docker Compose 로그 확인
docker-compose logs
# 특정 서비스의 로그만 보고싶은 경우
docker-compose logs elasticsearch
docker-compose logs kibana
# 로그의 마지막 일부만 보고싶을 경우 tail 추가
docker-compose logs --tail=50 logstash
Elasticsearch의 유저 목록 확인
등록된 유저 목록을 확인하고 싶은 경우 아래 api를 호출하면 된다.
해당 api는 루트 계정인 elastic 계정으로만 접근이 가능하다.
curl -X GET "localhost:9200/_security/user" -u elastic:비밀번호
에러메시지
1. 비밀번호가 틀린 경우
2. elastic 계정이 아닌 경우
올바른 결과
실행 상태 확인
Docker compose 프로세스 확인
docker-compose ps
Elasticsearch 연결 확인
정상적으로 연결되었다면 아래 명령어 실행 시 logstash에 설정한 인덱스명이 존재해야 한다.
curl -X GET "localhost:9200/_cat/indices?v"
특정 인덱스 문서 수 확인
응답으로 문서 수가 반환된다.
curl -X GET "localhost:9200/<인덱스_이름>/_count"
Elasticsearch의 특정 문서 조회
curl -X GET "localhost:9200/<인덱스_이름>/_search?pretty"
환경 변수 조회
서비스 별로 할당된 변수를 조회하는 방법은 두 가지가 있다!
하나는 서비스 호출을 이용해 변수를 알아내는 것이고 하나는 컨테이너에 접속해서 알아내는 방법이다.
첫 번째로 서비스 호출을 이용한 변수 조회 방법이다.
docker-compose exec elasticsearch env
docker-compose exec kibana env
docker-compose exec logstash env
두 번째 방법인 컨테이너에 접속하여 알아내는 방법은 아래와 같다.
아래 명령어를 통해 kibana 컨테이너에 접속한다. (id는 docker ps 명령어를 통해 확인 가능하다)
docker exec -it <container_id> /bin/bash
이후 조회하고 싶은 환경변수를 조회해준다.
printenv | grep KIBANA_SYSTEM_PASSWORD
비밀번호 변경하기
비밀번호 설정하는 명령어가 여러개 있는데, 둘 중에 하나를 선택하여 사용해주면 된다.
1. 이전 방법
ELK 실행 후 Elasticsearch 컨테이너에 접속해서 계정을 설정해주면 된다.
docker ps 로 Elasticsearch 컨테이너 ID를 알아낸 후 컨테이너에 접속해준다.
docker ps
docker exec -it <elasticsearch 컨테이너ID> /bin/bash
하지만 이 방법은 elasticsearch-setup-passwords 도구가 더 이상 사용되지 않으며, 향후 릴리스에서 제거될 예정이라는 경고가 뜬다.
./bin/elasticsearch-setup-passwords interactive
위 화면에서 y 를 입력하게 되면, 존재하는 사용자들에 대해 비밀번호를 하나하나 설정해주어야 해서 번거롭다.
2. 최신 방법
elastic 은 루트 계정이므로 -u는 elastic 계정정보를 입력해줘야한다.
curl -X POST "http://localhost:9200/_security/user/kibana_system/_password" -H 'Content-Type: application/json' -d'
{
"password" : "변경할비밀번호"
}
' -u elastic:비밀번호
루트 계정 비밀번호 초기화
docker ps
docker exec -it <elasticsearch 컨테이너ID> /bin/bash
위 명령어를 통해 Elasticsearch 컨테이너에 접속해준 후 아래 명령어를 통해 초기화를 진행해준다.
bin/elasticsearch-reset-password -u elastic
오류 분석
1. Unsupported config option for~
$ docker-compose build && docker-compose up -d
Unsupported config option for volumes: 'elasticsearch'
Unsupported config option for networks: 'elk'
Unsupported config option for services: 'setup'
Docker compose 실행 시 위와 같이 지원되지 않는 설정이라고 오류가 발생하는 경우가 있다.
버전과 지원되는 속성이 일치하지 않았기 때문인데, 아래 명령어를 통해 설치되어 있는 Docker compose 버전을 확인한 뒤 yml에 설정되어있는 버전과 동기화 시켜준다.
docker-compose --version
(1.8.0 버전일 경우 yml 에서 2버전으로 호환된다)
2. Device or resource busy
이 외 서비스는 정상적으로 실행되었는데 Elasticsearch에서 Device or resource busy 오류가 발생하는 경우가 있다.
elasticsearch.yml 파일의 xpack 옵션에 주석 처리가 되어있는 경우 발생하는 오류라고 한다.
주석 제거 해주면 해결 완료!
3. Unknown environment variable referenced in config
실행 시킨 후 kibana 사이트 접속이 되지 않아 로그를 확인해보니 아래와 같이 환경변수 오류가 발생한 것을 확인했다.
docker-compose.yml에서 서비스에 넘겨준 환경 변수명이 동일한지 확인이 필요하다.
예시.
동일한 값이 아래와 같이 설정되어 있다는 가정 하에 실행 시 반드시 오류가 발생한다.
파일명 | 파일 내 사용 변수명 |
.env | KIBANA_SYSTEM_PASSWORD |
docker-compose.yml | ELASTICSEARCH_PASSWORD |
kibana.yml | KIBANA_SYSTEM_PASSWORD |
아래 예시에선 docker-compose.yml에선 .env 파일의 KIBANA_SYSTEM_PASSWORD 변수를 가져와서 ELASTICSEARCH_PASSWORD 에 대입한 후 kibana에 제공하겠다는 의미이다.
하지만 kibana.yml을 살펴보면 KIBANA_SYSTEM_PASSWORD 로 받으려고 하고있는 것을 확인할 수 있다.
이에 따라 docker-compose.yml 혹은 서비스의 yml 변수명을 수정하여 통일 시켜주면 된다.
[docker-compose.yml]
kibana:
build:
context: kibana/
args:
ELASTIC_VERSION: ${ELASTIC_VERSION}
environment:
ELASTICSEARCH_USERNAME: kibana_system
ELASTICSEARCH_PASSWORD: ${KIBANA_SYSTEM_PASSWORD}
[kibana.yml]
# 잘못된 설정
elasticsearch.password: ${KIBANA_SYSTEM_PASSWORD}
# 올바른 설정
elasticsearch.password: ${ELASTICSEARCH_PASSWORD}
4. Kibana server is not ready yet. ~ Security API was not registered, ~
설정과 부팅을 마친 후 키바나 사이트에 접속했지만 키바나 서비스가 실행되지 않았다고 뜨는 경우가 있다.
이럴 경우 F12를 눌러 '개발자 모드-콘솔'을 들어가보면 발생한 오류들에 대한 설명이 적혀있다.
(혹은 직접 docker-compose logs를 통해 로그를 확인해도 된다.)
위 문제는 계정 설정에 관한 문제로, ELK 부팅 후 계정 정보를 설정해주지 않은 경우 발생한다.
설치 단계에서 10번을 완료했을 경우 발생하지 않는 오류이다.
만약 10번을 실행했는데도 오류가 발생한다면, 임시 방편으로 elasticsearch.yml 의 설정을 아래와 같이 수정해준 뒤 elk를 재부팅해준다.
위에서 말했듯이 보안 상의 문제로 계정 설정 후 다시 true로 변경해주는 것을 권고한다.
#수정 전
xpack.security.enabled: true
#수정 후
xpack.security.enabled: false
참고사이트
docker-compose로 ELK 8 버전 사용해보기 1부
[docker] Ubuntu (우분투)에 docker를 이용해 ELK스택 설치
'💡 백엔드 > ELK' 카테고리의 다른 글
[ELK] Docker로 ELK 스택 구축 시 실행 때마다 자동으로 사용자 설정하기 (0) | 2024.11.04 |
---|---|
[ELK] ELK에서 Logstash.conf 파일의 filter, input, output 블록 (0) | 2024.11.04 |
[ELK] ELK 역할 부여 및 권한 관리하는 방법 (0) | 2024.10.31 |
[ELK] ELK를 이용한 MySQL 로그 연동 방법 (0) | 2024.10.21 |
[ELK] ELK 스택(Elasticsearch, Kibana, Beats, Logstash) 개념 정리 (0) | 2024.08.29 |