ELK (ElasticSearch, Logstash, Kibana) Stack (ELK ์Šคํƒ)
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋””์ง€ํ„ธ ๊ฟ€ํŒ

ELK (ElasticSearch, Logstash, Kibana) Stack (ELK ์Šคํƒ)

by ์ผ์ƒ์„ ๊ณต์œ ํ•จ๋‹ˆ๋‹ค 2022. 5. 18.

ELK ์Šคํƒ์ด ์œ ๋ช…ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ELK ์Šคํƒ์€ ๋กœ๊ทธ ๋ถ„์„ ๊ณต๊ฐ„์—์„œ์˜ ํ•„์š”๋ฅผ ์ฑ„์›Œ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ IT ์ธํ”„๋ผ๊ฐ€ ์ ์  ๋” ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ๋กœ ์ด๋™ํ• ์ˆ˜๋ก, ํ•ด๋‹น ์ธํ”„๋ผ์™€ ์„œ๋ฒ„ ๋กœ๊ทธ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ, ํด๋ฆญ์ŠคํŠธ๋ฆผ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ ๊ด€๋ฆฌ์™€ ๋ถ„์„ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ELK ์Šคํƒ์€ ๊ฐœ๋ฐœ์ž์™€ DevOps ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์˜ค๋ฅ˜ ์ง„๋‹จ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ, ์ธํ”„๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ’์ง„ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ ์€ ๋น„์šฉ์œผ๋กœ ๋‹จ์ˆœํ•˜๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ ๋กœ๊ทธ ๋ถ„์„ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

- ์ถœ์ฒ˜ : https://aws.amazon.com/ko/opensearch-service/the-elk-stack/


 

 

 

๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ด€๋ จ ์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜์ธ ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜(Elasticsearch) + ๋กœ๊ทธ์Šคํƒœ์‹œ(Logstash) + ํ‚ค๋ฐ”๋‚˜(Kibana)๋ฅผ ๊ฐ™์ด ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ, ELK ํ˜น์€ ELK ์Šคํƒ(ELK Stack), ์—˜๋ผ์Šคํ‹ฑ ์Šคํƒ(Elastic Stack)์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

  • Elasticsearch : ๋กœ๊ทธ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰
    • Data Processing (Logstash)
      - ์„œ๋ฒ„ ๋‚ด์˜ ๋กœ๊ทธ, ์›น, ๋ฉ”ํŠธ๋ฆญ ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์ž…๋ ฅ
      - ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋ฐ ๊ตฌ์กฐ ๊ตฌ์ถ•
      - ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ๋ฐ ์†ก์‹ 
  • Logstash : ๋กœ๊ทธ ์ˆ˜์ง‘ ์—”์ง„
    • Storage (Elasticsearch)
      - ๋ฐ์ดํ„ฐ ์ €์žฅ
      - ๋ฐ์ดํ„ฐ ๋ถ„์„
      - ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
  • Kibana : ๋กœ๊ทธ ์‹œ๊ฐํ™” ๋ฐ ๊ด€๋ฆฌ
    • Visualize (Kibana)
      - Dashboard๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰
      - ํŒ€์›๋“ค๊ณผ ๊ณต์œ  ๋ฐ ํ˜‘์—…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      - ์—‘์„ธ์Šค ์ œ์–ด (Access Control) ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

๋ฐ˜์‘ํ˜•

 

ELK ์†”๋ฃจ์…˜์—์„œ Beats ์ถ”๊ฐ€๋˜๋ฉด์„œ ELK Stack์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

 

Beats : ์„œ๋ฒ„์— ์—์ด์ „ํŠธ๋กœ ์„ค์น˜ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ElasticSearch ๋˜๋Š” Logstash์— ์ „์†กํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋ฐœ์†ก์ž๋‹ค.

๊ธฐ์กด์˜ ELK์—์„œ์˜ ํฐ ๋ฌธ์ œ์  ์ค‘ ํ•˜๋‚˜๋Š” Logstash์˜€๋‹ค.๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์˜ ์—ญํ• ์„ ๋งก๊ณ  ์žˆ๋Š” Logstash๋Š”, ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ์˜ ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ ๋ณ€ํ™˜ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋งก๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปธ๋‹ค. ๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ›์•„๋“ค์ธ Elastic ํšŒ์‚ฌ๋Š”, ์˜ค๋กœ์ง€ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ง‘๋งŒ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋ชจ๋“ˆ Beats๋ฅผ ๋„์ž…ํ–ˆ๋‹ค.

 

  • ๊ฐ•๋ ฅํ•œ ์œ ์—ฐ์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ
    ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜, ๋กœ๊ทธ์Šคํƒœ์‹œ, ํ‚ค๋ฐ”๋‚˜๋Š” ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ์˜ ์ฟผ๋ฆฌ(๊ฒ€์ƒ‰), ์ˆ˜์ง‘, ์‹œ๊ฐํ™”๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค. ์šฉ๋„๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฐœ์ „ํ•˜๋Š” ์†”๋ฃจ์…˜์ด๊ธฐ์— ๊ตฌ์กฐ์  ์•ˆ์ •์„ฑ์€ ๋ฌผ๋ก  ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ๋„ ์œ ์—ฐํ•œ ํ˜ธํ™˜์„ฑ์„ ๊ฐ€์ง„๋‹ค.
  • ์ž์œ  ์Šคํ‚ค๋งˆ
    JSON ๋ฐฉ์‹์˜ Key-Value ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ˜•์‹์— ์ž์œ ๋กญ๋‹ค.
  • ์ธ๋ฑ์Šค ์™€์ผ๋“œ์นด๋“œ ์ง€์›
    ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์น˜๋ฉด ํ…Œ์ด๋ธ”(Table)์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋…์ธ ์ธ๋ฑ์Šค(Index)์˜ Union ๋˜๋Š” Join์ด ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์™€์ผ๋“œ ์นด๋“œ(*) ํ‘œ๊ธฐ ํ•˜๋‚˜๋กœ ๋๋‚  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ํ™•์žฅ(Scale-out) ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ์ฒ˜์Œ๋ถ€ํ„ฐ ํ™•์žฅ์„ ๊ณ ๋ คํ•˜์—ฌ ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์—, ์—ฌ๋Ÿฌ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ์—ฎ์–ด์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฉ์‹์„ ๊ตฌ์„ฑํ•  ๋•Œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๊ด€๋ จ ์ •๋ณด์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ ˆ์ฐจ๋ฅผ '๋ ˆ๊ฑฐ์‹œ ์ฝ”๋”ฉ'๋ณด๋‹จ ๊ฐœ๋ณ„ ์„ค์ •์œผ๋กœ ๊ฐ€๋Šฅ
    ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ ˆ์ฐจ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ด์šฉํ•œ ์ฝ”๋”ฉ์œผ๋กœ ๋ช…์‹œํ•œ๋‹ค๋ฉด, ํ–ฅํ›„ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜์ง€ ์•Š๊ณ  ๋ถˆํ•„์š”ํ•œ ์ข…์†์„ฑ์ด ๋†’์•„์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋กœ๊ทธ์Šคํƒœ์‹œ(Logstash)๋ฅผ ํฌํ•จํ•˜๋Š” ELK ์Šคํƒ ๊ตฌ์„ฑ ์‹œ ์œ ์—ฐ์„ฑ ํ™•๋ณด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์‚ฌ์ „์— ์ค€๋น„๋œ ์‹œ๊ฐํ™” ๋„๊ตฌ์™€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ
    ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋ฅผ ๋‚ด๋ณด๋‚ผ ํ”„๋กœ๊ทธ๋žจ์„ ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„, ์ด๋ฏธ ์‚ฌ์ „์— ์ค€๋น„๋œ ์‹œ๊ฐํ™” ๋„๊ตฌ๋ฅผ ๊ฐ€์ง„ ํ‚ค๋ฐ”๋‚˜(Kibana)๊ฐ€ ๋งˆ์šฐ์Šค ๋ช‡๋ฒˆ ์กฐ์ž‘ํ•˜๋ฉด ๊ฑฐ์ง„ ๋‹ค ์•Œ์•„์„œ ํ•ด์ค€๋‹ค. ๊ทธ ์™ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
    ๋ฉ”์‹œ์ง€ ํ(Message Queue, MQ)์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ๊ฐ•๋ ฅํ•œ ์‹ค์‹œ๊ฐ„(Realtime) ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์ด ๋œ๋‹ค.
  • ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜์˜ ๋ฒ„์ „ ๋ณ„ ๋ฒŒํฌ(Bulk) ๋ฐฉ๋ฒ• ์ฐจ์ด๋ฅผ ์™„ํ™”์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜์˜ ๋ฒŒํฌ(Bulk)๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฝ์ž…(Insert)์— ํ•ด๋‹นํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜ ๋ฒ„์ „ ๋ณ„ ๋ฒŒํฌ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์—, ์ธํ„ฐ๋„ท์— ๋– ๋Œ์•„๋‹ค๋‹ˆ๋Š” ํŠœํ† ๋ฆฌ์–ผ๋งŒ ๋ณด๊ณ  ์ง„ํ–‰ํ•˜๊ธฐ์—๋Š” ์˜ค๋ž˜๋œ ์ž๋ฃŒ๋„ ๋งŽ์•„ ๋ฌด๋ฆฌ๊ฐ€ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋กœ๊ทธ์Šคํƒœ์‹œ(Logstash)๋กœ ์—˜๋ผ์Šคํ‹ฑ ์„œ์น˜๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋ฉด ์ด๋Ÿฐ ๊ฑฑ์ •์€ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

 

curl ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ•

๊ฐœ์š” curl ์€ command line ์šฉ data transfer tool ์ด๋‹ค. download/upload ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋ฉฐ HTTP/HTTPS/FTP/LDAP/SCP/TELNET/SMTP/POP3 ๋“ฑ ์ฃผ์š”ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋ฉฐ Linux/Unix ๊ณ„์—ด ๋ฐ Windows ๋“ฑ ์ฃผ์š”ํ•œ OS ์—..

odaily.tistory.com

 

๋Œ“๊ธ€