Elastic
๐Ÿ™Š

Elastic

Created
May 8, 2024 03:37 AM
Last edited time
Last updated May 20, 2024
Tags
ElasticSearch
Language
URL

Intro::

์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.
ย 

ElasticSearch ๋ž€??

๐Ÿ’ก
Elasticsearch๋Š” ํ˜„์žฌ๋Š” ์„ธ์ƒ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ๊ฐ€ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ๊ฒ€์ƒ‰์—”์ง„์ž…๋‹ˆ๋‹ค.
์ „๋ฌธ๊ฒ€์ƒ‰์—”์ง„ (Full-text search engine)์œผ๋กœ ์ฒ˜์Œ ๊ฐœ๋ฐœ๋˜์—ˆ์ง€๋งŒ, Elasticsearch๋Š” ๊ฒ€์ƒ‰์—”์ง„์„ ๋„˜์–ด ๋ณด์•ˆ, ๋กœ๊ทธ๋ถ„์„, ์ „๋ฌธ๋ถ„์„ ๋“ฑ ๋‹ค์–‘ํ•œ ์˜์—ญ์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ๋Š” Kibana, Logstash, Beats๋“ค๊ณผ ํ•จ๊ป˜ ๋‹ค์–‘ํ•œ ์ „๋ฌธ ๋ถ„์•ผ์—์„œ ์ˆ˜๋งŽ์€ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  1. ๋ถ„์‚ฐ ์‹œ์Šคํ…œ: Elasticsearch๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ถ„์‚ฐ๋˜์–ด ์žˆ์–ด, ๋ฐ์ดํ„ฐ์™€ ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๊ฑธ์ณ ์ž๋™์œผ๋กœ ๋ถ„์‚ฐ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋†’์€ ๊ฐ€์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  1. ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰: ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๊ณ  ๋‚˜์„œ ๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ: ํ…์ŠคํŠธ, ์ˆซ์ž, ๋‚ ์งœ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ•๋ ฅํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ๊ณผ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  1. ์œ ์—ฐํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ: ์ „๋ฌธ ๊ฒ€์ƒ‰(full-text search)์„ ๋น„๋กฏํ•ด, ์ •ํ™•ํ•œ ๋งค์นญ, ํŽ˜์ด์ง•, ์ •๋ ฌ ๋“ฑ ๋ณต์žกํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ํ™•์žฅ์„ฑ: ์†์‰ฌ์šด ์Šค์ผ€์ผ ์•„์›ƒ(๋…ธ๋“œ ์ถ”๊ฐ€)์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์–‘์˜ ์ฆ๊ฐ€์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์žฅ์ 

  1. ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์†๋„: ์—ญ ์ธ๋ฑ์‹ฑ ๊ตฌ์กฐ ๋•๋ถ„์— ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  1. ๋†’์€ ํ™•์žฅ์„ฑ: ํด๋Ÿฌ์Šคํ„ฐ์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ์„ ์„ ํ˜•์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: Java, Python, .NET, Ruby ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณต๋˜์–ด ๊ฐœ๋ฐœ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
  1. ๊ฐ•๋ ฅํ•œ API: RESTful API๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰, ์ธ๋ฑ์‹ฑ, ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋‹จ์ 

  1. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ: Elasticsearch๋Š” ๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  1. ๊ด€๋ฆฌ ๋ณต์žก์„ฑ: ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ปค์ง€๋ฉด ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ด€๋ฆฌ ์ „๋žต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  1. ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ: Elasticsearch๋Š” ์ตœ์ข… ์ผ๊ด€์„ฑ(eventual consistency) ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์ผ๊ด€์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 

Logstash

๐Ÿ’ก
๋กœ๊ทธ ์Šคํƒœ์‹œ(Logstash)๋Š” ์˜คํ”ˆ ์†Œ์Šค ์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ, ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ๋กœ๊ทธ๋‚˜ ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ, ์ „์ฒ˜๋ฆฌํ•˜๊ณ , ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ ์Šคํƒœ์‹œ๋Š” ์ฃผ๋กœ ๋กœ๊ทธ ํŒŒ์ผ, ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ, ์‹œ์Šคํ…œ ๋ฉ”ํŠธ๋ฆญ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  1. ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘: ๋กœ๊ทธ์Šคํƒœ์‹œ๋Š” ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฉ”์‹œ์ง€ ํ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ž…๋ ฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  1. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ: ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ๊ฐ€๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ฑฐ๋‚˜, ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜•ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ: ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ Elasticsearch, ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์ถœ๋ ฅ ๋ชฉ์ ์ง€๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์Šคํƒœ์‹œ๋Š” ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  1. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜: ๋กœ๊ทธ์Šคํƒœ์‹œ๋Š” ์ž…๋ ฅ, ํ•„ํ„ฐ, ์ถœ๋ ฅ์„ ์œ„ํ•œ ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋งค์šฐ ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ง€์›: ๋กœ๊ทธ์Šคํƒœ์‹œ๋Š” JSON, XML, CSV ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๊ฐ•๋ ฅํ•œ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋Šฅ๋ ฅ: ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋™์•ˆ ๋‹ค์–‘ํ•œ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, grok์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ํ…์ŠคํŠธ ๋กœ๊ทธ์—์„œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ณ€ํ˜•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ํ™•์žฅ์„ฑ: ๋กœ๊ทธ์Šคํƒœ์‹œ๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๊ฑธ์ณ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํด๋Ÿฌ์Šคํ„ฐ ํ˜•ํƒœ๋กœ ๋ฐฐํฌํ•˜์—ฌ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€

  • ๋กœ๊ทธ ๊ด€๋ฆฌ: ๋‹ค์–‘ํ•œ ์„œ๋ฒ„์™€ ์žฅ์น˜์—์„œ ์ƒ์„ฑ๋œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ค‘์•™ ์ง‘์ค‘ํ™”ํ•˜๊ณ , ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด Elasticsearch๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ๋ถ„์„: ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๋ฐ์ดํ„ฐ๋‚˜ ์ ‘๊ทผ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ณด์•ˆ ์œ„ํ˜‘์„ ํƒ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง: ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ถ„์„ํ•˜์—ฌ, ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  1. ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ: ๋กœ๊ทธ์Šคํƒœ์‹œ๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์†Œ๋ชจ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋†’์€ ํŽธ์ž…๋‹ˆ๋‹ค.
  1. ์„ค์ • ๋ณต์žก์„ฑ: ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•„ํ„ฐ์˜ ์„ค์ •์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํฐ ์„ค์ • ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 

Kibana

๐Ÿ’ก
Kibana๋Š” Elasticsearch ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. Elastic Stack์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ž˜ํ”„, ์ฐจํŠธ, ์ง€๋„ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ๋ณด๋‹ค ์‰ฝ๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค. Kibana๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ„์„ํ•˜๊ณ , ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ํ•„์š” ์—†์ด ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  1. ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ๋‹ค์–‘ํ•œ ์ฐจํŠธ, ๋งต, ๊ทธ๋ž˜ํ”„ ๋“ฑ์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฌํ•œ ์‹œ๊ฐํ™” ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , ์—ฌ๋Ÿฌ ์‹œ๊ฐํ™”๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํ•œ ๋ˆˆ์— ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋Œ€์‹œ๋ณด๋“œ: ์—ฌ๋Ÿฌ ์‹œ๊ฐํ™”๋ฅผ ํ•˜๋‚˜์˜ ๋Œ€์‹œ๋ณด๋“œ๋กœ ์กฐํ•ฉํ•˜์—ฌ, ๋ณตํ•ฉ์ ์ธ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋Œ€์‹œ๋ณด๋“œ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉฐ, ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ํ˜‘์—…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„์„: Elasticsearch์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ™œ์šฉํ•˜์—ฌ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  1. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ: Elasticsearch ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ˜์†”์„ ์ œ๊ณตํ•˜์—ฌ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ํ•„์š”ํ•œ ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•์Šต๋‹ˆ๋‹ค.
  1. ๋ฐ์ดํ„ฐ ํƒ์ƒ‰: Discover ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด Elasticsearch์— ์ €์žฅ๋œ ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ํ•„ํ„ฐ๋งํ•˜์—ฌ ์„ธ๋ถ€์ ์ธ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋จธ์‹  ๋Ÿฌ๋‹ ์ง€์›: Kibana๋Š” Elastic Stack์˜ ๋จธ์‹  ๋Ÿฌ๋‹ ๊ธฐ๋Šฅ๊ณผ ํ†ตํ•ฉ๋˜์–ด, ๋ฐ์ดํ„ฐ์—์„œ ๋น„์ •์ƒ์ ์ธ ํŒจํ„ด์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ 

  1. ์ง๊ด€์ ์ธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค: ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„๊ณผ ์‹œ๊ฐํ™” ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ์˜ต์…˜: ๋งค์šฐ ๋‹ค์–‘ํ•œ ์‹œ๊ฐํ™” ์˜ต์…˜์„ ์ œ๊ณตํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์–‘ํ•œ ๊ด€์ ์—์„œ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. Elasticsearch์™€์˜ ๊ธด๋ฐ€ํ•œ ํ†ตํ•ฉ: Elasticsearch์˜ ๊ฐ•๋ ฅํ•œ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ๊ธฐ๋Šฅ๊ณผ ํ†ตํ•ฉ๋˜์–ด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  1. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์š”๊ตฌ: ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•ด์„œ๋Š” Elasticsearch ์ฟผ๋ฆฌ ์–ธ์–ด์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋ฆฌ์†Œ์Šค ์š”๊ตฌ๋Ÿ‰: ํฐ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ๋ชจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ย 

Beats

๐Ÿ’ก
Beats๋Š” Elastic Stack์˜ ๊ฐ€๋ฒผ์šด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ธฐ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํŒจ๋ฐ€๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ Beat๋Š” ํŠน์ •ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐ ํŠนํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด ๋ฐ์ดํ„ฐ๋ฅผ Elasticsearch ๋˜๋Š” Logstash๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. Beats๋Š” Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๊ณ , ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ์„œ๋ฒ„, ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ๋กœ์ปฌ ๋จธ์‹ ์—์„œ ์ง์ ‘ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘ํ•˜์—ฌ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  • ๊ฒฝ๋Ÿ‰์„ฑ: Beats๋Š” ์‹œ์Šคํ…œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งค์šฐ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉฐ, ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์œ ์—ฐ์„ฑ: ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , Elasticsearch ๋˜๋Š” Logstash๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ๊ตฌ์„ฑ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ: ๊ฐœ๋ณ„ Beat๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๊ฑธ์ณ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด ๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ๋„ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘: ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜์—ฌ, ๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„์˜ ๋ถ„์„ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ย 

Elasticsearch ํ™˜๊ฒฝ ์„ค์ •

  • jvm.options
    • Elasticsearch๋Š” Java์˜ ๊ฐ€์ƒ๋จธ์‹  ์œ„์—์„œ ์‹คํ–‰์ด ๋˜๋Š”๋ฐ 7.0 ๊ธฐ์ค€์œผ๋กœ 1gb์˜ ํž™๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •๋“ค์€ jvm.options ํŒŒ์ผ์—์„œ ์•„๋ž˜ ๋‚ด์šฉ๋“ค์„ ์ˆ˜์ •ํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • elasticsearch-8.13.3/config/jvm.options ์— ์œ„์น˜
  • elasticsearch.yml
    • elasticsearch ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์‹ค์ œ ์„ค์ •๋“ค์€ ๋Œ€๋ถ€๋ถ„ elasticsearch.yml ํŒŒ์ผ์—์„œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • cluster.name: "<ํด๋Ÿฌ์Šคํ„ฐ๋ช…>"
    • node.name: "<๋…ธ๋“œ๋ช…>"
    • node.attr.<key>: "<value>"
    • path.data: [ "<๊ฒฝ๋กœ>" ]
    • path.logs: "<๊ฒฝ๋กœ>"
    • bootstrap.memory_lock: true
    • network.host: <ip ์ฃผ์†Œ>
    • http.port: <ํฌํŠธ ๋ฒˆํ˜ธ>
    • transport.port: <ํฌํŠธ ๋ฒˆํ˜ธ>
    • discovery.seed_hosts: [ "<ํ˜ธ์ŠคํŠธ-1>", "<ํ˜ธ์ŠคํŠธ-2>", ... ]
    • cluster.initial_master_nodes: [ "<๋…ธ๋“œ-1>", "<๋…ธ๋“œ-2>" ]
    • node.master: true
    • node.data: true
    • node.ingest: true
    • node.ml: true
ย 

References::

Loading Comments...