코딩마을방범대
[ELK] 다른 서버에 구축되어 있는 ELK와 연결하기 본문
728x90
위 포스트를 통해 A서버에 ELK가 구축되어 있다는 가정 하에, B서버의 로그를 A서버로 보내는 방법을 알아볼 것이다.
초기 환경
A서버: ELK 구축되어 있음
B서버: A서버로 보낼 log가 쌓임.
Ⅰ. B서버에 ELK를 별도로 구축하는 방법
※ 이 방법은 서버 별로 필터를 별도로 설정하고싶은 경우 추천한다.
1. 서버 B에 Elasticsearch, Logstash 설치
A. GPG 키 및 저장소 추가
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
B. 패키지 목록 업데이트
sudo apt-get update
C. Elasticsearch, Logstash 설치
sudo apt-get install elasticsearch logstash
2. Elasticsearch 설정
A. 서버 A
ELK 가 구축된 폴더의 ./elasticsearch/config/elasticsearch.yml 를 수정해주면 된다.
# 모든 네트워크 인터페이스에서 수신하도록 설정
network.host: 0.0.0.0
# HTTP 포트 설정 (포트는 docker-compose.yml에 설정되어있을 것이다.)
http.port: 9200
# 클러스터 이름 (선택 사항)
cluster.name: my-cluster
# 노드 이름 (선택 사항)
node.name: node-a
B. 서버 B
sudo vi /etc/elasticsearch/elasticsearch.yml
# 모든 네트워크 인터페이스에서 수신하도록 설정
network.host: 0.0.0.0
# HTTP 포트 설정
http.port: 9200
# 클러스터 이름 (서버 A와 동일해야 함)
cluster.name: my-cluster
# 노드 이름 (선택 사항)
node.name: node-b
3. B서버의 Logstash 설정 파일 수정
sudo vi /etc/logstash/conf.d/logstash.conf
예시1. 필터링 없이 A서버에 전송
input {
file {
path => "/path/to/your/logfile.log" # 로그 파일 경로
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["http://<서버_A_IP>:9200"] # 서버 A의 Elasticsearch IP
index => "your_index_name-%{+YYYY.MM.dd}"
}
}
예시2. 필터 적용 후 A서버에 전송
input {
file {
path => "/path/to/your/logfile.log" # 로그 파일 경로
start_position => "beginning"
}
}
filter {
# 필요한 필터 추가 (예: grok, mutate 등)
mutate {
add_field => { "new_field" => "value" }
}
}
output {
logstash {
hosts => ["<서버_A_IP>:5044"] # A 서버의 Logstash IP 및 포트
}
}
4. B서버의 Elasticsearch, Logstash 시작
sudo systemctl start elasticsearch
sudo systemctl start logstash
5. B서버의 Elasticsearch, Logstash 자동 시작 설정
sudo systemctl enable elasticsearch
sudo systemctl enable logstash
5. A서버의 Kibana 사이트 확인
B서버의 Logstash에서 설정한대로 index가 제대로 추가되었는지 확인한다.
Ⅱ. B서버에서 Filebeat로 전송하기
1. B서버에 filebeat 설치
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install filebeat
2. B서버에 filebeat 세팅
sudo vi /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /path/to/your/logs/*.log # 전송할 로그 파일의 경로
output.logstash:
hosts: ["A_SERVER_IP:5044"] # A 서버의 Logstash 주소
3. A서버에 logstash 세팅
input {
beats {
port => 5044 # Filebeat가 Logstash로 전송할 포트
}
}
filter {
# 필요한 필터 추가
}
output {
elasticsearch {
hosts => ["http://localhost:9200"] # Elasticsearch 주소
index => "your-index-name-%{+YYYY.MM.dd}" # 인덱스 이름
}
}
4. B서버 filebeat 시작
sudo systemctl start filebeat
sudo systemctl enable filebeat # 부팅 시 자동 시작 설정
5. A서버 logstash 시작
sudo systemctl start logstash
728x90
'💡 백엔드 > ELK' 카테고리의 다른 글
[ELK] Log를 불러올 때 타임스탬프를 커스텀 필드로 정의하기 (0) | 2024.11.13 |
---|---|
[ELK] 데이터뷰 및 필드 생성하기 (0) | 2024.11.13 |
[ELK] Docker를 통해 구축한 ELK 의 데이터를 스냅샷으로 저장하기 (0) | 2024.11.06 |
[ELK] Docker로 ELK 스택 구축 시 실행 때마다 자동으로 사용자 설정하기 (0) | 2024.11.04 |
[ELK] ELK에서 Logstash.conf 파일의 filter, input, output 블록 (0) | 2024.11.04 |