Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/.env
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ MONGO_INITDB_DATABASE=chatDB

# ElastricSearch & Kibana
ELASTIC_PORT=9200
ELASTIC_PASSWORD=+bAf9ynghd3*Y7L6qFQi
KIBANA_PORT=5601

# JWT
Expand All @@ -77,3 +76,7 @@ REFRESH_TOKEN_SECRET=kickzo_refresh_token_secret

# Hash
HASH_ROUNDS=10

#AWS ACCESS, SECRET KEY
AWS_ACCESS_KEY=AKIAXXXXXXXXXXXXXXXX
AWS_SECRET_KEY=wJalrXXXXXXXXXXXXXX
2 changes: 2 additions & 0 deletions src/backend/main-server/main/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
AWS_ACCESS_KEY=AKIAXXXXXXXXXXXXXXXX
AWS_SECRET_KEY=wJalrXXXXXXXXXXXXXX
1 change: 1 addition & 0 deletions src/backend/main-server/main/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ repositories {
}

dependencies {
implementation 'io.github.dnovitski:logback-awslogs-appender:1.7.2'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
Expand Down
5 changes: 3 additions & 2 deletions src/backend/main-server/main/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ services:
SPRING_DATASOURCE_USERNAME: ${MYSQL_USER}
SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD}
SPRING_ELASTICSEARCH_URIS: http://elasticsearch:9200
SPRING_ELASTICSEARCH_USERNAME: kickzo
SPRING_ELASTICSEARCH_USERNAME: elastic
SPRING_ELASTICSEARCH_PASSWORD: test123
SPRING_APPLICATION_NAME: main
depends_on:
Expand All @@ -32,7 +32,8 @@ services:
- xpack.security.enabled=true
- bootstrap.memory_lock=true # 메모리 잠금 활성화
- ES_JAVA_OPTS=-Xms512m -Xmx512m # Elasticsearch JVM 메모리 설정
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
- ELASTIC_USERNAME=elastic
- ELASTIC_PASSWORD=test123
volumes:
- es-data:/usr/share/elasticsearch/data
- ./elasticsearch-init.sh:/usr/share/elasticsearch/init.sh
Expand Down
17 changes: 11 additions & 6 deletions src/backend/main-server/main/elasticsearch-init.sh
Original file line number Diff line number Diff line change
@@ -1,31 +1,36 @@
#!/bin/sh

echo "⏳ Waiting for Elasticsearch to be ready..."
until curl -s -u elastic:${ELASTIC_PASSWORD} "http://localhost:9200/_cluster/health" | grep -q '"status":"green"\|"status":"yellow"'; do
until curl -s -u elastic:test123 "http://localhost:9200/_cluster/health" | grep -q '"status":"green"\|"status":"yellow"'; do
sleep 5
done

echo "✅ Elasticsearch is ready. Creating user and roles..."
echo "✅ Elasticsearch is ready. Creating and roles..."

# kickzo_role 생성
curl -X PUT "http://localhost:9200/_security/role/kickzo_role" \
-H "Content-Type: application/json" \
-u elastic:${ELASTIC_PASSWORD} \
-u elastic:test123 \
-d '{
"cluster": ["all"],
"indices": [
{
"names": [".kibana*", ".kibana_task_manager*"],
"privileges": ["create_index", "manage", "all"],
"privileges": ["auto_configure", "create_index", "manage", "all"],
"allow_restricted_indices": true
}
},
{
"names": [".fleet*", ".fleet-enrollment-api-keys"],
"privileges": ["auto_configure", "create_index", "manage", "all"],
"allow_restricted_indices": true
}
]
}'

# kickzo 사용자 생성 또는 업데이트
curl -X PUT "http://localhost:9200/_security/user/kickzo" \
-H "Content-Type: application/json" \
-u elastic:${ELASTIC_PASSWORD} \
-u elastic:test123 \
-d '{
"password": "test123",
"roles": ["superuser", "kickzo_role"]
Expand Down
8 changes: 8 additions & 0 deletions src/backend/main-server/main/kibana.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
server.port: 5601
server.host: "0.0.0.0"

elasticsearch.hosts: ["http://elasticsearch:9200"]
elasticsearch.username: "kickzo"
elasticsearch.password: "test123"

xpack.security.enabled: true
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@SpringBootApplication
@EnableElasticsearchRepositories
@EnableElasticsearchRepositories(basePackages = "com.kickzo.main")
public class MainApplication {

public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public ResponseEntity<String> savePlaylist(
@RequestHeader(value = "x-user-id") Long userId,
@RequestBody RoomPlaylistRequestDto playlistRequestDto) {
Long roomId = playlistRequestDto.getRoomId();
List<PlaylistItem> playlistItems = playlistRequestDto.getPlaylistJson();
List<PlaylistItem> playlistItems = playlistRequestDto.getPlaylist();
log.info("Saving playlist for room: {}, playlist: {}", roomId, playlistItems);
roomUserService.checkAccessRole(userId, roomId);
playlistService.savePlaylist(roomId, playlistItems);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@
@NoArgsConstructor
public class PlaylistUpdateEvent {
private Long roomId;
private List<PlaylistItem> playlistJson;
private List<PlaylistItem> playlist;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
@Data
public class RoomPlaylistRequestDto {
private Long roomId;
private List<PlaylistItem> playlistJson;
private List<PlaylistItem> playlist;
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ public void sendRoomUserInfo(Long roomId, UserInfoDto userInfo) {
sendEvent(TOPIC_ROOM, EVENT_TYPE_USER_JOIN, event);
}

public void sendPlaylistUpdate(Long roomId, List<PlaylistItem> playlistJson) {
PlaylistUpdateEvent event = new PlaylistUpdateEvent(roomId, playlistJson);
public void sendPlaylistUpdate(Long roomId, List<PlaylistItem> playlist) {
PlaylistUpdateEvent event = new PlaylistUpdateEvent(roomId, playlist);
sendEvent(TOPIC_PLAYLIST, EVENT_TYPE_PLAYLIST_UPDATE, event);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ spring.data.redis.port=7003
spring.data.redis.timeout=60000

spring.elasticsearch.uris=http://localhost:9200
spring.elasticsearch.username=elastic
spring.elasticsearch.password=test123
spring.elasticsearch.connection-timeout=10s
spring.elasticsearch.socket-timeout=30s
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ spring.data.redis.port=6379
spring.data.redis.timeout=60000

spring.elasticsearch.uris=http://elasticsearch:9200
spring.elasticsearch.username=elastic
spring.elasticsearch.password=test123
spring.elasticsearch.connection-timeout=20s
spring.elasticsearch.socket-timeout=60s
38 changes: 38 additions & 0 deletions src/backend/main-server/main/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration packagingData="true">
<timestamp key="timestamp" datePattern="yyyy-MM-dd-HH-mm-ssSSS"/>

<appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender">
<layout>
<pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern>
</layout>
<logGroupName>kickzo-logs</logGroupName>
<logStreamUuidPrefix>kickzo-log</logStreamUuidPrefix>
<logRegion>ap-northeast-1</logRegion>
<maxBatchLogEvents>50</maxBatchLogEvents>
<maxFlushTimeMillis>30000</maxFlushTimeMillis>
<maxBlockTimeMillis>5000</maxBlockTimeMillis>
<retentionTimeDays>0</retentionTimeDays>
<accessKeyId>${AWS_ACCESS_KEY}</accessKeyId>
<secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey>
</appender>

<property name="CONSOLE_LOG_PATTERN" value="%highlight(%-5level) %date [%thread] %cyan([%C{0} :: %M :: %L]) - %msg%n"/>
<appender name="console_log" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<springProfile name="dev">
<root level="INFO">
<appender-ref ref="console_log"/>
</root>
</springProfile>

<springProfile name="docker">
<root level="WARN">
<appender-ref ref="aws_cloud_watch_log"/>
</root>
</springProfile>
</configuration>