본문 바로가기
제품/ELK

타임스탬프

by 헬로웬디 2024. 10. 15.

 

Elasticsearch와 같은 도구에서 timeserises 데이터를 처리할 때, @timestamp 필드는 핵심적인 역할을 합니다. timeserises 데이터는 시간에 따라 변화하는 데이터를 다루기 때문에, 시간 정보를 정확하게 저장하는 것이 매우 중요합니다.

장비에서 이벤트 발생 시간을 주로 UTC (Coordinated Universal Time)로 표현합니다. UTC는 전 세계에서 공통적으로 사용되는 표준 시간으로, 각기 다른 지역의 시간대 차이를 고려할 필요 없이 일관되게 시간을 기록할 수 있습니다. 하지만 일부 장비에서는 로컬 타임을 사용하여 시간 정보를 기록하기도 합니다. 이럴 경우, 시간대와 관련된 차이가 발생할 수 있습니다.

 

따라서 @timestamp를 잘 읽는 것이 필요한데요,  오늘은 "2025-01-18T14:44:22.095Z"와 "2025-01-18T23:44:22.095+09:00" 두 가지 타임스탬프를 비교하여 그 차이점을 알아보겠습니다.

 

먼저 이 두 가지 시간 표현은 시간대 표현 방식에 차이가 있을 뿐 사실 같은 시점을 나타내고 있습니다.

  • 2025-01-18T14:44:22.095Z 

이 형식은 UTC(Coordinated Universal Time)를 사용하며, 끝에 있는 Z가 이를 나타냅니다. Z는 Zulu time의 약자로, UTC의 또 다른 표현입니다.

 

  • 2025-01-18T23:44:22.095+09:00

이 형식은 UTC보다 9시간 앞선 +09:00라는 특정 시간대 오프셋을 사용합니다. 날짜와 시간은: 2025-01-18 23:44:22.095, 시간대는 UTC+09:00이므로 UTC보다 9시간 앞서 있으므로, UTC로 변환하려면 주어진 시간에서 9시간을 빼면 됩니다.
2025-01-18 23:44:22.095 UTC+09:00 → 2025-01-18 14:44:22.095 UTC

 

인제스트 파이프라인의 date 프로세서에서는 다음처럼 활용할 수 있습니다.

PUT _ingest/pipeline/timestatmp-test
{
  "processors": [
    {
      "json": {
        "field": "s1"
      }
    },
    {
      "dot_expander": {
        "path": "s1",
        "field": "*"
      }
    },
    {
      "date": {
        "field": "s1.event.time",
        "formats": [
          "ISO8601",
          "epoch_millis"
        ],
        "target_field": "utc",
        "if": "ctx.s1?.event?.time != null && ctx.s1.event.time != ''",
        "tag": "date_json_event_time"
      }
    },
    {
      "date": {
        "field": "s1.event.time",
        "formats": [
          "ISO8601",
          "epoch_millis"
        ],
        "target_field": "utc+9",
        "timezone" : "Asia/Seoul",
        "if": "ctx.s1?.event?.time != null && ctx.s1.event.time != ''",
        "tag": "date_json_event_time"
      }
    }
  ]  
}

 

결과는 다음과 같습니다. utc, utc+9의 필드를 확인하세요.

{
  "docs": [
    {
      "doc": {
        "_index": "_index",
        "_version": "-3",
        "_id": "_id",
        "_source": {
          "utc+9": "2025-01-18T23:44:22.095+09:00",
          "utc": "2025-01-18T14:44:22.095Z",
          "s1": {
            "endpoint": {
              "os": "windows"
            },
            "event": {
              "time": 1737211462095
            }
          }
        },
        "_ingest": {
          "timestamp": "2025-01-18T07:11:09.689805024Z"
        }
      }
    }
  ]
}