Skip to content

๐Ÿ”ง Redis + ELK Stack ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ฐ€์ด๋“œย #107

@Tae4an

Description

@Tae4an

1๏ธโƒฃ TCP ์—ฐ๊ฒฐ ์‹คํŒจ

๐Ÿšจ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

WARN in net.logstash.logback.appender.LogstashTcpSocketAppender[REDIS] - Log destination localhost/<unresolved>:5044: connection failed

๐Ÿ” ์›์ธ ๋ถ„์„

  • Spring Boot์—์„œ Logstash๋กœ ์ง์ ‘ TCP ์—ฐ๊ฒฐ ์‹œ๋„
  • Logstash TCP input ์„ค์ • ๋ˆ„๋ฝ ๋˜๋Š” ํฌํŠธ ๋ฏธ์˜คํ”ˆ

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Redis Appender๋กœ ์„ค์ • ๋ณ€๊ฒฝ:

<appender name="REDIS" class="com.cwbase.logback.RedisAppender">
    <!-- Redis ์„ค์ • -->
</appender>

2๏ธโƒฃ Redis URL ํŒŒ์‹ฑ ์—๋Ÿฌ

๐Ÿšจ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

Invalid destination 'redis://qpalz': unparseable port (was '//qpalz')

๐Ÿ” ์›์ธ ๋ถ„์„

  • logback-spring.xml์˜ Redis ์—ฐ๊ฒฐ URL ํ˜•์‹ ์˜ค๋ฅ˜
  • LogstashAccessTcpSocketAppender ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒ

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๊ฐœ๋ณ„ ์†์„ฑ์œผ๋กœ ์„ค์ •:

<appender name="REDIS" class="com.cwbase.logback.RedisAppender">
    <host>${SERVER_URL}</host>
    <port>6379</port>
    <password>${REDIS_PASSWORD}</password>
    <key>logstash</key>
    <type>redis</type>
    <layout class="net.logstash.logback.layout.LogstashLayout">
        <customFields>{"application":"test"}</customFields>
    </layout>
</appender>

3๏ธโƒฃ Logback ์ดˆ๊ธฐํ™” ์‹คํŒจ

๐Ÿšจ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

Logging system failed to initialize using configuration from 'classpath:logback-spring.xml'

๐Ÿ” ์›์ธ ๋ถ„์„

  • Appender ํด๋ž˜์Šค ๋ฌธ์ œ
  • Redis ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ํ˜•์‹ ์˜ค๋ฅ˜

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. ์˜์กด์„ฑ ์ถ”๊ฐ€:
implementation 'com.cwbase:logback-redis-appender:1.1.5'
  1. Appender ์„ค์ • ๋ณ€๊ฒฝ:
<appender name="REDIS" class="com.cwbase.logback.RedisAppender">
    <host>${SERVER_URL}</host>
    <port>6379</port>
    <password>${REDIS_PASSWORD}</password>
    <key>logstash</key>
    <type>redis</type>
    <layout class="net.logstash.logback.layout.LogstashLayout">
        <customFields>{"application":"test"}</customFields>
    </layout>
</appender>

4๏ธโƒฃ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฌธ์ œ

๐Ÿšจ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

  • spring.config.import is missing

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. application.yml ์„ค์ •:
spring:
  data:
    redis:
      host: ${SERVER_URL}
      port: 6379
      password: ${REDIS_PASSWORD}
  1. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •:
export SERVER_URL=your_server_url
export REDIS_PASSWORD=your_redis_password

5๏ธโƒฃ ๋กœ๊ทธ ์ „์†ก ์‹คํŒจ

๐Ÿ” ๋””๋ฒ„๊น… ๋‹จ๊ณ„

  1. Redis ์—ฐ๊ฒฐ ํ™•์ธ:
docker exec -it redis redis-cli -a ${REDIS_PASSWORD}
ping
  1. Logstash ๋กœ๊ทธ ํ™•์ธ:
docker logs -f logstash
  1. Redis ๋กœ๊ทธ ํ™•์ธ:
LLEN logstash
LRANGE logstash -1 -1

โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ •:
<root level="INFO">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="ASYNC_REDIS" />
</root>

<logger name="com.example" level="DEBUG" additivity="false">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="ASYNC_REDIS" />
</logger>
  1. Redis ์—ฐ๊ฒฐ ์ •๋ณด ํ™•์ธ:
docker inspect redis | grep IPAddress

๐Ÿ“ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  1. Redis ์—ฐ๊ฒฐ ์ •๋ณด ์ •ํ™•์„ฑ ํ™•์ธ
  2. Logstash ํŒŒ์ดํ”„๋ผ์ธ ์„ค์ • ๊ฒ€์ฆ
  3. ๋กœ๊ทธ ๋ ˆ๋ฒจ ์„ค์ • ํ™•์ธ
  4. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ํ™•์ธ
  5. Docker ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ƒํƒœ ์ ๊ฒ€

๐Ÿ’ก Best Practices

  • Redis Appender ์‚ฌ์šฉ ๊ถŒ์žฅ
  • ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” application.yml์—์„œ ๊ด€๋ฆฌ
  • Docker ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์„ค์ • ์ฃผ์˜
  • ๋กœ๊ทธ ๋ ˆ๋ฒจ ์ ์ ˆํžˆ ์„ค์ •

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions