Elasticsearch 서비스 관리
프로세스 확인
실행 중인 Elasticsearch 인스턴스를 확인하려면 다음 명령어를 사용합니다.
ps -ef | grep elasticsearch
버전 정보 조회
노드의 상태와 버전을 확인하기 위해 REST API를 호출합니다.
curl -X GET "localhost:9200/"
서비스 시작 (비루트 사용 권장)
보안상의 이유로, Elasticsearch는 root 계정으로 실행하지 않는 것이 원칙입니다. 별도의 전용 사용자를 생성하여 운영하는 것이 바람직합니다.
- 설치 디렉터리 이동:
cd /home/elk/elasticsearch-7.17.5 - 기본 실행:
./bin/elasticsearch - 커스텀 설정 파일 지정:
./bin/elasticsearch -Epath.conf=/home/elk/config
백그라운드 실행 방법
- 단순 백그라운드 실행:
./bin/elasticsearch & - nohup을 이용한 영구 실행:
nohup ./bin/elasticsearch > es.log 2>&1 &
Kibana 구성 및 실행
systemd 기반 실행
RPM 또는 DEB 패키지 설치 시 systemd 서비스가 자동 등록됩니다.
sudo systemctl start kibana
주요 경로:
- 설정 디렉터리:
/etc/kibana - 설치 위치:
/usr/share/kibana
Tarball 방식 실행
- 디렉터리 진입:
cd /usr/local/src/kibana-7.17.5 - 설정 파일 확인:
cat config/kibana.yml - ES 연결 주소 설정:
elasticsearch.hosts: ["http://localhost:9200"] - 백그라운드 실행:
nohup ./bin/kibana > logs/kibana.log 2>&1 & - 접속 테스트: 브라우저에서
http://서버IP:5601접속
Logstash 배포 및 설정
Tar 압축 파일 실행
- 디렉터리 이동:
cd /usr/local/src/logstash-7.17.5 - 구성 파일 편집:
vim config/pipeline.conf - 샘플 파이프라인 예시:
input {
beats {
port => 5044
}
}
filter {
if [log_source] == "wms-app" {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:app_timestamp} \[%{DATA:thread_id}\] %{LOGLEVEL:level} %{NOTSPACE:class_name} - %{GREEDYDATA:log_message}" }
}
date {
match => [ "app_timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ]
target => "@timestamp"
timezone => "Asia/Seoul"
}
}
}
output {
if [env] == "development" {
elasticsearch {
hosts => ["110.211.211.49:9200"]
index => "app-dev-%{+YYYY.MM.dd}"
}
} else {
elasticsearch {
hosts => ["110.211.211.114:9200"]
index => "app-prod-%{+YYYY.MM.dd}"
}
}
}
- 실행 명령:
nohup ./bin/logstash -f config/pipeline.conf &
RPM 기반 설치 및 관리
- 패키지 설치:
sudo yum localinstall logstash-7.17.5.rpm - 서비스 제어:
sudo systemctl start logstash sudo systemctl enable logstash sudo systemctl status logstash - 로그 모니터링:
tail -f /var/log/logstash/logstash-plain.log
Filebeat과 연동된 로그 수집 구조
Java 기반 WMS 애플리케이션의 로그를 Filebeat → Logstash → Elasticsearch → Kibana 순서로 전달합니다.
Filebeat 설정 예제 (/etc/filebeat/filebeat.yml)
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/wms/application.log
fields:
log_source: wms-app
env: development
output.logstash:
hosts: ["localhost:5044"]
Logstash 입력 설정
input {
beats {
port => 5044
}
}
배포 후 점검 항목
- 모든 서비스 상태 확인:
systemctl status filebeat logstash kibana - 포트 사용 여부 확인:
netstat -tlnp | grep -E '(5044|9200|5601)' - Filebeat 구성 오류 검증:
filebeat test config - Elasticsearch에 인덱스 생성 여부 확인:
curl 'localhost:9200/_cat/indices?v'
로깅 타임스탬프 정합성 확보
로그 내부의 타임스탬프([2023-12-30 14:13:17.067])를 Elasticsearch의 @timestamp 필드로 사용하기 위해 Logstash의 date 필터를 활용합니다.
grok {
match => { "message" => "\[%{TIMESTAMP_ISO8601:raw_timestamp}\].*%{LOGLEVEL:level}.*" }
}
date {
match => [ "raw_timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ]
target => "@timestamp"
timezone => "Asia/Seoul"
}
오래된 로그 파일 정리 스크립트
30일 이상 지난 압축 로그 파일을 자동 삭제합니다.
find /home/elk/elasticsearch-7.17.5/logs \
-name "*.log.gz" -o -name "*.json.gz" \
-mtime +30 -exec rm -f {} \;
Kibana에서의 시각화 구성
- Management > Index Patterns에서
wms-*패턴 등록 - Visualize Library에서 차트 유형 선택 (예: Bar, Line, Pie)
- 데이터 소스로 방금 생성한 인덱스 패턴 지정
- Aggregation 설정 (예: terms aggregation by
level, date histogram) - 저장 후 Dashboard에 추가