[ES 개인 스터디] 11. 로그스태시 파일비트 설치와 실행
by ymkim
⚡ 01. Logstash, Filebeat 스펙
개발 환경
- Window Terminal Ubuntu 18.04
- Open JDK 8
참고 사항
⚡ 02 Logstash, Filebeat 설치 및 구동
✅ 02-1. Debian 파일 설치 및 해제
# sudo apt-get install openjdk-8-jre
# sudo update-alternatives --config java # java version 변경
$ sudo wget <https://artifacts.elastic.co/downloads/logstash/logstash-7.6.1.deb>
$ sudo wget <https://artifacts.elastic.co/downloads/logstash/logstash-7.6.1.deb.sha512>
$ sudo shasum -a 512 -c logstash-7.6.1.deb.sha512
$ sudo dpkg -i logstash-7.6.1.deb
- 위 순서대로 진행하며 filebeat 역시 마찬가지로 진행 해주시면 됩니다.
🔥 02-1-1. Debian 설치 중 이슈 발생
$ sudo dpkg -i logstash-7.6.1.deb # 해당 명령어 입력 시 오류 발생
(Reading database ... 174810 files and directories currently installed.)
Preparing to unpack logstash-7.6.1.deb ...
Unpacking logstash (1:7.6.1-1) over (1:7.6.1-1) ...
Setting up logstash (1:7.6.1-1) ...
/etc/logstash/startup.options is not a file path
To manually specify a startup style, put the path to startup.options as the
first argument, followed by the startup style (sysv, upstart, systemd)
chmod: cannot access '/etc/logstash/startup.options': No such file or directory
이슈 참고용
💡 해당 이슈를 통해 완벽히 해결은 안되지만, 참고 가능
https://github.com/elastic/logstash/issues/9941
Logstash 깃헙 레포
logstash/config at v6.3.2 · elastic/logstash
- 직접 statup.options 파일을 생성 /etc/logstash/ 경로에 생성한다.
- 후에 위에서 사용하였던, sudo dpkg -i logstash-7.6.1.deb 명령어 사용.
# debian 파일이 깔려있다 가정하고 진행
sudo dpkg -i logstash-7.6.1.deb
- debian 파일 설치 또는 최신 버전으로 업데이트 진행.
✅ 02-2. Debian 파일 Unpackaging 후 확인
$ cd /usr/share
$ ls filebeat logstash kibana elasticsearch # filebeat, logstash, kibana, elasticsearch 검색
elasticsearch:
NOTICE.txt README.asciidoc bin jdk lib modules plugins
filebeat:
LICENSE.txt NOTICE.txt README.md bin kibana module
kibana:
LICENSE.txt README.txt built_assets node_modules package.json src x-pack
NOTICE.txt bin node optimize plugins webpackShims
logstash:
CONTRIBUTORS Gemfile.lock NOTICE.TXT data logstash-core modules vendor
Gemfile LICENSE.txt bin lib logstash-core-plugin-api tools x-pack
✅ 02-3. Logstash의 bin 디렉토리 확인
# * /usr/share/logstash/bin
# bin 디렉토리 내에서 파일 목록 확인
$ ll
total 48K
-rw-r--r-- 1 root root 221 Dec 19 04:38 benchmark.bat
-rwxr-xr-x 1 root root 152 Dec 19 04:38 benchmark.sh
-rwxr-xr-x 1 root root 377 Dec 19 04:38 cpdump
-rwxr-xr-x 1 root root 1.1K Dec 19 04:38 dependencies-report
-rw-r--r-- 1 root root 225 Dec 19 04:38 ingest-convert.bat
-rwxr-xr-x 1 root root 155 Dec 19 04:38 ingest-convert.sh
-rwxr-xr-x 1 root root 2.2K Dec 19 04:38 logstash
-rwxr-xr-x 1 root root 357 Dec 19 04:38 logstash-keystore
-rw-r--r-- 1 root root 257 Dec 19 04:38 logstash-keystore.bat
-rwxr-xr-x 1 root root 358 Dec 19 04:38 logstash-plugin
-rw-r--r-- 1 root root 260 Dec 19 04:38 logstash-plugin.bat
-rw-r--r-- 1 root root 2.3K Dec 19 04:38 logstash.bat
-rwxr-xr-x 1 root root 6.4K Dec 19 04:38 logstash.lib.sh
-rwxr-xr-x 1 root root 1.1K Dec 19 04:38 pqcheck
-rw-r--r-- 1 root root 475 Dec 19 04:38 pqcheck.bat
-rwxr-xr-x 1 root root 1.1K Dec 19 04:38 pqrepair
-rw-r--r-- 1 root root 476 Dec 19 04:38 pqrepair.bat
-rwxr-xr-x 1 root root 623 Dec 19 04:38 ruby
-rw-r--r-- 1 root root 2.2K Dec 19 04:38 setup.bat
-rwxr-xr-x 1 root root 3.5K Dec 19 04:38 system-install
- 파일 조회 시 위와 같은 파일 목록이 존재.
✅ 02-4. Logstash, Filebeat 구동
$ ./bin/logstash -h
$ ./bin/filebeat
Exiting: error loading config file: stat filebeat.yml: no such file or directory
만약 로그스태시를 Deamon과 관계없이 실행하고 싶을 경우 해당 경로로 접근하여 직접 logstash나 filebeat의 배치 파일을 실행 시켜주면 된다. 하지만 Linux에서 filebeat의 경우 filebeat.yml 파일을 참조 하고 있기 때문에 다른 방식으로 실행을 해야 한다.
✅ 02-5. Logstash, Filebeat 설치 파일과 환경 파일 구분
service "서비스명" start | stop | restart를 통해 실행이 가능하지만 window 내에서의 위치를 기억하고 구분하기 위해 아래 기재하였습니다
# ⚡ 설치 파일 경로 : 실제 서버를 올리기 위한 파일 존재
/usr/share/elasticsearch
/usr/share/kibana
/usr/share/logstash
/usr/share/filebeat
# ⚡ 환경 파일 경로 : 서버를 올리기 위한 환경 설정 파일 존재
/etc/elasticsearch
/etc/kibana
/etc/logstash
/etc/filebeat
✅ 02-6. 로그 스태시 실행 및 데이터 입력
# * /usr/share/logstash/bin/logstash
# logstash 배치 파일 실행
$ sudo ./logstash -e 'input {stdin {}} output {stdout{}}'
Using bundled JDK: /usr/share/logstash/jdk
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
asdasdasdasdasd # 아무 문자열이나 입력 해본다
[INFO ] 2022-03-16 13:43:09.638 [[main]-pipeline-manager] javapipeline - Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[INFO ] 2022-03-16 13:43:09.692 [Agent thread] agent - Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
{
"@timestamp" => 2022-03-16T04:43:09.679Z,
"@version" => "1",
"message" => "asdasdasdasdasd", # 위에서 입력한 임시 문자열이 출력 된다
"host" => "DESKTOP-CVOFEPU"
}
helloworld # 문자열 한번 더 입력
{
"@timestamp" => 2022-03-16T04:49:43.896Z,
"@version" => "1",
"message" => "helloworld",
"host" => "DESKTOP-CVOFEPU"
}
- stdin : console에 입력
- stdout : console에 출력
- @timestamp: 로그 출력 시간
- @version: 첫 번째 입력(생성)이라는 의미로 "1"
- message: input으로 들어온 메시지(문자열)
- host: 현재 logstash를 구동하고 있는 서버(Linux, Ubuntu..등등)
✅ 02-7. Filebeat 구동 및 실습
Filebeat는 Logstash에 비해 좀 더 가볍다는 특징이 존재한다.
# etc의 filebeat 디렉토리로 이동
$ cd /etc/filebeat
# 파일 목록 확인
$ ll
total 3.8M
-rw-r--r-- 1 root root 3.7M Dec 19 06:04 fields.yml
-rw-r--r-- 1 root root 163K Dec 19 06:04 filebeat.reference.yml
-rw------- 1 root root 8.1K Dec 19 06:04 filebeat.yml # filebeat 설정 파일
drwxr-xr-x 1 root root 4.0K Dec 22 21:42 modules.d
- /etc/filebeat 디렉토리의 파일 조회
# filebeat.yml 파일 확인
$ vi filebeat.yml
✅ 02-8. Filebeat Configuration(환경 설정)
filebeat.yml 파일을 직접 열어보시면 아래 내용보다 훨씬 많은 설정이 존재합니다. 해당 부분은 직접 파일에 접근하여 확인 해주시면 감사하겠습니다.
#=========================== Filebeat inputs =============================
filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.
- type: log
# Change to true to enable this input configuration.
# enabled: false
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/*.log
#- c:\\\\programdata\\\\elasticsearch\\\\logs\\\\*
- type : 어떤 데이터를 수집할지 지정
- enabled : 수집 여부(true/fasle)
- paths : 로그를 저장하는 디렉토리 경로 지정
#-------------------------- Elasticsearch output ------------------------------
# output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
# Protocol - either `http` (default) or `https`.
#protocol: "https"
# Authentication credentials - either API key or username/password.
#api_key: "id:api_key"
#username: "elastic"
#password: "changeme"
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
# Optional SSL. By default is off.
# List of root certificates for HTTPS server verifications
#ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
# Certificate for SSL client authentication
#ssl.certificate: "/etc/pki/client/cert.pem"
# Client Certificate Key
#ssl.key: "/etc/pki/client/cert.key"
Elasticsearch에서 데이터 수집을 하는게 아니기에 Elasticsearch output의 옵션은 주석으로 처리하고
Logstash output의 옵션은 주석을 해제한다.
✅ 02-9. Logstash Configuration(환경 설정)
# 디렉토리 이동
$ cd /etc/logstash
# 전체 파일 확인
$ ll
total 28K
drwxr-xr-x 1 root root 4.0K Dec 19 04:44 conf.d
-rw-r--r-- 1 root root 2.1K Dec 19 04:38 jvm.options
-rw-r--r-- 1 root root 7.3K Dec 19 04:38 log4j2.properties
-rw-r--r-- 1 root root 342 Dec 19 04:38 logstash-sample.conf
-rw-r--r-- 1 root root 12K Dec 22 21:38 logstash.yml
-rw-r--r-- 1 root root 285 Dec 19 04:38 pipelines.yml
-rw------- 1 root root 1.7K Dec 19 04:38 startup.options
# piplines.yml 파일 확인
$ cat pipelines.yml
# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
# <https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html>
- pipeline.id: main
path.config: "/etc/logstash/conf.d/*.conf"
- Logstash가 현재 conf.d/\*.conf 파일을 참조하도록 설정 되어 있다.
# logstash-sample.conf 파일 확인
cat logstash-sample.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["<http://localhost:9200>"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
- Logstash 샘플 설정 파일을 확인 후 복사를 진행 한다.
# logstash-sample.conf 파일 복사
$ sudo cp logstash-sample.conf ./conf.d/first-pipline.conf
- conf.d 디렉토리 아래에 해당 파일 복사한다.
✅ 02-10. 모든 서비스 재시작
# 서비스 시작
$ sudo service elasticsearch start
# 서비스 재시작
$ sudo service elasticsearch restart
# $ sudo service kibana restart
# $ sudo service logstash restart
# $ sudo service filebeat restart
# 서비스 상태
$ sudo service elasticsearch status
# 서비스 종료
$ sudo service elasticsearch stop
# 프로세스 확인
$ ps -ef | grep elasticsearch
localhost:9200 # elasticsearch 확인
localhost:5601 # kibana 확인
- 위 Command를 사용하여 시작 및 프로세스 확인을 진행 한다.
참고 자료
'Elasticsearch > 개인 스터디' 카테고리의 다른 글
[ES 개인 스터디] 10. 로그스태시 파일비트 개요 (0) | 2023.04.24 |
---|---|
[ES 개인 스터디] 09. 키바나 시각화 준비 (0) | 2023.04.24 |
[ES 개인 스터디] 08. 검색문제와 이해 (1) | 2023.04.24 |
[ES 개인 스터디] 07. URL을 이용한 검색 요청 (0) | 2023.04.24 |
[ES 개인 스터디] 06. Elasticsearch JSON을 이용한 검색 요청 (0) | 2023.04.24 |
블로그의 정보
기록하고, 복기하고
ymkim