Study: DeveloperTools(DevTool)/DevTool: NoSQL(Elastic, Mongo)

[Elastic] Elastic Common Schema (ECS) Guideline λ²ˆμ—­

DrawingProcess 2022. 10. 10. 13:42
λ°˜μ‘ν˜•
πŸ’‘ λ³Έ λ¬Έμ„œλŠ” Guidelines and Best Practices | Elastic Common Schema (ECS) Reference [8.4] | Elastic λ¬Έμ„œλ₯Ό λ²ˆμ—­ν•΄λ†“μ€ κ²ƒμœΌλ‘œ Elasticsearch의 경우 μŠ€ν‚€λ§ˆ κ°€μ΄λ“œλΌμΈκ³Ό best practices λ₯Ό λ”°λ₯Ό λ•Œ κ°€μž₯ 잘 λ™μž‘ν•˜κΈ°μ— ν•˜κΈ°μ˜ λ‚΄μš©μ„ μ°Έκ³ ν•˜μ—¬ ECS μŠ€ν‚€λ§ˆλ₯Ό 섀계λ₯Ό ꢌμž₯ν•©λ‹ˆλ‹€!

ECS Field Levels

ECS λŠ” Core 와 Extended ν•„λ“œλ‘œ λ‚˜λˆ  μ •μ˜ν•œλ‹€.

Core ν•„λ“œ

  • λͺ¨λ“  μœ μ¦ˆμΌ€μ΄μŠ€μ—μ„œ κ°€μž₯ κ³΅ν†΅μ μœΌλ‘œ μ ‘κ·Όλ˜λŠ” ν•„λ“œλ₯Ό 의미
  • 이 μΌλ°˜ν™”λœ ν•„λ“œλ“€μ€ μ—¬λŸ¬ μ‚¬μš© 사둀에 걸처 주둜 컨텐츠 (검색, μ‹œκ°ν™”, λŒ€μ‹œλ³΄λ“œ, μ•ŒλŸΏ, λ¨Έμ‹ λŸ¬λ‹, 리포트 λ“±) 뢄석에 μ‚¬μš©λœλ‹€. 이런 ν™˜κ²½μ—μ„œ λ™μž‘ν•˜λ„λ‘ μ„€κ³„λœ 뢄석 컨텐츠 ν•„λ“œλŠ” κ΄€λ ¨λœ μ–΄λ–€ λ°μ΄ν„°μ—μ„œλ„ 적절히 λ™μž‘ν•΄μ•Ό 함
  • 이 ν•„λ“œλ“€μ„ λ¨Όμ € μ±„μš°λŠ”λ° 집쀑할 것

Extended ν•„λ“œ

  • core ν•„λ“œκ°€ μ•„λ‹Œ λͺ¨λ“  ν•„λ“œλ“€
  • 쒀더 쒁은 λ²”μœ„μ˜ μœ μ¦ˆμΌ€μ΄μŠ€μ— 적용될 수 있으며, 유즈 μΌ€μ΄μŠ€μ— 따라 더 개방적으둜 해석될 수 있음
  • extended ν•„λ“œλŠ” μ‹œκ°„μ΄ 흐름에 따라 λ³€ν•  κ°€λŠ₯성이 λ†’μŒβ€‹

일반적인 κ°€μ΄λ“œλΌμΈ

  • doc 은 λ°˜λ“œμ‹œ `@timestamp` ν•„λ“œλ₯Ό 포함해야 함
  • ECS ν•„λ“œλ₯Ό μ •μ˜ν•˜κΈ° μœ„ν•΄ data types λ₯Ό μ‚¬μš©ν•  것
  • ecs.version ν•„λ“œλ₯Ό μ¨μ„œ μ–΄λ–€ ECS 버전이 μ‚¬μš©μ€‘μΈμ§€ μ •μ˜ν•  것
  • κ°€λŠ₯ν•œ λ§Žμ€ ν•„λ“œλ₯Ό ECS 둜 λ§€ν•‘ν•  것

ν•„λ“œλͺ… κ°€μ΄λ“œλΌμΈ

  • ν•„λ“œλͺ…은 λ°˜λ“œμ‹œ μ†Œλ¬Έμžμ—¬μ•Ό 함
  • 각 단어듀은 μ–Έλ”μŠ€μ½”μ–΄ (_) 둜 μ—°κ²°ν•΄μ•Ό 함
  • μ–Έλ”μŠ€μ½”μ–΄ (_) μ΄μ™Έμ˜ νŠΉμˆ˜λ¬ΈμžλŠ” ν—ˆμš©λ˜μ§€ μ•ŠμŒ
  • ν•„λ“œκ°€ κ³Όκ±° μƒνƒœμ˜ 데이터λ₯Ό λ‹΄μ§€ μ•ŠλŠ” 이상 ν˜„μž¬ μ‹œμ œλ₯Ό μ‚¬μš©ν•  것
  • λ‹¨μˆ˜/λ³΅μˆ˜ν˜•μ„ 적절히 μ‚¬μš©ν•  것
    • ex) request_per_sec 보단 requests_per_sec 을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŒ
  • 베이슀 ν•„λ“œλ₯Ό μ œμ™Έν•˜κ³ , λͺ¨λ“  ν•„λ“œμ— prefix λ₯Ό μ‚¬μš©ν•  것
    • ex) λͺ¨λ“  host ν•„λ“œλŠ” host. prefix λ₯Ό λΆ™μž„. μ΄λ ‡κ²Œ κ·Έλ£Ήν•‘ ν•˜λŠ” 것을 ν•„λ“œ 셋이라 뢀름
  • Nested ν•„λ“œμ—” . 을 μ‚¬μš©ν•  것
    • doc ꡬ쑰상 nested JSON 객체가 포함될 수 있음
    • λ§Œμ•½ Beats, Logstash λ₯Ό μ‚¬μš©ν•˜λ©΄ nested JSON κ°μ²΄λŠ” μžλ™μœΌλ‘œ 처리됨
    • λ§Œμ•½ API 둜 ES λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄, ν•„λ“œλŠ” . 을 ν¬ν•¨ν•˜λŠ” λ¬Έμžμ—΄μ΄ μ•„λ‹Œ nested 객체여야 함
    • 일반적인 κ²ƒμ—μ„œ ꡬ체적인 κ²ƒμ˜ μˆœμ„œλ‘œ μž‘μ—…ν•˜κΈ°
    • 쀑첩 ν•„λ“œμ…‹μ„ ꡬ성할 땐 일반적인 κ²ƒμ—μ„œ ꡬ체적인 μˆœμ„œλ‘œ μ§„ν–‰ν•˜μ—¬, host.* 와 같은 접두사가 μžˆλŠ” 객체둜 κ·Έλ£Ήν•‘ ν•„λ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄μ•Ό 함
  • μ˜λ―Έμ—†λŠ” 반볡 μ§€μ–‘
    • 이미 ν•„λ“œλͺ…μ˜ 일뢀가 λ‹€λ₯Έ ν•„λ“œλͺ…μœΌλ‘œ μ‚¬μš©λ˜κ³  μžˆλŠ” 경우 λ°˜λ³΅ν•˜μ§€ 말 것. ex) host.host_ip λŠ” host.ip κ°€ λ˜μ•Ό 함
    • λ¬Όλ‘  ν•„λ“œλͺ… 변경이 νŒ€ λ‚΄ ν•„μˆ˜μ μΈ μ»¨λ²€μ…˜μ„ μœ„λ°˜ν•˜λŠ” 경우 λ“±κ³Ό 같은 상황에선 μ˜ˆμ™Έλ₯Ό λ‘˜ 수 있음
  • 가급적 μΆ•μ•½λœ 단어λ₯Ό μ“°μ§€ 말 것
    • ip, os, geo 와 같이 이미 λͺ¨λ‘κ°€ 쀄여쓰고 μžˆλŠ” 경우 등에선 μ˜ˆμ™Έλ₯Ό λ‘˜ 수 있음

​

μ°Έκ³ 

λ°˜μ‘ν˜•