Search
Duplicate
πŸ–‡οΈ

둜그 λͺ¨λ‹ˆν„°λ§ ν™˜κ²½ ꡬ좕

생성일
2022/09/27
νƒœκ·Έ
infra
linux
ν•΄λ‹Ή νŽ˜μ΄μ§€λŠ” μƒνƒœ λͺ¨λ‹ˆν„°λ§ ν™˜κ²½ ꡬ좕 ν¬μŠ€νŒ…μ— 이어 μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
λͺ©μ°¨

둜그 λͺ¨λ‹ˆν„°λ§

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ΄ˆκΈ°μ—λŠ” μŠ¬λž™μ„ μ΄μš©ν•˜μ—¬ μ„œλ²„μ˜ μ—λŸ¬ 둜그λ₯Ό λ°›μ•˜μŠ΅λ‹ˆλ‹€. 그리고 μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ μŠ¬λž™μœΌλ‘œ μš°μ„  μ–΄λ–€ μ—λŸ¬μΈμ§€ 확인을 ν•œ λ’€, ν•΄λ‹Ή μ„œλ²„μ— μ ‘μ†ν•˜μ—¬ μŒ“μΈ 둜그λ₯Ό ν™•μΈν•˜κ³  μ—λŸ¬λ₯Ό ν”½μŠ€ν•˜λŠ” 과정을 κ±°μ³€μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μŠ¬λž™μœΌλ‘œ 둜그λ₯Ό λ°›λŠ” κ΅¬μ‘°λŠ” μ—λŸ¬μ— λŒ€ν•œ 좔이λ₯Ό 확인할 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. 그리고 μ‹€μ œ 둜그λ₯Ό ν™•μΈν•˜κ³  이상 ν˜„μƒμ„ νŒŒμ•…ν•˜κΈ° μœ„ν•΄ μ„œλ²„μ— 직접 접속해야 ν–ˆμ§€λ§Œ μ΄λŠ” μΈλ°”μš΄λ“œ κ·œμΉ™λ•Œλ¬Έμ— κ·œμΉ™μ΄ μ μš©λ˜μ§€ μ•Šμ€ IP λ‘œλŠ” 접속이 λΆˆκ°€λŠ₯ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ§‘μ—μ„œλŠ” ν•΄λ‹Ή μ„œλ²„λ‘œ λ“€μ–΄κ°ˆ μˆ˜κ°€ μ—†μ–΄ 캠퍼슀λ₯Ό λ‚˜μ˜€λ©΄ μ—λŸ¬κ°€ 터지지 μ•ŠκΈ°λ₯Ό 기도해야 ν–ˆμŠ΅λ‹ˆλ‹€. 이와 같은 λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κ³ μž 둜그 λͺ¨λ‹ˆν„°λ§ ν™˜κ²½μ„ κ΅¬μΆ•ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Promtail

β€’
μ•± μ„œλ²„λ‘œλΆ€ν„° μŒ“μ€ 둜그λ₯Ό Loki 둜 μ „μ†‘ν•΄μ€λ‹ˆλ‹€. 이에 따라 WAS μ„œλ²„μ—μ„œ κ΅¬λ™λ˜μ–΄ ν•΄λ‹Ή μ„œλ²„μ˜ 둜그λ₯Ό Loki μ„œλ²„λ‘œ 전솑할 수 μžˆμŠ΅λ‹ˆλ‹€.
β€’
둜그λ₯Ό μ €μž₯ν•˜κ³  μ‹œκ³„μ—΄ 자료둜 μ§‘κ³„ν•΄μ£ΌλŠ” μ˜€ν”ˆ μ†ŒμŠ€ νˆ΄μž…λ‹ˆλ‹€. Promtail λ‘œλΆ€ν„° 둜그λ₯Ό λ°›κ³  데이터 ν˜•νƒœμ— 맞게 μ²˜λ¦¬ν•©λ‹ˆλ‹€.
전체적인 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
λ¨Όμ € μ•± μ„œλ²„μ—μ„œ 둜그λ₯Ό μƒμ‚°ν•˜λ©΄ Promtail μ—μ„œ Loki μ„œλ²„λ‘œ 둜그λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€.
Loki μ„œλ²„μ—μ„œλŠ” Promtail λ‘œλΆ€ν„° 받은 둜그λ₯Ό μΈλ±μ‹±ν•˜μ—¬ μ €μž₯ν•©λ‹ˆλ‹€.
이후 Grafana μ—μ„œ Loki 에 μ €μž₯된 둜그λ₯Ό μ‘°νšŒν•˜κ³  μ‹œκ°ν™”ν•©λ‹ˆλ‹€.

인프라 섀계

μ§€λ‚œ μƒνƒœ λͺ¨λ‹ˆν„°λ§ν•  λ•Œμ™€ 같이 μΈλ°”μš΄λ“œ κ·œμΉ™κ³Ό λ¦¬μ†ŒμŠ€μ˜ μ œν•œλ•Œλ¬Έμ— κ°€μž₯ 효율적으둜 μ‚¬μš©ν•  수 μžˆλŠ” μΈμŠ€ν„΄μŠ€μ™€ μ„œλ²„ ꡬ동을 ꡬ상해야 ν–ˆμŠ΅λ‹ˆλ‹€.
두 개의 μΈμŠ€ν„΄μŠ€λ‘œ κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
Prometheus μ—μ„œ μ‚¬μš©ν•˜λ˜ 8080 포트λ₯Ό Loki 둜 λ„˜κ²¨μ£Όκ³  Prometheus λŠ” κΈ°λ³Έ 포트인 9090 포트둜 λ³€κ²½ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이에 따라 Grafana μ—μ„œ μ‚¬μš©ν•˜λ˜ Datasource URL 도 ν•¨κ»˜ λ³€κ²½ν•΄ μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.
Promtail μ„œλ²„λŠ” μΈλ°”μš΄λ“œλ‘œ 확인할 정보가 크게 μ—†μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ ꡳ이 μΈλ°”μš΄λ“œ κ·œμΉ™μ΄ 적용된 8080, 8081 포트둜 μ‹€ν–‰μ‹œν‚¬ ν•„μš”μ—†μ΄ κΈ°λ³Έ 포트인 9080 으둜 μ‹€ν–‰μ‹œμΌœ μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.
Loki μ„œλ²„λŠ” Promtail μ„œλ²„λ‘œλΆ€ν„° 둜그λ₯Ό μˆ˜μ§‘ν•΄μ•Όν•©λ‹ˆλ‹€. 이에 따라 μΈλ°”μš΄λ“œ κ·œμΉ™μ΄ 적용된 8080, 8081 μ„œλ²„λ‘œ μ‹€ν–‰μ‹œμΌœμ•Όν–ˆκ³ , κ·Έ 쀑 8080 포트둜 μ‹€ν–‰μ‹œμΌœ μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

Loki μ„€μΉ˜

wget https://github.com/grafana/loki/releases/download/v2.6.1/loki-linux-arm64.zip unzip loki-linux-arm64.zip
Shell
볡사
2022-10-03 κΈ°μ€€Β LTS 버전인 2.6.1 λ²„μ „μ˜ λ¦¬λˆ…μŠ€ arm64 버전을 λ‹€μš΄λ°›μ•˜μŠ΅λ‹ˆλ‹€. Prometheus μ™€λŠ” λ‹€λ₯΄κ²Œ zip 파일둜 λ‹€μš΄λ°›μ•˜μŠ΅λ‹ˆλ‹€. tar νŒŒμΌμ€ μ†ŒμŠ€ μ½”λ“œλ§Œ μžˆμ–΄, 싀행을 μ‹œν‚¬ μˆ˜κ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.Β unzip 은 κΈ°λ³Έ λͺ…λ Ήμ–΄κ°€ μ•„λ‹ˆκΈ°λ•Œλ¬Έμ— μ—†λ‹€λ©΄ μ••μΆ• μ „ ν•΄λ‹Ή λͺ…λ Ήμ–΄λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/cmd/loki/loki-local-config.yaml
Shell
볡사
μ•žμ„œ μ„€μΉ˜ν•œ νŒŒμΌμ€ μ‹€ν–‰ νŒŒμΌμ΄κΈ°λ•Œλ¬Έμ—, μ„€μ • νŒŒμΌλ„ λ”°λ‘œ λ‹€μš΄λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€. λ‹€μš΄λ°›μ€ μ„€μ • νŒŒμΌμ—μ„œλŠ” μ„€κ³„ν•œλŒ€λ‘œ 8080 포트둜 λ°”κΎΈκΈ° μœ„ν•΄ server.http_listen_port 뢀뢄을 λ³€κ²½ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Loki μ‹€ν–‰

sudo nohup ./loki-linux-arm64 -config.file=loki-local-config.yaml &
Shell
볡사
μ—¬λŸ¬ μ„œλ²„λ₯Ό λ„μš°κΈ° μœ„ν•΄μ„œλŠ” nohup λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•˜μ—¬ λ°±κ·ΈλΌμš΄λ“œλ‘œ μ‹€ν–‰μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
curl http://localhost:8080/ready λ˜λŠ” μ›Ή μ ‘κ·ΌμœΌλ‘œ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λœ 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
λ§Œμ•½ failed parsing config: loki-local-config.yaml: yaml: unmarshal errors μ—λŸ¬κ°€ λ°œμƒν•œλ‹€λ©΄ μ„€μ • νŒŒμΌμ„ 잘λͺ» λ‹€μš΄λ°›μ•„μ„œ λ°œμƒν•œ μ—λŸ¬μž…λ‹ˆλ‹€. ν•΄λ‹Ή μ—λŸ¬λŠ” 버전이 λ“€μ–΄κ°€μ•Ό ν•  뢀뢄에 λΈŒλžœμΉ˜κ°€ λ“€μ–΄κ°€ 생긴 μ—λŸ¬κ³  λ‹€μš΄λ‘œλ“œλ°›λŠ” μ„€μ • νŒŒμΌμ„ μ μ ˆν•œ λ²„μ „μœΌλ‘œ λ°”κΎΈμ–΄ λ‹€μš΄λ°›μœΌλ©΄ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Promtail μ„€μΉ˜

μŠ€ν”„λ§μ΄ μ‹€ν–‰λ˜κ³  μžˆλŠ” μ•± μ„œλ²„λ‘œ μ ‘μ†ν•˜μ—¬ Promtail 을 μ„€μΉ˜ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
wget https://github.com/grafana/loki/releases/download/v2.6.1/promtail-linux-arm64.zip unzip promtail-linux-arm64.zip wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/clients/cmd/promtail/promtail-local-config.yaml
Shell
볡사
μ„€μΉ˜λŠ” Loki 와 μœ μ‚¬ν•©λ‹ˆλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ unzip λͺ…λ Ήμ–΄κ°€ μ—†λ‹€λ©΄ apt install 둜 μΆ”κ°€ν•΄ μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

Promtail μ„€μ •

server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://{Loki μ„œλ²„ IP}:{Loki μ„œλ²„ 포트}/loki/api/v1/push scrape_configs: - job_name: was_warn static_configs: - targets: - localhost labels: jobs: was_warn_logs __path__: /home/ubuntu/logs/warn.log - job_name: was_error static_configs: - targets: - localhost labels: jobs: was_error_logs __path__: /home/ubuntu/logs/error.log
YAML
볡사
β€’
clients.url 뢀뢄을 loki 와 κ΄€λ ¨λœ μ„€μ •μœΌλ‘œ λ³€κ²½ν•˜μ˜€μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή url 은 promtail μ—μ„œ 둜그λ₯Ό 보낼 endpoint μž…λ‹ˆλ‹€.
β€’
job μœΌλ‘œλŠ” warn κ³Ό error 둜그 νŒŒμΌμ„ λ³΄λƒ…λ‹ˆλ‹€. __path__ 둜 보낼 νŒŒμΌμ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

Promtail μ‹€ν–‰

sudo nohup ./promtail-linux-arm64 --config.file=promtail-local-config.yaml &
Shell
볡사
λ§ˆμ°¬κ°€μ§€λ‘œ λ°±κ·ΈλΌμš΄λ“œ μ‹€ν–‰ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 nohup λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

Datasource μΆ”κ°€

λͺ¨λ‹ˆν„°λ§ μ„œλ²„λ‘œ λ‹€μ‹œ 접속 ν›„ Grafana νŽ˜μ΄μ§€λ‘œ μ ‘μ†ν•˜μ—¬ Loki 의 Datasource λ₯Ό μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€. μ™Όμͺ½ μ˜΅μ…˜ μΉΈμ—μ„œ ν†±λ‹ˆλ°”ν€΄ λͺ¨μ–‘ μ„€μ •μ—μ„œ datasource λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Logging & document databases μΉΈμ—μ„œ Loki λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
Prometheus λ₯Ό μΆ”κ°€ν•  λ•Œμ™€ 같이 URL 에 Loki κ°€ μ‹€ν–‰λ˜κ³  μžˆλŠ” port 의 URL 을 μž…λ ₯ ν›„ save & test λ²„νŠΌμœΌλ‘œ μΆ”κ°€ν•©λ‹ˆλ‹€.
이제 μƒˆλ‘œμš΄ νŒ¨λ„λ‘œ 둜그 정보λ₯Ό ν™•μΈν•˜κ² μŠ΅λ‹ˆλ‹€. dashboards - new dashboard - add a panel 둜 μ»€μŠ€ν…€ μ‹œκ°ν™”κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
Labels 둜 인덱싱이 κ°€λŠ₯ν•©λ‹ˆλ‹€. 이후 run queries λ₯Ό μ‹€ν–‰ν•˜λ©΄ 둜그 정보λ₯Ό λ“€κ³  올 수 있고, 우츑의 visualization μ—μ„œ λ‹€μ–‘ν•œ μ‹œκ°ν™” 차트λ₯Ό 선택할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.