이벤트 로그 전송¶
개요¶
애널리틱스에 이벤트 로그를 전송할 수 있습니다. 전송할 이벤트를 구성할 때는 이벤트 템플릿에서 제공하는 이벤트 구조와 Hive SDK 자동 수집 여부를 확인하세요.
추가로 분석이 필요한 이벤트 로그는 클라이언트 또는 서버에서 전송할 수 있습니다.
클라이언트 전송¶
Hive SDK v4, Hive Axyl을 통해 클라이언트에서 이벤트 로그를 전송하는 방법입니다.
Hive SDK v4 를 통한 이벤트 로그 전송¶
Hive SDK v4의 이벤트 로그 전송 기능을 사용하여 클라이언트에서 이벤트를 전송하는 방법입니다.
엔진 공통 설정¶
SDK v4 사용을 위한 엔진 설정입니다.
Unity, Unreal Engine 등 엔진에 따라 SDK를 사용하기 전에 공통으로 필요한 설정이 있습니다. Hive Axyl에는 해당하지 않습니다.
Note
엔진별 상세 설정 방법은 사전 준비 가이드를 참고해 주세요.
전송 방법¶
Hive SDK v4의 Analytics 이벤트 로그 전송 API를 사용합니다.
JSONObject logData = new JSONObject();
// 필수 속성 (eventName만 직접 전송, 나머지는 SDK 자동 수집)
logData.AddField("eventName", "asset_drop");
// 사용자 정의 속성
logData.AddField("level", 10);
logData.AddField("exp", 1.5f);
logData.AddField("character_name", "AA");
logData.AddField("stage_id", "stage_101");
Analytics.sendAnalyticsLog(logData);
#include "HiveAnalytics.h"
TSharedPtr<FJsonObject> LogData = MakeShareable(new FJsonObject);
// 필수 속성 (eventName만 직접 전송, 나머지는 SDK 자동 수집)
LogData->SetStringField(TEXT("eventName"), TEXT("asset_drop"));
// 사용자 정의 속성
LogData->SetNumberField(TEXT("level"), 10);
LogData->SetNumberField(TEXT("exp"), 1.5);
LogData->SetStringField(TEXT("character_name"), TEXT("AA"));
LogData->SetStringField(TEXT("stage_id"), TEXT("stage_101"));
FHiveAnalytics::SendAnalyticsLog(LogData);
picojson::object logData;
// 필수 속성 (eventName만 직접 전송, 나머지는 SDK 자동 수집)
logData["eventName"] = picojson::value("asset_drop");
// 사용자 정의 속성
logData["level"] = picojson::value((double)10);
logData["exp"] = picojson::value(1.5);
logData["character_name"] = picojson::value("AA");
logData["stage_id"] = picojson::value("stage_101");
Analytics::sendAnalyticsLog(logData);
Map<String, Object> logData = new HashMap<String, Object>();
// 필수 속성 (eventName만 직접 전송, 나머지는 SDK 자동 수집)
logData.put("eventName", "asset_drop");
// 사용자 정의 속성
logData.put("level", 10);
logData.put("exp", 1.5);
logData.put("character_name", "AA");
logData.put("stage_id", "stage_101");
Analytics.sendAnalyticsLog(logData);
NSMutableDictionary* logData = [[NSMutableDictionary alloc] init];
// 필수 속성 (eventName만 직접 전송, 나머지는 SDK 자동 수집)
[logData setObject:@"asset_drop" forKey:@"eventName"];
// 사용자 정의 속성
[logData setObject:@10 forKey:@"level"];
[logData setObject:@1.5 forKey:@"exp"];
[logData setObject:@"AA" forKey:@"character_name"];
[logData setObject:@"stage_101" forKey:@"stage_id"];
[HIVEAnalytics sendAnalyticsLog:logData];
저장 결과¶
위 예시를 전송하면 BigQuery에 다음과 같이 저장됩니다.
| 컬럼명 | 값 | 수집 방식 |
|---|---|---|
userId | 100001 | SDK v4 자동 수집 |
identifierProvider | hive | SDK v4 자동 수집 |
deviceId | 100000 | SDK v4 자동 수집 |
appId | com.com2us.game.ios | SDK v4 자동 수집 |
appIdGroup | com.com2us.game | SDK v4 자동 수집 |
dateTime | 2026-07-20T05:01:01Z | eventTime을 UTC로 변환한 값 |
eventName | asset_drop | 직접 전송 |
checksum | b44jskqjwe99921jqe5 | 자동 생성 |
bigqueryRegistTimestamp | 2026-07-20T05:02:01Z | 자동 생성 |
attributes | 아래 참조 | SDK v4 자동 수집 + 직접 전송 |
attributes 예시
{
"hiveAttributes": {
"dataSource": "custom_sdk",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"exp": 1.5,
"character_name": "AA",
"stage_id": "stage_101",
"vid": 100001,
"uid": 1,
"vid_type": "v4",
"guid": "ecbfbd7fcdc340e1b8a433999c5290c1",
"server_id": "KR-1",
"model": "iPhone17,3",
"os": "I",
"os_version": "26.5.2"
}
}
| 영역 | 저장 내용 |
|---|---|
hiveAttributes | 파이프라인 자동 처리 속성 (dataSource, geoIpCountry) |
eventAttributes | 사용자 정의 속성 (level, exp, character_name, stage_id) + SDK v4 자동 수집 속성 (vid, uid, model, os 등) |
Hive SDK v4 주의사항 & Tips¶
- SDK v4 이벤트 로그 전송 기능을 사용하면
vid,uid,did,model,os,market,server_id등 기본 수집 속성이 자동으로 전송됩니다. 자세한 목록은 이벤트 속성 전송 > Hive SDK v4 자동 수집 속성을 참고하세요. - 기본 수집 속성과 동일한 속성명을 직접 추가해 전송하면, SDK v4가 자동 수집한 값이 직접 설정한 값으로 덮어써질 수 있으니 유의하세요.
Hive Axyl 를 통한 이벤트 로그 전송¶
Note
Hive Axyl 이벤트 로그 전송 가이드는 2026년 9월 30일 공개될 예정입니다.
서버 전송¶
Fluentd, HTTP를 통해 게임 서버에서 이벤트 로그를 전송하는 방법입니다.
Fluentd를 통한 이벤트 로그 전송¶
게임 서버에서 Fluentd를 통해 직접 이벤트를 전송하는 방법입니다.
- 필수 속성을 포함한 모든 속성을 직접 구성하여 전송해야합니다.
Fluentd 서버 정보¶
애널리틱스 Fluentd 서버 주소는 다음과 같습니다. 아래 표를 참고하여 이벤트 로그를 전송해야 합니다.
| 구분 | 위치 | 리전 | 도메인 |
|---|---|---|---|
| 상용 | 아시아 | 대한민국(서울) | analytics-hivelog-03.withhive.comanalytics-hivelog-04.withhive.comanalytics-hivelog-05.withhive.comanalytics-hivelog-06.withhive.com |
| 상용 | 아시아 | 싱가포르 | analytics-hivelog-as-sg-01.withhive.comanalytics-hivelog-as-sg-02.withhive.com |
| 상용 | 북미 | 미국(동부) | analytics-hivelog-us-east-01.withhive.comanalytics-hivelog-us-east-02.withhive.com |
| 상용 | 북미 | 미국(서부) | analytics-hivelog-us-west-01.withhive.comanalytics-hivelog-us-west-02.withhive.com |
| 상용 | 유럽 | 프랑크푸르트 | analytics-hivelog-eu-ff-01.withhive.comanalytics-hivelog-eu-ff-02.withhive.com |
| 샌드박스 | 아시아 | 대한민국(서울) | sandbox-analytics-hivelog.withhive.com |
Fluentd 전송 방법¶
게임 서버에서 JSON 형태의 이벤트 로그를 구성하여 Fluentd를 통해 전송합니다.
fluentd tag 규칙:
전송 JSON 예시:
{
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA",
"stage_id": "stage_101"
}
Fluentd 저장 결과¶
위 예시를 전송하면 BigQuery에 다음과 같이 저장됩니다.
| 컬럼명 | 값 | 수집 방식 |
|---|---|---|
userId | 100001 | 직접 전송 |
identifierProvider | hive | 직접 전송 |
deviceId | 100000 | 직접 전송 |
appId | com.com2us.game.ios | 직접 전송 |
appIdGroup | com.com2us.game | appId 기반 자동 수집 |
dateTime | 2026-07-20T05:01:01Z | eventTime을 UTC로 변환한 값 |
eventName | asset_drop | 직접 전송 |
checksum | b44jskqjwe99921jqe5 | 자동 생성 |
bigqueryRegistTimestamp | 2026-07-20T05:02:01Z | 자동 생성 |
attributes | 아래 참조 | 직접 전송 + 자동 수집 |
attributes 예시
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA",
"stage_id": "stage_101"
}
}
| 영역 | 저장 내용 |
|---|---|
hiveAttributes | 파이프라인 자동 처리 속성 (dataSource, geoIpCountry) |
eventAttributes | 사용자 정의 속성 (level, character_name, stage_id) |
Note
서버 전송(Fluentd)에서는 SDK 자동 수집 속성이 포함되지 않으므로, eventAttributes에는 사용자가 직접 전송한 속성만 저장됩니다.
Fluentd 사용 가이드¶
Fluentd를 사용하여 다양한 방식으로 이벤트 로그 전송이 가능합니다. 아래 링크를 클릭하여 자세한 내용을 확인하세요.
Fluentd 주의사항 & Tips¶
- 서버 전송(Fluentd)에서는 SDK 자동 수집 속성이 포함되지 않으므로, 필요한 속성은 모두 직접 구성해서 전송해야 합니다.
- 모든 필수 속성(
userId,identifierProvider,deviceId,appId,appIdGroup,eventTime,eventName)을 반드시 포함해야 합니다.
HTTP 를 통한 이벤트 로그 전송¶
HTTP API를 통해 게임 서버 또는 클라이언트에서 직접 이벤트를 전송하는 방법입니다.
- Fluentd 설치가 불가능한 환경에서 서버 이벤트 로그를 전송할 때 적합합니다.
- REST API 형태로 JSON 데이터를 직접 전송합니다.
- 필수 속성을 포함한 모든 속성을 직접 구성하여 전송해야합니다.
수신 서버 정보¶
애널리틱스 웹서버 주소는 다음과 같습니다.
| 구분 | URL |
|---|---|
| 상용 | https://analytics-log.withhive.com/v1/server-recv |
| 샌드박스 | https://sandbox-analytics-log.withhive.com/v1/server-recv |
Header 정보:
| 항목 | 값 | 비고 |
|---|---|---|
| Method | POST | |
| Content-Type | application/json; charset=utf8 | 필수 |
| Content-Encoding | gzip | body에 압축 바이너리를 넣을 때 사용 |
HTTP 전송 방법¶
위 수신 서버 URL로 JSON 데이터를 POST 요청합니다.
HTTP 요청:
요청 Body (JSON):
{
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA"
}
HTTP 전송 예시¶
cURL:
curl -X POST https://analytics-log.withhive.com/v1/server-recv \
-H "Content-Type: application/json" \
-d '{
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA"
}'
Python:
import requests
import json
url = "{Analytics 수신 서버 URL}"
data = {
"userId": "100001",
"identifierProvider": "hive",
"deviceId": "100000",
"appId": "com.com2us.game.ios",
"eventTime": "2026-07-20T14:01:01+09:00",
"eventName": "asset_drop",
"level": 10,
"character_name": "AA",
}
response = requests.post(url, json=data)
print(response.status_code)
HTTP 저장 결과¶
위 예시를 전송하면 BigQuery에 다음과 같이 저장됩니다.
| 컬럼명 | 값 | 수집 방식 |
|---|---|---|
userId | 100001 | 직접 전송 |
identifierProvider | hive | 직접 전송 |
deviceId | 100000 | 직접 전송 |
appId | com.com2us.game.ios | 직접 전송 |
appIdGroup | com.com2us.game | appId 기반 자동 매핑 |
dateTime | 2026-07-20T05:01:01Z | eventTime을 UTC로 변환한 값 |
eventName | asset_drop | 직접 전송 |
checksum | b44jskqjwe99921jqe5 | 자동 생성 |
bigqueryRegistTimestamp | 2026-07-20T05:02:01Z | 자동 생성 |
attributes | 아래 참조 | 직접 전송 + 자동 처리 |
attributes 예시
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA"
}
}
| 영역 | 저장 내용 |
|---|---|
hiveAttributes | 파이프라인 자동 처리 속성 (dataSource, geoIpCountry) |
eventAttributes | 사용자 정의 속성 (level, character_name) |
Note
서버 전송(HTTP)에서는 SDK 자동 수집 속성이 포함되지 않으므로, eventAttributes에는 사용자가 직접 전송한 속성만 저장됩니다.
HTTP 주의사항 & Tips¶
- 모든 필수 속성(
userId,identifierProvider,deviceId,appId,appIdGroup,eventTime,eventName)을 반드시 포함해야 합니다. Content-Type은application/json으로 설정해야 합니다.- 속성값으로 JSON 객체(
{})나 배열([])을 사용하면 rescue 테이블로 격리됩니다. - 서버 전송(HTTP)에서는 SDK 자동 수집 속성이 포함되지 않으므로, 필요한 속성은 모두 직접 구성해서 전송해야 합니다.
연관 메뉴¶
- 이벤트 속성 전송 — 필수/자동 수집/사용자 정의 속성 상세 규칙
- 이벤트 저장 구조 > 테이블 구조 — BigQuery 저장 구조
- 이벤트 저장 구조 > 데이터 격리 — rescue 테이블 격리 사유와 조회 방법