안녕하세요!
오늘은 Logstash exec에 대하여 알아보겠습니다.
Logstash output exec
logstash output exec 플러그인은 Logstash에서 외부 스크립트를 실행할 수 있도록 지원합니다.
CSV 파일로 저장된 파일을 원격 서버로 자동 전송해보겠습니다.
SSH 키 설정, Logstash의 exec 플러그인 활용, 파일 전송 스크립트를 사용하였습니다
구성 요소
SSH 키 기반 인증: 원격 서버에 비밀번호 없이 접속 설정.
Logstash Exec Output: 조건 충족 시 외부 스크립트를 실행.
SCP 스크립트: CSV 데이터를 원격 서버로 전송.
1. SSH 키 생성 및 설정
1.1 SSH란?
SSH(Secure Shell)는 네트워크를 통해 원격 서버와 안전하게 통신할 수 있도록 해주는 프로토콜입니다. 키 기반 인증을 설정하면 비밀번호 없이 서버에 접속할 수 있습니다.
1.2 SSH 키 생성
로컬 머신에서 SSH 키를 생성합니다.
ssh-keygen -t rsa -b 2048
- -t rsa: RSA 알고리즘을 사용.
- -b 2048: 키 길이를 2048비트로 설정.
생성된 키 파일은 ~/.ssh/id_rsa(개인 키)와 ~/.ssh/id_rsa.pub(공개 키)로 저장됩니다.
1.3 공개 키를 원격 서버로 복사
ssh-copy-id 명령어를 통해 공개 키를 원격 서버에 복사합니다.
ssh-copy-id root@192.168.123.21
1.4 SSH 접속 확인
키 기반 인증이 성공했는지 확인하기 위해 원격 서버에 접속해 봅니다.
ssh root@192.168.123.21
2. Logstash 설정
2.1 Exec Output 플러그인 설치
Logstash-output-exec 플러그인을 설치합니다.
/usr/share/logstash/bin/logstash-plugin install logstash-output-exec
2.2 Logstash 설정 파일 작성
Logstash의 output 단계에서 특정 조건에 따라 데이터를 처리하고 외부 스크립트를 실행하도록 설정합니다.
설정 파일 예시(logstash.conf)
output {
if [fgSysVersion] { # 특정 필드 조건
file {
path => "/etc/logstash/csv/monitoring.csv"
codec => line {
format => "%{fgSysVersion},%{fgSysMgmtVdom},%{fgSysCpuUsage},%{fgSysMemUsage},%{fgSysMemCapacity},%{fgSysDiskUsage},%{fgSysDiskCapacity},%{fgSysSesCount},%{fgSysLowMemUsage}"
}
}
exec {
command => "/etc/logstash/scripts/scp_test.sh"
}
}
}
file 출력: 로그 데이터를 CSV 파일로 저장합니다.
exec 플러그인: scp_test.sh 스크립트를 실행합니다.
3. SCP 스크립트 작성
3.1 스크립트 개요
CSV 파일을 원격 서버로 전송하는 스크립트를 작성합니다. 이 스크립트는 scp 명령어를 사용하여 파일을 복사합니다.
스크립트 파일(scp_test.sh)
#!/bin/bash
scp /etc/logstash/csv/monitoring.csv root@192.168.123.21:/root/
- scp: 파일을 안전하게 복사하는 명령어.
- /root/: 원격 서버에서 파일이 저장될 디렉토리.
4. 권한 설정 및 서비스 재구성
4.1 파일 권한 설정
Logstash가 스크립트와 CSV 파일을 읽고 실행할 수 있도록 권한을 조정합니다.
sudo chown logstash:logstash /etc/logstash/scripts/scp_test.sh
sudo chmod +x /etc/logstash/scripts/scp_test.sh
sudo chown logstash:logstash /etc/logstash/csv/monitoring.csv
4.2 Logstash 서비스 권한 문제 해결
Logstash가 기본적으로 logstash 사용자로 실행될 경우 scp 명령어 실행 권한이 부족할 수 있습니다. 이를 해결하기 위해 Logstash 서비스를 root 권한으로 실행하도록 변경합니다.
서비스 설정 변경
sudo systemctl edit logstash.service
아래 내용을 추가합니다:
[Service]
User=root
서비스 재시작
sudo systemctl daemon-reload
sudo systemctl restart logstash.service
이상입니다.
감사합니다!
천사불여일행(千思不如一行) : 천번 생각하는 것보다 한번 행동하는 것이 더 중요하다.
기기일약 불능십보 노마십가 공재불사(騏驥一躍 不能十步 駑馬十駕 功在不舍): 천리마가 한번 크게 뛴다고 하더라도 열 걸음을 나아갈 수 없고 노둔한 말일지라도 열흘 달리면 역시 거기에 미칠 수가 있다.
일의 성과는 멈추지 않고 계속하는 데 있다. (순자, 권학편)
'Elastic Search AI Platform' 카테고리의 다른 글
logstash multi output(elasticseach, exec) (1) | 2024.11.19 |
---|---|
Logstash Range Filter (0) | 2024.11.17 |
Elasticsearch fingerprint 확인 하기 (2) | 2024.11.12 |
Logstash Input http_poller vs http 비교 (1) | 2024.11.08 |
Elastic Certified Engineer exan (엘라스틱 엔지니어 자격 시험) 후기 (1) | 2024.10.24 |