모니터링 시스템 구축 과정에서 로그 수집을 위해 ELK Stack(Elasticsearch, Logstash, Kibana) 중 하나인 Logstash를 설치하였습니다.
이번 게시글에서는 Rocky Linux 8.X 환경에서 Logstash를 설치하는 과정을 소개하고자 합니다.
1. Logstash 소개
Logstash는 다양한 데이터를 수집하고 이를 처리하여 저장할 수 있는 오픈소스 솔루션입니다.
1-1. Logstash 의 주요 기능과 구성 요소
모니터링 시스템을 구축하면서 사용하는 주요 기능으로 입력, 필터, 출력이 있습니다.
- 입력 (input) : 로그 파일, 데이터베이스, 네트워크 소켓 등 여러 데이터를 입력받을 수 있습니다.
- 필터 (Filter) : 입력된 데이터를 정제하고, 형식을 변경하고, 필드 추가 및 제거 등의 작업을 수행합니다. 대표적으로 Grok(정규표현식 기반 파싱), Mutate(데이터 변형) 등을 사용합니다.
- 출력 (Output) : 처리된 데이터를 출력합니다. Elasticsearch, 파일시스템, 메일 등 여러 매체로 출력할 수 있습니다.
ELK 스택(Elasticsearch, Logstash, Kibana) 설치를 위해 Logstash 설치하는 과정을 설명하고자 합니다.
저는 Logstash의 input으로 로그 파일을 입력 받아, 필터링 후 Elasticsearch로 출력하는 형태로 사용하였습니다.
2. Logstash 설치
설치 경로 : /app/logstash
2-1. Logstash 다운로드
공식 홈페이지를 통해 각자 환경에 맞는 플랫폼을 선택한 후 다운로드합니다.
https://www.elastic.co/kr/downloads/logstash
Download Logstash Free | Get Started Now
Download Logstash or the complete Elastic Stack (formerly ELK stack) for free and start collecting, searching, and analyzing your data with Elastic in minutes....
www.elastic.co
2-2. Logtash 설치
다운로드받은 파일을 설치하고자 하는 경로에 압축을 풀어 옮겨줍니다.
tar xvzf logstash-8.15.0-linux-x86_64.tar.gz
mv logstash-8.15.0 /app/logstash
2-3. Logstash 설정
Logstash의 설정파일로는 config 하위에 logstash.yml 와 logstash.conf 2가지 파일이 있습니다.
- logstash.yml : logstash 솔루션 설정
- logstash.conf : 데이터 입력, 가공, 출력 설정
1) Logstash 기본 설정
로그 경로와 로그 레벨에 대해 설정합니다.
# log level 설정
log.level: fatal
# logs 경로 설정
path.logs: /log/logstash
2) Logstash input 플러그인을 통한 로그 파일 수집
Logstash의 input 플러그인를 활용하여, /var/log/messages 로그를 수집합니다.
#vi logstash.conf
input{
file{
path => "/var/log/messages"
start_position => beginning
}
}
3) Logstash 특정 텍스트 포함 여부 확인 및 삭제
filter 플러그인 중 drop 기능을 통해 특정 텍스트가 포함되어 있다면 출력하지 않고 버릴수 있습니다.
# vi logstash.conf
filter {
# 수집한 데이터에 dnf 라는 텍스트가 있다면 drop
if "dnf" in [message] {
drop { }
}
}
4) Logstash 새로운 필드 생성
filter 플러그인 중 mutate 기능을 활용하여 새로운 필드를 만들거나 변경할 수 있습니다.
# vi logstash.conf
filter {
# 수집한 데이터에 dnf 라는 텍스트가 있다면 drop
if "dnf" in [message] {
drop { }
}
# sendmsg 라는 필드값을 not으로 설정
mutate {
replace => { "sendmsg" => "not" }
}
}
5) Logstash 데이터를 Elasticsearch로 출력하기
Logstash의 Elasticsearch output 플러그인을 활용하여 가공한 데이터를 Elasticsearch에 저장할 수 있습니다.
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
Elasticsearch output plugin | Logstash Reference [8.15] | Elastic
If you configure the plugin to use 'TLSv1.1' on any recent JVM, such as the one packaged with Logstash, the protocol is disabled by default and needs to be enabled manually by changing jdk.tls.disabledAlgorithms in the $JDK_HOME/conf/security/java.security
www.elastic.co
# vi logstash.conf
output{
elasticsearch{
hosts => "https://{Elasticsearch가 설치된 서버IP}:{Port}"
# SSL 기능 활용하는 경우
ssl_enabled => true
ssl_truststore_path => "/app/logstash/certs/IR-GRAFANA.p12"
ssl_truststore_password => "{패스워드}"
ssl_keystore_path => "/app/logstash/certs/IR-GRAFANA.p12"
ssl_keystore_password => "{패스워드}"
# Elasticsearch 계정
user => "swadm"
password => "{패스워드}"
# 수집한 데이터를 저장할 인덱스명
index => "syslog"
}
}
'Opensource 모니터링 구축 > ELK' 카테고리의 다른 글
리눅스 Elasticsearch 설치 - ELK Stack 설치(1) (0) | 2024.08.21 |
---|---|
ElasticSearch, Logstash - 이벤트 알림 시스템 구축 (0) | 2024.03.20 |