웹사이트 검색

CentOS 8에 Elastic Stack(Elasticsearch, Logstash 및 Kibana)을 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 센트OS 8
  • 센트OS 7

이 페이지에서

  1. 1단계 - 탄력적 저장소 추가
  2. 2단계 - Elasticsearch 설치 및 구성
  3. 3단계 - Kibana 대시보드 설치 및 구성
  4. 4단계 - Nginx를 Kibana용 리버스 프록시로 설정\n
  5. 5단계 - Logstash 설치 및 구성
  6. 6단계 - 클라이언트에 Filebeat 설치
    1. - CentOS 8에 Filebeat 설치
    2. - Ubuntu 18.04에 Filebeat 설치
    3. - Filebeat 구성

    Elasticsearch는 Java로 개발된 Lucene 기반의 오픈 소스 검색 엔진입니다. HTTP 대시보드 웹 인터페이스(Kibana)와 함께 분산 및 다중 테넌트 전체 텍스트 검색 엔진을 제공합니다. 데이터는 JSON 문서 체계로 쿼리, 검색 및 저장됩니다. Elasticsearch는 로그 파일을 포함하여 모든 종류의 텍스트 문서를 검색하는 데 사용할 수 있는 확장 가능한 검색 엔진입니다. Elasticsearch는 Elastic Stack 또는 ELK Stack의 핵심입니다.

    Logstash는 이벤트 및 로그를 관리하기 위한 오픈 소스 도구입니다. 데이터 수집을 위한 실시간 파이프라이닝을 제공합니다. Logstash는 로그 데이터를 수집하고 데이터를 JSON 문서로 변환하여 Elasticsearch에 저장합니다.

    Kibana는 Elasticsearch용 오픈 소스 데이터 시각화 도구입니다. Kibana는 멋진 대시보드 웹 인터페이스를 제공합니다. Elasticsearch에서 데이터를 관리하고 시각화할 수 있습니다. 아름다울 뿐만 아니라 강력합니다.

    이 튜토리얼에서는 CentOS 8 서버에 Elastic Stack을 설치하고 구성하는 단계별 과정을 보여줍니다. Elasticsearch, Logstash 및 Kibana를 설치하고 설정합니다. 그런 다음 클라이언트 Ubuntu 및 CentOS 시스템에서 Beats filebeat를 설정합니다.

    전제 조건

    • CentOS 8 64비트, 4GB RAM - elk-master
    • CentOS 8 64비트, 1GB RAM - client01
    • Ubuntu 18.04 64비트, 1GB RAM - client02

    우리가 할 일:

    • CentOS 8 서버에 Elastic Repository 추가
    • Elasticsearch 설치 및 구성
    • Kibana 대시보드 설치 및 구성
    • Nginx를 Kibana용 리버스 프록시로 설정\n
    • Logstash 설치 및 구성
    • Filebeat 설치 및 구성
    • 테스트

    1단계 - 탄력적 저장소 추가

    먼저 Elasticsearch 키와 리포지토리를 CentOS 8 서버에 추가하려고 했습니다. Elastic.co에서 제공하는 Elasticsearch 리포지토리를 사용하여 Elasticsearch, Logstash, Kibana 및 Beats를 비롯한 Elastic 제품을 설치할 수 있었습니다.

    다음 명령을 사용하여 탄력적 키를 시스템에 추가합니다.

    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

    그런 다음 /etc/yum.repos.d 디렉토리로 이동하여 새 리포지토리 파일 elasticsearch.repo를 만듭니다.

    cd /etc/yum.repos.d/
    vim elasticsearch.repo

    아래에 elasticsearch 리포지토리를 붙여넣습니다.

    [elasticsearch-7.x]
    name=Elasticsearch repository for 7.x packages
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md

    저장하고 닫습니다.

    이제 아래의 dnf 명령을 사용하여 시스템에서 사용 가능한 모든 저장소를 확인하십시오.

    dnf repolist

    그리고 CentOS 8 서버에 추가된 Elasticsearch 리포지토리를 받게 됩니다.

    결과적으로 Elasticsearch, Logstash, Kibana 등과 같은 Elastic 제품을 설치할 수 있습니다.

    2단계 - Elasticsearch 설치 및 구성

    이 단계에서는 Elasticsearch를 설치하고 구성하려고 했습니다.

    아래의 dnf 명령을 사용하여 Elasticsearch 패키지를 설치합니다.

    sudo dnf install elasticsearch -y

    설치가 완료되면 /etc/elasticsearch 디렉터리로 이동하고 vim 편집기를 사용하여 구성 파일 elasticsearch.yml을 편집합니다.

    cd /etc/elasticsearch/
    vim elasticsearch.yml

    다음 행의 주석을 제거하고 각 행의 값을 아래와 같이 변경하십시오.

    network.host: 127.0.0.1
    http.port: 9200

    저장하고 닫습니다.

    선택적으로:

    JVM 구성 파일 jvm.options를 편집하여 elasticsearch를 조정하고 보유한 메모리 양에 따라 힙 크기를 설정할 수 있습니다.

    vim 편집기를 사용하여 JVM 구성 jvm.options를 편집합니다.

    vim jvm.options

    아래와 같이 Xms 및 Xmx 구성을 통해 최소/최대 힙 크기를 변경합니다.

    -Xms512m
    -Xmx512m

    저장하고 닫습니다.

    다음으로 systemd 관리자 구성을 다시 로드하고 부팅 시간에 elasticsearch 서비스를 추가합니다.

    sudo systemctl daemon-reload
    sudo systemctl enable elasticsearch

    그런 다음 Elasticsearch 서비스를 시작합니다.

    sudo systemctl start elasticsearch

    결과적으로 Elasticsearch는 CentOS 8 서버의 기본 포트 9200을 사용하여 로컬 IP 주소 127.0.0.1 뒤에서 실행됩니다.

    아래의 curl 명령어를 사용하여 Elasticsearch를 확인할 수 있습니다.

    curl -XGET 'http://127.0.0.1:9200/?pretty'

    그리고 아래는 당신이 얻게 될 결과입니다.

    3단계 - Kibana 대시보드 설치 및 구성

    Elasticsearch를 설치한 후 CentOS 8 서버에 Kibana 대시보드를 설치하고 구성하려고 했습니다.

    아래의 dnf 명령을 사용하여 Kibana 대시보드를 설치합니다.

    sudo dnf install kibana

    설치가 완료되면 /etc/kibana 디렉터리로 이동하여 구성 파일 kibana.yml을 편집합니다.

    cd /etc/kibana/
    vim kibana.yml

    주석을 해제하고 아래와 같이 일부 라인 구성을 변경합니다.

    server.port: 5601
    server.host: "127.0.0.1"
    elasticsearch.url: "http://127.0.0.1:9200"

    저장하고 닫습니다.

    다음으로 시스템 부팅에 kibana 서비스를 추가하고 kibana 서비스를 시작합니다.

    sudo systemctl enable kibana
    sudo systemctl start kibana

    Kibana 서비스가 CentOS 8 서버에서 실행 중이며 다음 명령을 사용하여 확인하십시오.

    systemctl status kibana
    netstat -plntu

    그러면 아래와 같은 결과를 얻게 됩니다.

    결과적으로 Kibana 서비스가 시작되어 기본 TCP 포트 5601을 실행합니다.

    4단계 - Nginx를 Kibana용 리버스 프록시로 설정

    이 단계에서는 Nginx 웹 서버를 설치하고 Kibana 대시보드의 역방향 프록시로 설정했습니다.

    아래의 dnf 명령을 사용하여 Nginx 및 httpd-tools를 설치합니다.

    sudo dnf install nginx httpd-tools

    설치가 완료되면 /etc/nginx/conf.d 디렉토리로 이동하여 새 구성 파일 kibana.conf를 생성합니다.

    cd /etc/nginx/conf.d/
    vim kibana.conf

    다음 구성을 붙여넣습니다.

    server {
        listen 80;
     
        server_name elk.hakase-labs.io;
     
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.kibana-user;
     
        location / {
            proxy_pass http://127.0.0.1:5601;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

    저장하고 닫습니다.

    다음으로 Kibana 액세스 보안을 위한 기본 인증을 생성해야 합니다. hakase 사용자를 자신의 것으로 변경하고 아래와 같이 htpasspwd 명령을 실행합니다.

    sudo htpasswd -c /etc/nginx/.kibana-user hakase
    TYPE YOUR PASSWORD

    비밀번호를 입력하고 nginx 구성을 테스트합니다.

    nginx -t

    오류가 없는지 확인하십시오.

    이제 nginx 서비스를 시스템 부팅에 추가하고 nginx 서비스를 시작하십시오.

    systemctl enable nginx
    systemctl start nginx

    그 결과 Nginx 설치 및 Kibana 대시보드용 리버스 프록시 구성이 완료되었습니다.

    5단계 - Logstash 설치 및 구성

    이 단계에서는 로그 전달자인 logstash를 설치하고 구성했습니다. 우리는 logstash를 설치하고 입력 비트를 설정하고 grok이라는 logstash 플러그인을 사용하여 syslog 필터링을 설정한 다음 출력을 elasticsearch로 설정합니다.

    아래의 dnf 명령을 사용하여 logstash를 설치하십시오.

    sudo dnf install logstash

    설치가 완료되면 /etc/logstash 디렉토리로 이동하고 vim 편집기를 사용하여 JVM 구성 파일 jvm.options를 편집합니다.

    cd /etc/logstash/
    vim jvm.options

    아래와 같이 Xms 및 Xmx 구성을 통해 최소/최대 힙 크기를 변경합니다.

    -Xms512m
    -Xmx512m

    저장하고 닫습니다.

    다음으로 /etc/logstash/conf.d 디렉토리로 이동하여 input-beat.conf라는 beats 입력에 대한 구성 파일을 만듭니다.

    cd /etc/logstash/conf.d/
    vim input-beat.conf

    다음 구성을 붙여넣습니다.

    input {
      beats {
        port => 5044
      }
    }

    저장하고 닫습니다.

    이제 syslog-filter.conf 구성 파일을 생성합니다.

    vim syslog-filter.conf

    다음 구성을 붙여넣습니다.

    filter {
      if [type] == "syslog" {
        grok {
          match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
          add_field => [ "received_at", "%{@timestamp}" ]
          add_field => [ "received_from", "%{host}" ]
        }
        date {
          match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
        }
      }
    }

    저장하고 닫습니다.

    그런 다음 elasticsearch output-elasticsearch.conf에 대한 출력 구성을 만듭니다.

    vim output-elasticsearch.conf

    다음 구성을 붙여넣습니다.

    output {
      elasticsearch { hosts => ["127.0.0.1:9200"]
        hosts => "127.0.0.1:9200"
        manage_template => false
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
        document_type => "%{[@metadata][type]}"
      }
    }

    저장하고 닫습니다.

    다음으로 시스템 부팅에 logstash 서비스를 추가하고 logstash 서비스를 시작합니다.

    systemctl enable logstash
    systemctl start logstash

    logstash 서비스가 시작되어 실행 중입니다. 다음 명령을 사용하여 확인하십시오.

    systemctl status logstash
    netstat -plntu

    그러면 아래와 같은 결과를 얻게 됩니다.

    결과적으로 logstash 로그 전달자가 기본 TCP 포트 5044를 사용하여 CentOS 8 서버에서 실행되고 있습니다. 그리고 기본 Elastic Stack 설치가 완료되었으며 로그를 Elastic(ELK Stack)으로 전달하고 모니터링할 준비가 되었습니다. 섬기는 사람.

    6단계 - 클라이언트에 Filebeat 설치

    이 단계에서는 Ubuntu 및 CentOS 시스템에서 filebeat를 설정하는 방법을 보여드리겠습니다. 우리는 filebeat를 설치하고 두 서버의 로그를 탄력적 서버의 Logstash로 전달하도록 구성합니다.

    - CentOS 8에 Filebeat 설치

    다음 명령을 사용하여 Elasticsearch 키를 CentOS 8 시스템에 추가합니다.

    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

    이제 /etc/yum.repos.d 디렉토리로 이동하고 vim 편집기를 사용하여 elasticsearch.repo 파일을 생성합니다.

    cd /etc/yum.repos.d/
    vim elasticsearch.repo

    다음 구성을 붙여넣습니다.

    [elasticsearch-7.x]
    name=Elasticsearch repository for 7.x packages
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md

    저장하고 닫습니다.

    이제 아래의 dnf 명령을 사용하여 filebeat를 설치합니다.

    sudo dnf install filebeat

    filebeat 설치가 완료될 때까지 기다리십시오.

    - Ubuntu 18.04에 Filebeat 설치

    먼저 apt-transport-https 패키지를 설치합니다.

    sudo apt install apt-transport-https

    그런 다음 다음 명령을 사용하여 elasticsearch 키와 리포지토리를 추가합니다.

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

    이제 아래의 apt 명령을 사용하여 모든 리포지토리를 업데이트하고 filebeat를 우분투 시스템에 설치합니다.

    sudo apt update
    sudo apt install filebeat

    filebeat 설치가 완료될 때까지 기다리십시오.

    - Filebeat 구성

    /etc/filebeat 디렉토리에 있는 filebeat 구성입니다. filebeat 디렉터리로 이동하여 filebeat.yml 구성 파일을 편집합니다.

    cd /etc/filebeat/
    vim filebeat.yml

    이제 아래와 같이 기본 elasticsearch 출력을 비활성화합니다.

    #output.elasticsearch:
      # Array of hosts to connect to.
      #  hosts: ["127.0.0.1:9200"]

    그런 다음 logstash 출력을 활성화하고 logstash 호스트 IP 주소를 지정합니다.

    output.logstash:
      # The Logstash hosts
      hosts: ["10.5.5.25:5044"]

    저장하고 닫습니다.

    다음으로 filebeat 모듈을 활성화해야 합니다. 아래 filebeat 명령을 실행하여 filebeat 모듈 목록을 가져옵니다.

    filebeat modules list

    다음 명령을 사용하여 시스템 모듈을 활성화합니다.

    filebeat modules enable system

    filebeat 시스템 모듈은 구성 파일인 module.d/system.yml로 활성화되었습니다.

    vim 편집기를 사용하여 시스템 모듈 구성을 편집합니다.

    cd /etc/filebeat/
    vim modules.d/system.yml

    syslog 파일 및 ssh 인증 파일의 경로 주석을 제거하십시오.

    CentOS 시스템의 경우:

      # Syslog
      syslog:
        enabled: true
        var.paths: ["/var/log/messages"]

      # Authorization logs
      auth:
        enabled: true
        var.paths: ["/var/log/secure"]

    Ubuntu 시스템의 경우:

      # Syslog
      syslog:
        enabled: true
        var.paths: ["/var/log/syslog"]

      # Authorization logs
      auth:
        enabled: true
        var.paths: ["/var/log/auth.log"]

    저장하고 닫습니다.

    이제 filebeat 서비스를 시스템 부팅에 추가하고 서비스를 시작합니다.

    systemctl enable filebeat
    systemctl start filebeat

    filebeat 서비스가 실행 중이며 다음 명령을 사용하여 확인할 수 있습니다.

    systemctl status filebeat

    그러면 아래와 같이 결과가 표시됩니다.

    아래는 CentOS 8 서버의 결과입니다.

    아래는 Ubuntu Server 18.04에서 가져온 것입니다.

    결과적으로 탄력적 스택 서버 IP 주소 10.5.5.12에서 filebeat와 logstash 서비스 간의 연결이 설정되었습니다.

    7단계 - 테스트

    웹 브라우저를 열고 주소 표시줄에 Elastic Stack 설치 도메인 이름을 입력하세요.

    이제 생성한 기본 인증 계정을 사용하여 Kibana 대시보드에 로그인합니다.

    그러면 아래와 같이 Kibana 대시보드가 표시됩니다.

    이제 logstash에 filebeat 연결 후 자동으로 생성된 elasticsearch 인덱스 데이터에 연결합니다. Elasticsearch 인덱스에 연결 링크를 클릭합니다.

    filebeat-* 인덱스 패턴을 생성하고 다음 단계 버튼을 클릭합니다.

    필터 이름으로 @timestamp 필터를 선택하고 인덱스 패턴 생성을 클릭합니다.

    그리고 filebeat-* 인덱스 패턴이 생성되었으니 왼쪽의 Discover 메뉴를 클릭합니다.

    그리고 아래와 같이 filebeat 클라이언트에서 로그 데이터를 가져옵니다.

    CentOS 8 시스템에 대한 로그입니다.

    Ubuntu 시스템에 대한 로그.

    이에 따라 filebeat 시스템 모듈에 정의된 로그 데이터가 Elastic Stack 서버로 전달되었습니다.

    그리고 CentOS 8에서 Elastic Stack 설치 및 구성이 성공적으로 완료되었습니다.

    참조

    • https://www.elastic.co/guide/index.html