[ELK] elastic stack ๊ตฌ์ถ•ํ•˜์—ฌ ๋กœ๊ทธ ์ˆ˜์ง‘, ๊ด€๋ฆฌ ํ•˜๊ธฐ (+ spring boot)

๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด ์ตœ๊ทผ prometheus์™€ grafana๋ฅผ ํ†ตํ•ด metric์„ ์ˆ˜์ง‘ํ–ˆ๋‹ค. 

์ด๋ฒˆ์—” ๋กœ๊ทธ ์ˆ˜์ง‘์„ ์œ„ํ•ด elastic stack (elastic search + logstash + kibana) + filebeat ๋กœ ๋กœ๊ทธ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•ด๋ณด์•˜๋‹ค. 

 

 

๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ๋‹ค.

  • 1. ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ถ„์„ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ํ–‰๋™ ํŒจํ„ด์„ ํŒŒ์•…ํ•˜๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์„œ๋น„์Šค ๊ฐœ์„  ๋ฐ ๋งˆ์ผ€ํŒ… ์ „๋žต์„ ์„ธ์šธ ์ˆ˜ ์žˆ๋‹ค.
  • 2. ์˜ค๋ฅ˜ ๋ฐ ๋ฒ„๊ทธ ์ถ”์  ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ๋‚ด ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋‚˜ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ถ”์ ํ•  ์ˆ˜ ์žˆ์–ด, ์†Œํ”„ํŠธ์›จ์–ด์˜ ์•ˆ์ •์„ฑ๊ณผ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 3. ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ž‘์—…, API ํ˜ธ์ถœ, ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๋“ฑ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ ๋ฌธ์ œ์ ์„ ์ฐพ์•„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 4. ๋ณด์•ˆ ๊ฐ์‹œ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ๋‚ด์˜ ๋น„์ •์ƒ์ ์ธ ํ™œ๋™, ํ•ดํ‚น ์‹œ๋„, ์ธ์ฆ ์‹คํŒจ ๋“ฑ์„ ์‹๋ณ„ํ•˜๊ณ , ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ ๋ณด์•ˆ์˜ ์œ ์ง€๋ฅผ ๋„์šธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์‚ฌ์ด๋ฒ„ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋Œ€์‘ ์—ญ์‹œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

 

๋กœ๊ทธ ์ˆ˜์ง‘์„ ํ•ด์•ผ๊ฒ ๋‹ค ๋Š๋‚€ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” " ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ๋‚ด ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋‚˜ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ถ”์ ํ•˜์—ฌ ์žฅ์• ์— ๋Œ€์ฒ˜ํ•˜๊ณ , ์„œ๋น„์Šค์˜ ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๊ฐœ์„ " ํ•  ์ˆ˜์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. 

 

 

 

โ€ป ELK ์Šคํƒ ์ด๋ž€?

Elasticsearch: JSON ๊ธฐ๋ฐ˜์˜ ๋ถ„์‚ฐํ˜• ์˜คํ”ˆ ์†Œ์Šค ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ์—”์ง„, ์ฃผ๋กœ REST API๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•œ๋‹ค.


Logstash: ์—ฌ๋Ÿฌ ์†Œ์Šค์—์„œ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๋ณ€ํ™˜ํ•œ ํ›„, Elasticsearch ๊ฐ™์€ "stash"๋กœ ์ „์†กํ•˜๋Š” ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งํ•œ๋‹ค.


Kibana: Elasticsearch์—์„œ ์ƒ‰์ธ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ณด๊ณ  ์‹œ๊ฐํ™”ํ•˜๋ฉฐ ๋ง‰๋Œ€ ์ฐจํŠธ, ์›ํ˜• ์ฐจํŠธ, ํ‘œ, ํžˆ์Šคํ† ๊ทธ๋žจ, ์ง€๋„ ๋“ฑ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. 

 

 

Filebeat: 

  • Filebeat๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋œ ์„ค๊ณ„๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ์ž์›์„ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์„ฑ๋Šฅ์ƒ์˜ ์ด์ ์ด ์žˆ๋‹ค.
  • ์ˆ˜์ง‘ํ•œ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ElasticSearch ๋˜๋Š” Logstash์™€ ๊ฐ™์€ ์ €์žฅ์†Œ๋กœ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „์†กํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์ค‘์•™ ์ง‘์ค‘ํ™”๋œ ๋กœ๊ทธ ์‹œ์Šคํ…œ์—์„œ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ ์•„ํ‚คํ…ํŠธ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. 

log file๋“ค์„ Filebeat์—์„œ ์ฝ์–ด Logstash๋กœ ๋ณด๋‚ด์ค€๋‹ค. 

Logstash๋Š” ์ˆ˜์ง‘ํ•œ log๋ฅผ ํ•„ํ„ฐ๋ฅผ ๊ฑฐ์ณ Elasticsearch๋กœ ๋ณด๋‚ด์ฃผ๊ณ 

kibana์—์„œ ์ด๋ฅผ ์‹œ๊ฐํ™” ํ•ด์ค€๋‹ค.

 

1. Application ๋กœ๊ทธ ์ˆ˜์ง‘

๋จผ์ € Spring Boot Application์—์„œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•ด์•ผ ํ•œ๋‹ค. logback ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ console์— ์ฐํžˆ๋Š” ๋กœ๊ทธ๋“ค์„ ํŒŒ์ผ๋กœ ๋ฐฑ์—…ํ•ด์ฃผ์—ˆ๋‹ค.

 

์ง€๊ธˆ์€ ์ฝ˜์†”์— ์ฐํžˆ๋Š” log ์ „๋ถ€๋ฅผ logback ํ•ด์ฃผ์—ˆ์ง€๋งŒ ์ถ”ํ›„์— aop๋ฅผ ํ™œ์šฉํ•ด์„œ request, error, respones์— ๋Œ€ํ•œ ๋กœ๊ทธ๋งŒ ์ฐ์–ด๋„ ๊ดœ์ฐฎ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. 

 

- logback-spring.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />

    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %clr(%5level) %cyan(%logger) - %msg%n" />
    <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %5level %logger - %msg%n" />

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>./log/%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <springProfile name="local">
        <logger name="com.feelcoding.logbackdemo" level="DEBUG" />
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
<!--    <springProfile name="dev|stg">-->
<!--        <root level="INFO">-->
<!--            <appender-ref ref="CONSOLE" />-->
<!--            <appender-ref ref="FILE" />-->
<!--        </root>-->
<!--    </springProfile>-->
    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>

 

 

2. Docker๋กœ ELK ์‹คํ–‰ ๋ฐ ์„ค์ •

https://github.com/deviantony/docker-elk

 

GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose.

The Elastic stack (ELK) powered by Docker and Compose. - GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose.

github.com

 

์œ„ repository์—์„œ clone๋ถ€ํ„ฐ ํ•ด์ฃผ์ž.

 

 

 

- docker-compose.yml

version: '3.2'

services:
  elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: volume
        source: elasticsearch
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: elastic
      # Use single node discovery in order to disable production mode and avoid bootstrap checks
      # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
      discovery.type: single-node
    networks:
      - elk

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
    ports:
      - "5044:5044"
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    build:
      context: kibana/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./kibana/config/kibana.yml
        target: /usr/share/kibana/config/kibana.yml
        read_only: true
    ports:
      - "5601:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch

  filebeat:
    build:
      context: filebeat/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - /home/kevin/jikgong/logs:/var/log/host_logs:ro
      - ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
    networks:
      - elk
    depends_on:
      - logstash


networks:
  elk:
    driver: bridge

volumes:
  elasticsearch:

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผํ•  ๊ฒƒ๋“ค์€ filebeat ๋ถ€๋ถ„์ด๋‹ค.

๋‹ค๋“ค elk yml ํŒŒ์ผ์„ ์„ธํŒ…ํ•ด๋‘” repository์—์„œ clone ํ›„ elk๋ฅผ ์‹œ์ž‘ํ•˜์‹คํ…๋ฐ ๊ทธ๋Ÿผ filebeat ์ปจํ…Œ์ด๋„ˆ ์„ค์ • ๋ถ€๋ถ„์€ ์—†๋‹ค. 

logstash๋กœ ๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ redis, kafka ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์žˆ์ง€๋งŒ ์ €๋Š” filebeat๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— docker compose ํŒŒ์ผ์— ๋”ฐ๋กœ ์ž‘์„ฑํ•ด๋‘์—ˆ๋‹ค. 

 

์‚ฌ์‹ค ์ง€๊ธˆ์™€์„œ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ตณ์ด filebeat๋ฅผ docker๋กœ ๋„์› ์–ด์•ผ ํ–ˆ๋‚˜ ์‹ถ๋‹ค. ์ด ๊ธ€์„ ๋ณด๊ณ  ๊ณ„์‹  ๋ถ„์ด๋ผ๋ฉด filebeat๋Š” ๊ทธ๋ƒฅ ์„œ๋ฒ„ ํ™˜๊ฒฝ์— ์„ค์น˜ํ•ด์„œ ์“ฐ์ž.. 

 

๋‚˜๋Š” docker๋กœ ๋„์› ๊ธฐ ๋•Œ๋ฌธ์— 

[์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ํŒŒ์ผ] - [์šฐ๋ถ„ํˆฌ ํŒŒ์ผ] - [filebeat ์ปจํ…Œ์ด๋„ˆ] ์ด๋ ‡๊ฒŒ ๋ณผ๋ฅจ์„ ๊ฑธ์–ด๋’€๋‹ค.

 

 

 

์„ค์ •ํŒŒ์ผ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ดํŽด๋ณด์ž

 

ElasticSearch

- Dockerfile

ARG ELK_VERSION

# https://www.docker.elastic.co/
FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}

# Add your elasticsearch plugins setup here
# Example: RUN elasticsearch-plugin install analysis-icu
RUN elasticsearch-plugin install analysis-nori

 

 

- elasticsearch.yml

---
## Default Elasticsearch configuration from Elasticsearch base image.
## https://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/config/elasticsearch.yml
#
cluster.name: "docker-cluster"
network.host: 0.0.0.0

 

 

Logstash

- Dockerfile

ARG ELK_VERSION

# https://www.docker.elastic.co/
FROM docker.elastic.co/logstash/logstash:${ELK_VERSION}

# Add your logstash plugins setup here
# Example: RUN logstash-plugin install logstash-filter-json

 

- config/logstash.yml

---
## Default Logstash configuration from Logstash base image.
## https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml
#
http.host: "0.0.0.0"
  # xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]

 

 

- pipeline/logstash.yml

input {
    beats {
        port => 5044
    }
}

## Add your filters / logstash plugins configuration here

output {
        elasticsearch {
                hosts => "elasticsearch:9200"
                index => "logstash-%{+yyyy.MM.dd}"
                user => "elastic"
                password => "elastic"
                ecs_compatibility => disabled
        }
}

 

์—ฌ๊ธฐ์„œ input ์˜ port๋Š” logstash๊ฐ€ filebeat๋กœ ๋ถ€ํ„ฐ ๋ฐ›์„ port์—ฌ์•ผํ•œ๋‹ค.

๋‚˜์ค‘์— filebeat ์„ค์ • ํŒŒ์ผ์—์„œ output port์™€ ๋งž์ถฐ์ฃผ๋ฉด ๋œ๋‹ค.

 

 

Kibana

- Dockerfile

ARG ELK_VERSION

# https://www.docker.elastic.co/
FROM docker.elastic.co/kibana/kibana:${ELK_VERSION}

# Add your kibana plugins setup here
# Example: RUN kibana-plugin install <name|url>

 

 

- kibana.yml

---
## Default Kibana configuration from Kibana base image.
## https://github.com/elastic/kibana/blob/master/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.ts
#
server.name: kibana
server.host: 0.0.0.0
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true

 

 

filebeat

- Dockerfile

ARG ELK_VERSION

FROM docker.elastic.co/beats/filebeat:${ELK_VERSION}

COPY filebeat.yml /usr/share/filebeat/filebeat.yml
USER root

RUN mkdir /var/logs

RUN chown -R root /usr/share/filebeat

 

filebeat ๋„ Dockerfile ์ƒ์„ฑํ•  ๋•Œ ๋ฒ„์ „์„ ELK_VERSION์œผ๋กœ ๊ฐ™์ด ๋งž์ถฐ์ค˜์•ผํ•œ๋‹ค.

 

๋‚˜๋Š” ๋ฒ„์ „ ์•ˆ ๋งž์ถฐ์„œ 1์‹œ๊ฐ„์€ ๊นŒ๋จน์€ ๊ฒƒ ๊ฐ™์€๋ฐ.. ์‚ฌ์‹ค ๋กœ๊ทธ ๋ดค์œผ๋ฉด ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ธ๋ฐ ํ•˜๋ฃจ ์ข…์ผ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ ์—๋Ÿฌ๋ž‘ ์‹ธ์šฐ๋‹ˆ ๋จธ๋ฆฌ๋„ ์•ˆ ๋Œ์•„๊ฐ€๊ณ  ์›์ธ ํŒŒ์•…์ด ์‰ฝ์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค..

 

 

- filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
  - /var/log/host_logs/*.log

output.logstash:
 hosts: ["logstash:5044"]

 

์—ฌ๊ธฐ์„œ pahts๋Š” ๋ณธ์ธ์ด ์ฝ์œผ๋ ค๊ณ  ํ•˜๋Š” log์˜ ์œ„์น˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

๋‚˜๋Š” host_logs/ ๋ฐ‘์— access_log.{๋‚ ์งœ}.log ์™€ info.log ๋‘๊ฐ€์ง€ log ํŒŒ์ผ์„ ์ฝ์–ด์ฃผ๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋‹ค. 

 

 

 

 

์—ฌ๊ธฐ๊นŒ์ง€ ์„ธํŒ…ํ–ˆ๋‹ค๋ฉด docker-compose.yml ํŒŒ์ผ ์œ„์น˜๋กœ ๋Œ์•„๊ฐ€ ์‹คํ–‰ํ•ด์ค€๋‹ค. 

 

elastic search => logstash, kibana => filebeat ์ˆœ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋„์›Œ์ ธ์•ผ ์ž˜ ์‹คํ–‰๋œ๋‹ค. ํ˜น์‹œ๋‚˜ docker compose๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๋ถ„์ด๋ผ๋ฉด ์ฐธ๊ณ ํ•˜์‹œ๊ธธ

 

 

 

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž˜ ๋„์›Œ์กŒ๋‹ค๋ฉด 5601 ํฌํŠธ๋กœ ๋“ค์–ด๊ฐ€๋ณด์ž. kibana ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ด์ œ index pattern์„ ๋“ฑ๋กํ•˜๋Ÿฌ ๊ฐ€๋ณด์ž

 

์ด์ „์— logstash ์„ค์ • ํŒŒ์ผ์—์„œ ๋“ฑ๋กํ•ด์ค€ index pattern ๋“ค์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค. 

๋“ฑ๋กํ•ด์ฃผ๊ณ  ์‹ถ์€๊ฒƒ๋งŒ ๋“ฑ๋กํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

๋“ฑ๋ก ํ›„ discover ํƒญ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด!!! 

๋“œ๋””์–ด ๊ทธํ† ๋ก ๋ณด๊ณ ์‹ถ์—ˆ๋˜ ๋กœ๊ทธ๋“ค์ด ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

 

 

 

Docker ๋ณผ๋ฅจ ์„ค์ •ํ•˜๋Š” ๊ฒƒ ๋ถ€ํ„ฐ, elk ๋‹ค์–‘ํ•œ ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ ๊นŒ์ง€ ๊ฝค๋‚˜ ๋งŽ์€ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์—ˆ๋‹ค.

 

docker compose ํŒŒ์ผ์—์„œ network๋ฅผ elk๋กœ ์žก์•„๋’€์ง€๋งŒ {๋””๋ ‰ํ† ๋ฆฌ๋ช…}_elk ๋กœ ์ƒ๊ฒจ elk network์— ๋„์›Œ๋†“์€ filebeat์™€ ๋‹ค๋ฅธ network์— elk ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋œจ๋Š” ๋“ฑ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋“ค์ด ๋งŽ์•˜์ง€๋งŒ ์•„๋ฌดํŠผ ์—ฐ๋™๊นŒ์ง€ ์„ฑ๊ณตํ–ˆ๋‹ค.

 

์ด๋ฒˆ์—๋„ ๋Š๊ผˆ์ง€๋งŒ ์ œ๋ฐœ ๋กœ๊ทธ์ข€ ์ž˜ ๋ณด์ž!! ๋กœ๊ทธ๋งŒ ์ž์„ธํžˆ ์‚ดํŽด๋ดค์–ด๋„ ์ด๋ณด๋‹จ ํ›จ์”ฌ ๋นจ๋ฆฌ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. 

 

elastic stack์ด ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๊ต‰์žฅํ•˜๋‹ค๊ณ .. ๋“ค์—ˆ๋Š”๋ฐ ๋กœ๊ทธ ๋ถ„์„๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณต๋ถ€ํ•ด์„œ ์žฅ์•  ๋Œ€์ฒ˜์— ๋Šฅ์ˆ™ํ•œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค