๐ก ๋ณธ ๋ฌธ์๋ ELK Stack ์ค 'Logstash'์ ๋ํ ๊ฐ๋ ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋์ ๊ธ์ ๋๋ค.
ํ์์ ELK Stack์ ๊ด์ฌ์ด ์๊ฑฐ๋ Logstash๋ฅผ ์ ๋ฌธํ๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
1. Logstash ์๊ฐ
1.1 Elastic Stack (ELK Stack)
- E(Elasticsearch): ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ฒ์
- L(Logstash): ๋ฐ์ดํฐ ์์ง
- ๋ก๊ทธ ์คํ์๋ ๋ฐ์ดํฐ์ ์ ๋ ฅ, ๋ณํ, ์ถ๋ ฅ์ ์ค์๊ฐ ํ์ดํ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํ๋ ์คํ์์ค ๋ฐ์ดํฐ ์์ง ์์ง.
- ๋ค์ํ ์ ๋ ฅ ์์ค์์ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์์ง(Ingest)ํ์ฌ ๋ณํํ ํ ์์ฃผ ์ฌ์ฉํ๋ "์คํ์(Stash)-๋ณด๊ด์"(Elasticsearch)๋ก ์ ์ก
- K(Kibana): ๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ๋ฆฌํฌํ
๋ถ์
- ํค๋ฐ๋๋ ์๋ผ์คํฑ์์น์ ์ฐ๋ํ์ฌ ๋์ํ๋ ๋ฐ์ดํฐ ์๊ฐํ(๋ฆฌํฌํ ) ๋ฐ ๋ถ์
1.2 Logstash: ๋ฐ์ดํฐ ์์ง
- Logstash๋ ์ ๋ ฅ(input) ๊ธฐ๋ฅ์์ ๋ค์ํ ๋ฐ์ดํฐ์ ๋ก๊ทธ๋ฅผ ์ ๋ ฅ ๋ฐ๊ณ ํํฐ(filter) ๊ธฐ๋ฅ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๊ณ , ์ถ๋ ฅ(output) ๊ธฐ๋ฅ์ ํตํด ์ํ๋ ๋ชฉ์ ์ ๋ง๊ฒ ๋ค์ํ ๋ฐ์ดํฐ ์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋๊ตฌ์ ๋๋ค.
- Logstash๊ฐ ์ถ๋ ฅ API๋ก Elasticsearch๋ฅผ ์ง์ํ๊ธฐ ์์ํ๋ฉด์ ๋ง์ ๊ณณ์์ Elasticsearch์ ์
๋ ฅ ์๋จ์ผ๋ก Logstash๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค.
2. Logstash ๊ฐ๋
2.1 Logstash: Dataflow ๊ด๋ฆฌ ์์ง
- ๋ฐ์ดํฐ ํ๋ฆ์ ์ํ ์คํ์์ค ์ค์ ์ฒ๋ฆฌ ์์ง
- dataflow ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ฌ ์ด๋ฒคํธ ๋ฐ์ดํฐ์ ๋ณํ ๋ฐ ์คํธ๋ฆผ ์ค์
- ๋ค์ํ ๋ฐ์ดํฐ ์์ ์ ๊ทผ
- ์์ ๋ฒํผ๋ง์ ํตํ ์ํ์ ์ธ ์ค์ผ์ผ๋ง
- ํตํฉ ์ฒ๋ฆฌ๋ฅผ ์ํ ํํํ 200๊ฐ ์ด์์ ํ๋ฌ๊ทธ์ธ
2.2 Logstash ๊ตฌ์ฑ
Logstash์ ์ค์ (.conf)์ ์ ๋ ฅ(Input), ๊ฐ๊ณต(Filter), ์ถ๋ ฅ(Output) ์น์ ์ผ๋ก ๋๋๋๋ฐ, ์ด์ ๋ํ ์์ธํ ์ค๋ช ๊ณผ ๋์์ ์ฐธ๊ณ ํ ์ ์๋ Plugin๋ค์ ์ ๋ฆฌํด๋ณด์์ต๋๋ค. Logstash๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ๋ก๊ทธ์ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ๊ณ ๋ณํํ์ฌ ์ฌ๋ฌ๊ฐ์ง ๊ฒฐ๊ณผ ๊ฐ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
2.2.1 ์ ๋ ฅ (Input)
Logstash๋ ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ์์ง, ์ ํ, ์ ์กํ์ฌ ์ ๋ฐ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์์ฝ๊ฒ ์ฒ๋ฆฌํด์ค๋๋ค. ์ผ๋ฐ์ ์ธ ๋ค์์ ์์ค์์ ๋์์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ค์ํ ์ ๋ ฅ์ ์ง์ํฉ๋๋ค. Log, Metrics.Web Applications, Data Source ์คํธ๋ฆฌ๋ฐ ๋๋ ๋ฐฉ์์ผ๋ก ์์ง ํ ์ ์์ต๋๋ค.
Input plugins ์๋ Files, SQL Queries, HTTP requests, Elasticsearch, *Beats, Metrics systems, Logstash pipelines ๋ฑ ๋ค์ํ ๊ณณ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ ์ ์์ต๋๋ค.
2.2.2 ๊ฐ๊ณต (Filter)
Logstash๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ํ๋ ๊ณผ์ ์์ ๋ถ์๊ณผ ์๋ณ์ ํตํด ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ณํ ํตํฉํ์ฌ ๊ฐ๋ ฅํ ๋ถ์์ ์ ๊ณตํฉ๋๋ค. ํ์์ด๋ ๋ณต์ก์ฑ์ ๊ด๊ณ ์์ด ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ๋ณํํฉ๋๋ค.
Filter plugins ์ผ๋ก Log ํ์ฑ, ๋ฐ์ดํฐ ํ์ฅ, ํ ๊ทธ ์ถ๊ฐ ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์์ต๋๋ค.
2.2.3 ์ถ๋ ฅ (Output)
์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ผ์ฐํ ํ ์ ์๋๋ก ๋ค์ํ ์ถ๋ ฅ์ ์ ๊ณตํ๋ฉฐ, ์ด๋ Plugins์ ํตํด ํ์ธํ ์ ์์ต๋๋ค.
Outputs plugins ์๋ Elasticsearch, Data ๋ณด๊ด์ (ex. Amazon S3 , Google storages), Alterting & Monitoring System ๋ฑ์ด ์์ต๋๋ค.
๋ค์ํ ์ถ๋ ฅ์ ์ง์ํ์ฌ ์ฌ๋ฌ ์ ์ฅ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค์ด์คํธ๋ฆผ ํ ์ ์์ผ๋ฉฐ ,ํ๋ฌ๊ทธ์ธ ํ์ดํ๋ผ์ธ ์ํคํ ์ฒ๋ฅผ ์งํฅํ๋ฉฐ ๋ค์ํ ์ ๋ ฅ,๊ฐ๊ณต,์ถ๋ ฅ์ ์กฐ์ ํ๋ฉด์ ์กฐํ๋กญ๊ฒ ์ด์์ด ๊ฐ๋ฅํฉ๋๋ค
2.2.4 ๋น์ธ (Beats): ๋ฐ์ดํฐ ์์ง๊ธฐ(์๋ฐฑ๋์ ์ฅ์น๋ก๋ถํฐ ๋ฐ์ดํฐ ์์ง ๋ฐ ์ก์ )
- ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ Logstash/Elasticsearch์ ์ ์ฅํ์ฌ ๋ชจ๋ํฐ๋ง ํ๋ ์์คํ
์
๋๋ค.
- Logstash์ Input์ ํํ๋ก ๋ฃ์ ์ ์์ผ๋ฉฐ, ๊ฐ๋ฒผ์ ๋ฐ์ดํฐ ๋ณํ์ด ํ์์์ ๊ฒฝ์ฐ Logstash๋ฅผ ๋์ฒดํ๊ธฐ๋ ํฉ๋๋ค.
- ํ์ฌ Elastic ์์๋ Packetbeat, Libbeat, Filebeat, Metricbeat, Winlogbeat, Auditbeat ๋ฑ์ ๊ฐ๋ฐํ์ฌ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค.
2.3 Logstash ๋์
- ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ฑ์ผ๋ก ๋ณํํด์ค ํ ์์ ํ์ ์ ์ฅ.
- ํ์ดํ๋ผ์ธ๋ง๋ค Batcher์์ ์์ ํ์ ์๋ ๋ด์ฉ์ ๋ช๊ฐ์ฉ ๋ฌถ์.
- ์ดํ elasticsearch์ _bulk API๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋
+ ์ฝ๋ฑ (Codec): ๋ฐ์ดํฐ ์ธ์ฝ๋ฉ & ๋์ฝ๋ฉ
- ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณํํด์ฃผ๋ ์์ ์ ํฉ๋๋ค.
- JSON, Avro, msgpack, Netflow, CloudTrail ๋ฑ์ ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ํฉ๋๋ค.
2.4 Logstash ๋ฐ๋ชจ
- ์ฐธ๊ณ (์์ 14:30): https://www.elastic.co/kr/webinars/getting-started-logstash?baymax=rtp&elektra=docs&storm=top-video&iesrc=ctr
์ฐธ๊ณ
- [Elastic official] Logstash: https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html
- Input plugin Ref. https://www.elastic.co/guide/en/logstash/current/input-plugins.html
- Filter plugin Ref. https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
- Output plugin Ref. https://www.elastic.co/guide/en/logstash/current/output-plugins.html
- Logstash Basic video: https://www.elastic.co/kr/webinars/getting-started-logstash?baymax=rtp&elektra=docs&storm=top-video&iesrc=ctr