์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Codedeploy ์ค๋ฅ
- docker ps -a
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- ํ๋ก๊ทธ๋๋จธ์ค
- s3 log ์ ์ฅ
- Kafka
- ์คํํ๋ ๋ฏธ์ค
- nGrinder
- redis ์กฐํ
- aws ์ฟ ํฐ
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- ํ์ดํผ๋ฐ์ด์
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- private subnet ec2 ๋ก์ปฌ ์ ์
- JPA
- aws saa ํฉ๊ฒฉ
- AWS Certified Solutions Architect - Associate
- redis ํ ์คํธ์ฝ๋
- prod docker-compose
- ์๋ฐ
- docker compose
- Entity
- ๋ค์ค ์ปจํ ์ด๋
- docker
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- docker-compose kafka
- jvm ๋ฐ๋ฐ๋ฅ๊น์ง ํํค์น๊ธฐ
- Today
- Total
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
[Spring] Docker๋ฅผ ์ด์ฉํ ElasticSearch, Logstash ์ค์ ํ๊ธฐ ๋ณธ๋ฌธ
[Spring] Docker๋ฅผ ์ด์ฉํ ElasticSearch, Logstash ์ค์ ํ๊ธฐ
๐คRyusun๐ค 2025. 3. 30. 16:20Logback.xml ํ์ผ์ ํ์ฉํ์ฌ Logstash๋ฅผ ์ค์ ํ๊ณ , ์ด๋ฅผ ํตํด ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ Elasticsearch์ ์ ์ฅํ๋ ค๊ณ ํฉ๋๋ค.
์ด ๊ธ์์๋ ์ด๋ฅผ ์ํ ํ์ํ ์ค์ ํ์ผ๋ค์ ๋ํด ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค.
1. Docker Compose ์ค์ ์ ElasticSearch ๋ฐ Logstash ์ถ๊ฐ
docker-compose.yml
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.10.0
container_name: elasticsearch
ports:
- "9200:9200"
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- ES_JAVA_OPTS=-Xms256m -Xmx256m # 256MB๋ก ์ต์ ์ค์ , ํ๋ก๋์
ํ๊ฒฝ์์๋ ์ฌ์ค์ ํ์
networks:
- elastic-network
logstash:
image: docker.elastic.co/logstash/logstash:8.10.0
container_name: logstash
ports:
- "5044:5044"
- "9600:9600"
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
networks:
- elastic-network
- ElasticSearch ์ค์
- image: ์ฌ์ฉํ ElasticSearch Docker ์ด๋ฏธ์ง๋ฅผ ์ง์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฒ์ 8.10.0์ ์ฌ์ฉํฉ๋๋ค.
- container_name: ์ปจํ ์ด๋์ ์ด๋ฆ์ elasticsearch๋ก ์ง์ ํฉ๋๋ค.
- ports: ํธ์คํธ์ ์ปจํ ์ด๋ ๊ฐ์ ํฌํธ ๋งคํ์ ์ค์ ํฉ๋๋ค. 9200 ํฌํธ๋ ElasticSearch์ ๊ธฐ๋ณธ ํฌํธ๋ก, ์ธ๋ถ์์ http://localhost:9200์ผ๋ก ์ ์ํ์ฌ ElasticSearch๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
- environment: ElasticSearch์ ํ๊ฒฝ ๋ณ์ ์ค์ ์
๋๋ค.
- discovery.type=single-node: ๋จ์ผ ๋ ธ๋ ๋ชจ๋๋ก ์ค์ ํ์ฌ ํด๋ฌ์คํฐ๊ฐ ์๋ ํ๋์ ๋ ธ๋๋ก ์คํํฉ๋๋ค.
- xpack.security.enabled=false: ๋ณด์ ๊ธฐ๋ฅ์ ๋นํ์ฑํํฉ๋๋ค. (๊ฐ๋ฐ ํ๊ฒฝ์์๋ง ๊ถ์ฅ)
- ES_JAVA_OPTS=-Xms256m -Xmx256m: ElasticSearch์ ํ ๋นํ ์ต์ ๋ฐ ์ต๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๊ฐ 256MB๋ก ์ค์ ํฉ๋๋ค.
- networks: elastic-network๋ผ๋ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์๋น์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
- Logstash ์ค์
- image: ์ฌ์ฉํ Logstash Docker ์ด๋ฏธ์ง๋ฅผ ์ง์ ํฉ๋๋ค. ๋ฒ์ 8.10.0์ ์ฌ์ฉํฉ๋๋ค.
- container_name: ์ปจํ ์ด๋์ ์ด๋ฆ์ logstash๋ก ์ค์ ํฉ๋๋ค.
- ports: ํธ์คํธ์ ์ปจํ
์ด๋ ๊ฐ์ ํฌํธ ๋งคํ์ ์ค์ ํฉ๋๋ค.
- 5044: Logstash์ ๊ธฐ๋ณธ ์ ๋ ฅ ํฌํธ๋ก, ๋ฐ์ดํฐ ์์ง์ ์ํ ํฌํธ์ ๋๋ค.
- 9600: Logstash์ HTTP API ํฌํธ์ ๋๋ค. Logstash ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- volumes: logstash.conf ํ์ผ์ ์ปจํ ์ด๋ ๋ด์ /usr/share/logstash/pipeline/logstash.conf๋ก ๋งคํํ์ฌ Logstash๊ฐ ํด๋น ์ค์ ํ์ผ์ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค.
- networks: elastic-network ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ElasticSearch์ ์ฐ๊ฒฐํฉ๋๋ค.
Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ElasticSearch์ Logstash๋ฅผ ์ฐ๊ฒฐํ๋ ์ค์ ์ ๋๋ค. ElasticSearch๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ ์ ์๋ ์๋น์ค์ด๋ฉฐ, Logstash๋ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ฒ๋ฆฌํ๋ ํ์ดํ๋ผ์ธ ์ญํ ์ ํฉ๋๋ค.
2. Logstash ์์กด์ฑ ์ถ๊ฐ
//logstash
implementation 'net.logstash.logback:logstash-logback-encoder:7.4'
3. logstash Appender ์ถ๊ฐ (logback.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- MDC ๊ฐ์ด ์์ ๋ ํ์ํ ๊ธฐ๋ณธ๊ฐ ์ค์ -->
<property name="DEFAULT_MDC" value="-"/>
<!-- MDC ๊ธฐ๋ณธ๊ฐ ์ค์ ์ ์ํ ์ด๊ธฐํ -->
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<!-- MDC ์ด๊ธฐํ๋ฅผ ์ํ TurboFilter -->
<turboFilter class="ch.qos.logback.classic.turbo.DuplicateMessageFilter"/>
<!-- ๊ณตํต ๋ก๊ทธ ํจํด ์ ์ -->
<property name="COMMON_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%.-5level] [%X{request_id:-}] [%X{layer:-}] [%X{api:-}] [%X{error_source:-}] %logger - %msg%n"/>
<!-- ๋ก๊ทธ๋ฅผ ์ด๋์ ์ถ๋ ฅํ ์ง ์ ์ํ๋ ๋ถ๋ถ. ์ฌ๋ฌ ์ข
๋ฅ์ appender๋ฅผ ์ค์ ํ๋ค. -->
<!-- Logstash๋ก ์ ์กํ Appender -->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:5044</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<!--Console: ์ฝ์์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค. ๋ก๊ทธ ํจํด์ ์ ์ํ๊ณ , utf8 ๋ฌธ์์
์ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค. -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${COMMON_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- Root ๋ ๋ฒจ ์ค์ -->
<!-- ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ณธ ๋ก๊ทธ ๋ ๋ฒจ์ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ ๋ฒจ์ INFO๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ, Console appender๊ฐ ์ฐ๊ฒฐ๋ฉ๋๋ค.-->
<root level="INFO">
<appender-ref ref="Console" />
</root>
<!-- Controller ๋ ๋ฒจ ๋ก๊น
์ค์ -->
<logger name="com.iruyeon.v1.domain.client.controller" level="INFO" additivity="false">
<appender-ref ref="Console" />
</logger>
<!-- Service ๋ ๋ฒจ ๋ก๊น
์ค์ -->
<logger name="com.iruyeon.v1.domain.client.service" level="INFO" additivity="false">
<appender-ref ref="Console" />
</logger>
<!-- Repository ๋ ๋ฒจ ๋ก๊น
์ค์ -->
<logger name="com.iruyeon.v1.domain.client.repository" level="INFO" additivity="false">
<appender-ref ref="Console" />
</logger>
<!-- ๋ก์ปฌ ํ๊ฒฝ ์ค์ -->
<!-- ๋ก์ปฌ ํ๊ฒฝ์์ ๋ก๊ทธ ๋ ๋ฒจ์ INFO๋ก ์ค์ ํ๊ณ , Console, LOGSTASH(ํ
์คํธ์ฉ) ์ถ๊ฐํฉ๋๋ค.-->
<springProfile name="local">
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="LOGSTASH" />
</root>
</springProfile>
<!-- ๊ฐ๋ฐ ๋ฐ ํ๋ก๋์
ํ๊ฒฝ ์ค์ -->
<!-- ๊ฐ๋ฐ ๋ฐ ํ๋ก๋์
ํ๊ฒฝ์์ ๋ก๊ทธ ๋ ๋ฒจ์ ERROR๋ก ์ค์ ํฉ๋๋ค -->
<springProfile name="dev,prod">
<root level="ERROR">
<appender-ref ref="Console"/>
<appender-ref ref="LOGSTASH" />
</root>
</springProfile>
</configuration>
4. logstash ์คํ ์ค์ ํ์ผ (logstash.conf)
logstash.conf ์ค์ ํ์ผ์ docker-compose.yml ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์ฑํฉ๋๋ค.
input {
tcp {
port => 5044
codec => json
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "application-logs-%{+YYYY.MM.dd}"
}
}
5. docker-compose ํ์ผ ์คํ
docker-compose -f docker-compose.yml up -d
6. Elasticsearch์์๋ API๋ฅผ ํธ์ถํ์ฌ Elasticsearch ํด๋ฌ์คํฐ์ ์๋ ๋ชจ๋ ์ธ๋ฑ์ค์ ์ ๋ณด ํ์ธ
Elasticsearch์์๋ API๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ ๋ด์ ๋ชจ๋ ์ธ๋ฑ์ค์ ์ธ๋ฑ์ค ์ด๋ฆ, ์ํ, ์ค๋ ์, ๋ฌธ์ ์ ๋ฑ์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
GET http://localhost:9200/_cat/indices
- yellow
- ์ธ๋ฑ์ค์ ์ํ
- 'yellow'๋ ๋ชจ๋ ์ค๋๊ฐ ๋ณต์ ๋์ง ์์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ธ๋ฑ์ค์ ์ฃผ ์ค๋๋ ์์ง๋ง ๋ณต์ ๋ณธ ์ค๋๊ฐ ์๋ ์ํ์ ๋๋ค.
- 'green'์ ๋ชจ๋ ์ค๋๊ฐ ๋ณต์ ๋ณธ๊ณผ ํจ๊ป ์ ์์ ์ผ๋ก ์๋ํ๋ ์ํ์ด๊ณ , 'red'๋ ์ผ๋ถ ์ค๋๊ฐ ์์๋์๊ฑฐ๋ ์ ๋๋ก ์๋ํ์ง ์๋ ์ํ์ ๋๋ค.
- open
- ์ธ๋ฑ์ค๊ฐ ์ด๋ฆฐ ์ํ
- 'open'์ ์ธ๋ฑ์ค๊ฐ ์ ์์ ์ผ๋ก ์ด๋ ค ์์ด ๊ฒ์์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค.
- 'closed'๋ ์ธ๋ฑ์ค๊ฐ ๋ซํ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ํ์ ๋๋ค.
- application-logs-2025.03.30
- ์ธ๋ฑ์ค์ ์ด๋ฆ
- 'application-logs-2025.03.30'์ด๋ผ๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ธ๋ฑ์ค๊ฐ ๋ํ๋ฉ๋๋ค. ์ธ๋ฑ์ค ์ด๋ฆ์ ๋ณดํต ๋ ์ง๋ ์นดํ ๊ณ ๋ฆฌ๋ก ๋ช ๋ช ๋๋ฉฐ, ํน์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- zgmHCZS5RB6FLLcStFngSg
- ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๋ Elasticsearch ๋ ธ๋์ ID
- ์ด ๊ฐ์ ํด๋น ์ธ๋ฑ์ค๊ฐ ์ด๋ ๋ ธ๋์ ํ ๋น๋์๋์ง ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- 1
- ์ธ๋ฑ์ค์ primary ์ค๋ ์
- ์ฌ๊ธฐ์๋ 1๊ฐ์ primary ์ค๋๊ฐ ์กด์ฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. Elasticsearch๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ์ฌ ์ ์ฅํ๊ธฐ ์ํด ์ค๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ค๋๋ ์ธ๋ฑ์ค๋ฅผ ๋ถํ ํ์ฌ ๊ด๋ฆฌํ๋ ๊ธฐ๋ณธ ๋จ์์ ๋๋ค.
- 1
- ์ธ๋ฑ์ค์ ๋ณต์ ์ค๋ ์
- ์ฌ๊ธฐ์๋ 1๊ฐ์ ๋ณต์ ๋ณธ ์ค๋๊ฐ ์ค์ ๋ ์ํ์ ๋๋ค. ๋ณต์ ๋ณธ ์ค๋๋ ์ฃผ ์ค๋์ ๋ณต์ฌ๋ณธ์ผ๋ก, ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํฉ๋๋ค.
- 74
- ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๋ฌธ์์ ์
- ์ฌ๊ธฐ์๋ 74๊ฐ์ ๋ฌธ์๊ฐ ์ธ๋ฑ์ค์ ์ ์ฅ๋์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- 0
- ์ญ์ ๋ ๋ฌธ์์ ์
- ํ์ฌ ์ญ์ ๋ ๋ฌธ์๋ ์๋ค๋ ์๋ฏธ์ ๋๋ค.
- 280.8kb
- ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ํฌ๊ธฐ
- '280.8kb'๋ ํด๋น ์ธ๋ฑ์ค๊ฐ ์ฐจ์งํ๋ ๋์คํฌ ๊ณต๊ฐ์ ๋ํ๋ ๋๋ค. ์ธ๋ฑ์ค์ ํฌ๊ธฐ๋ ๋ฌธ์์ ์์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
- 280.8kb
- ์ธ๋ฑ์ค์ ์ด ํฌ๊ธฐ
- ์ด ๊ฐ์ ๋ฐ์ดํฐ์ ๋ณต์ ๋ณธ์ ํฌํจํ ์ ์ฒด ํฌ๊ธฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ณต์ ๋ณธ์ด ๋์ผํ ํฌ๊ธฐ๋ฅผ ์ฐจ์งํ๋ ์ํ์์ ๋ณด์ฌ์ค๋๋ค.
7. ํน์ ์ธ๋ฑ์ค ๋ก๊ทธ ํ์ธํ๊ธฐ
http://localhost:9200/{์ธ๋ฑ์ค ์ด๋ฆ}/_search
application-logs-2025.03.30 ์ธ๋ฑ์ค์์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ๋๋ค. ๊ฒ์ ๊ฒฐ๊ณผ๋ JSON ํ์์ผ๋ก ๋ฐํ๋ฉ๋๋ค.
Elasticsearch ๊ฒ์ ๊ฒฐ๊ณผ
{
"took": 48,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 111,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "application-logs-2025.03.30",
"_id": "cB3D5ZUBP2QWHruMGD6R",
"_score": 1.0,
"_source": {
"logger_name": "org.apache.catalina.core.StandardService",
"thread_name": "main",
"message": "Starting service [Tomcat]",
"level_value": 20000,
"level": "INFO",
"@timestamp": "2025-03-30T06:35:23.024462Z",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "ch3D5ZUBP2QWHruMGD68",
"_score": 1.0,
"_source": {
"logger_name": "org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]",
"thread_name": "main",
"message": "Initializing Spring embedded WebApplicationContext",
"level_value": 20000,
"level": "INFO",
"@timestamp": "2025-03-30T06:35:23.078337Z",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "cx3D5ZUBP2QWHruMGD7A",
"_score": 1.0,
"_source": {
"logger_name": "org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext",
"thread_name": "main",
"message": "Root WebApplicationContext: initialization completed in 1935 ms",
"level_value": 20000,
"level": "INFO",
"@timestamp": "2025-03-30T06:35:23.079794Z",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "dB3D5ZUBP2QWHruMGT4H",
"_score": 1.0,
"_source": {
"logger_name": "com.zaxxer.hikari.HikariDataSource",
"api": "-",
"message": "HikariPool-1 - Starting...",
"level_value": 20000,
"level": "INFO",
"layer": "-",
"request_id": "-",
"@timestamp": "2025-03-30T06:35:23.158256Z",
"thread_name": "main",
"error_source": "-",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "dh3D5ZUBP2QWHruMGT7P",
"_score": 1.0,
"_source": {
"logger_name": "org.hibernate.jpa.internal.util.LogHelper",
"api": "-",
"message": "HHH000204: Processing PersistenceUnitInfo [name: default]",
"level_value": 20000,
"level": "INFO",
"layer": "-",
"request_id": "-",
"@timestamp": "2025-03-30T06:35:23.357045Z",
"thread_name": "main",
"error_source": "-",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "dx3D5ZUBP2QWHruMGT75",
"_score": 1.0,
"_source": {
"logger_name": "org.hibernate.cache.internal.RegionFactoryInitiator",
"api": "-",
"message": "HHH000026: Second-level cache disabled",
"level_value": 20000,
"level": "INFO",
"layer": "-",
"request_id": "-",
"@timestamp": "2025-03-30T06:35:23.395322Z",
"thread_name": "main",
"error_source": "-",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "eR3D5ZUBP2QWHruMGT75",
"_score": 1.0,
"_source": {
"logger_name": "org.hibernate.Version",
"api": "-",
"message": "HHH000412: Hibernate ORM core version 6.6.8.Final",
"level_value": 20000,
"level": "INFO",
"layer": "-",
"request_id": "-",
"@timestamp": "2025-03-30T06:35:23.379738Z",
"thread_name": "main",
"error_source": "-",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "eh3D5ZUBP2QWHruMGj6h",
"_score": 1.0,
"_source": {
"logger_name": "org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo",
"api": "-",
"message": "No LoadTimeWeaver setup: ignoring JPA class transformer",
"level_value": 20000,
"level": "INFO",
"layer": "-",
"request_id": "-",
"@timestamp": "2025-03-30T06:35:23.569839Z",
"thread_name": "main",
"error_source": "-",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "ex3D5ZUBP2QWHruMGj7j",
"_score": 1.0,
"_source": {
"logger_name": "org.hibernate.orm.deprecation",
"api": "-",
"message": "HHH90000025: MySQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)",
"level_value": 30000,
"level": "WARN",
"layer": "-",
"request_id": "-",
"@timestamp": "2025-03-30T06:35:23.625212Z",
"thread_name": "main",
"error_source": "-",
"@version": "1"
}
},
{
"_index": "application-logs-2025.03.30",
"_id": "fB3D5ZUBP2QWHruMGj7q",
"_score": 1.0,
"_ignored": [
"message.keyword"
],
"_source": {
"logger_name": "org.hibernate.orm.connections.pooling",
"api": "-",
"message": "HHH10001005: Database info:\n\tDatabase JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']\n\tDatabase driver: undefined/unknown\n\tDatabase version: 8.1\n\tAutocommit mode: undefined/unknown\n\tIsolation level: undefined/unknown\n\tMinimum pool size: undefined/unknown\n\tMaximum pool size: undefined/unknown",
"level_value": 20000,
"level": "INFO",
"layer": "-",
"request_id": "-",
"@timestamp": "2025-03-30T06:35:23.638567Z",
"thread_name": "main",
"error_source": "-",
"@version": "1"
}
}
]
}
}
1. ์์ฒญ ์ฒ๋ฆฌ ์๊ฐ
- took: 48ms
- Elasticsearch ์ฟผ๋ฆฌ๊ฐ ์ฒ๋ฆฌ๋ ์๊ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ์ฟผ๋ฆฌ ์คํ์ด 48๋ฐ๋ฆฌ์ด ๊ฑธ๋ ธ์ต๋๋ค.
2. ํ์์์ ์ฌ๋ถ
- timed_out: false
- ์ฟผ๋ฆฌ๊ฐ ์คํ ์ค ํ์์์๋์ง ์์์์ ์๋ฏธํฉ๋๋ค.
3. ์ค๋ ์ํ
- _shards:
- total: 1 (์ด ์ค๋ ์)
- successful: 1 (์ฑ๊ณต์ ์ผ๋ก ์คํ๋ ์ค๋ ์)
- failed: 0 (์คํจํ ์ค๋ ์)
- ์ฟผ๋ฆฌ๊ฐ ํ๋์ ์ค๋์์ ์คํ๋์๊ณ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ๋์์ต๋๋ค.
4. ๊ฒ์๋ ๋ก๊ทธ ์
- hits.total.value: 111
- ์ด 111๊ฐ์ ๋ก๊ทธ ํญ๋ชฉ์ด ๊ฒ์๋์์ต๋๋ค.
5. ๋ก๊ทธ ํญ๋ชฉ ์์
- _index: application-logs-2025.03.30 (ํด๋น ๋ก๊ทธ๊ฐ ์ ์ฅ๋ ์ธ๋ฑ์ค)
- _id: ๊ฐ ๋ก๊ทธ ํญ๋ชฉ์ ๊ณ ์ ID (์: cB3D5ZUBP2QWHruMGD6R)
- _score: ํด๋น ๋ก๊ทธ ํญ๋ชฉ์ ๊ด๋ จ๋ ์ ์ (1.0)
- _source: ๋ก๊ทธ ํญ๋ชฉ์ ์ค์ ๋ด์ฉ:
- logger_name: ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ ํด๋์ค๋ ํจํค์ง ์ด๋ฆ (์: org.apache.catalina.core.StandardService)
- message: ๋ก๊ทธ ๋ฉ์์ง (์: Starting service [Tomcat])
- level: ๋ก๊ทธ์ ๋ ๋ฒจ (์: INFO, WARN)
- @timestamp: ๋ก๊ทธ ๋ฐ์ ์๊ฐ (์: 2025-03-30T06:35:23.024462Z)
ElasticSearch head ๋ก ๋ก๊ทธ ํ์ธํ๊ธฐ
Chrome ๋ธ๋ผ์ฐ์ ์์ Elasticsearch Head ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐํฉ๋๋ค. ์ด ํ์ฅ ํ๋ก๊ทธ๋จ์ ํตํด Elasticsearch ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ง์ฝ Elasticsearch๊ฐ ๋ก์ปฌ ํธ์คํธ๊ฐ ์๋ ํน์ ์๋ฒ IP ์ฃผ์์์ ์คํ ์ค์ด๋ผ๋ฉด, Elasticsearch Head์ ์ผ์ชฝ ์๋จ์ ์๋ New ๋ฒํผ์ ํด๋ฆญํ์ฌ ์๋ก์ด ์๋ฒ๋ฅผ ์ถ๊ฐํฉ๋๋ค. IP ์ฃผ์์ ํฌํธ ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ฉด, ํด๋น ์๋ฒ์ Elasticsearch ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ธ๋ฑ์ค ๋ชฉ๋ก (Browser)
- Elasticsearch ํด๋ฌ์คํฐ์ ์ํธ์์ฉํ๋ ์น ๊ธฐ๋ฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค
- ์ธ๋ฑ์ค ๋ชฉ๋ก์ ๋ณผ ์ ์๊ณ , ์ธ๋ฑ์ค์ ์ํ, ๋ฌธ์ ์, ํฌ๊ธฐ ๋ฑ ๋ค์ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ผ๋ฉฐ, ์ธ๋ฑ์ค์ ๋งคํ(mapping) ๋ฐ ์ค์ (settings)์ ์์ ํ ์๋ ์์ต๋๋ค.
์ฟผ๋ฆฌ ์คํ (Query Execution)
- REST API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ฟผ๋ฆฌ ์คํ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. Elasticsearch์ ์ฟผ๋ฆฌ DSL์ ์ฌ์ฉํ์ฌ, ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๊ฑฐ๋ ์ง๊ณํ ์ ์๋ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์คํํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์ธ GET, POST, PUT, DELETE ์์ฒญ์ ์ง์ํ์ฌ, ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๊ณ ์ญ์ ํ ์ ์์ต๋๋ค.
[์ฐธ๊ณ ]
๊ฐ๋ฐ์์๊ฒ ํ์ํ ๋ก๊ทธ ๊ด๋ฆฌ ๊ฐ์ | ์ด์คํ(Foo) - ์ธํ๋ฐ
์ด์คํ(Foo) | , ์์ง๋ SSH๋ก ์๋ฒ์ ์ ์ํด์ ๋ก๊ทธ๋ฅผ ๋ณด์๋์?์๋ฒ์ ์ง์ ๋ก๊ทธ์ธํ์ฌ ๋ก๊ทธ ํ์ผ์ ํ์ธํ๋ ๋ฐฉ์์ ์ฌ๋ฌ ๊ฐ์ง ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฒซ์งธ, ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ์ด์ํ ๊ฒฝ์ฐ ๊ฐ
www.inflearn.com
'๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด๐ป > ๐๐ฉ๐ซ๐ข๐ง๐ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] Elasticsearch + Spring Boot๋ก ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ (0) | 2025.04.02 |
---|---|
[Spring] Docker๋ฅผ ํ์ฉํ Kibana ์ค์ , Kibana๋ก ๋ก๊ทธ ํ์ธํ๊ธฐ (0) | 2025.04.01 |
[Spring] Log, ELK (0) | 2025.03.29 |
[Spring] MDC ๋ก๊น & Logback ์ค์ (0) | 2025.03.28 |
[Spring] SSE & Kafka ๋ฅผ ํ์ฉํด์ ์๋ฆผ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ (0) | 2024.03.22 |