6 분 소요

📌 Topic

  • 💡 Logstash, Filebeat 스펙
  • 💡 Logstash, Filebeat 설치 및 구동

⚡ 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 # jdk 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

이슈 참고
Logstash 레포

  1. 직접 statup.options 파일을 생성 /etc/logstash/ 경로에 생성한다.
  2. 후에 위에서 사용하였던, sudo dpkg -i logstash-7.6.1.deb 명령어 사용.

2022_03_17_설치파일_확인

# 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. 로그 스태시 실행 및 데이터 입력

2022_03_16_logstash_log

# * /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 구동 및 실습

2022_03_09_파일비츠_사진

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를 사용하여 시작 및 프로세스 확인을 진행 한다.

참고 자료

댓글남기기