Skip to content

PitterPetter/PitterPetter_Monitoring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

PitterPetter ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ

PitterPetter ํ”„๋กœ์ ํŠธ์˜ ๋กœ๊ทธ์™€ ๋ฉ”ํŠธ๋ฆญ์„ ํ†ตํ•ฉ ์ˆ˜์ง‘, ์ €์žฅ, ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ

๐Ÿ“‹ ๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” PitterPetter ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ **๋กœ๊ทธ(ELK Stack)**์™€ **๋ฉ”ํŠธ๋ฆญ(GMP)**์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜๋Š” ํ˜„๋Œ€์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Terraform๊ณผ Helm์„ ์‚ฌ์šฉํ•˜์—ฌ GKE์— ๋ฐฐํฌ๋˜๋ฉฐ, ํ™˜๊ฒฝ๋ณ„(๊ฐœ๋ฐœ/์šด์˜) ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๊ณ  ๋™์  ์„ค์ •์„ ํ†ตํ•ด ์œ ์—ฐํ•œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽฏ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์ƒ

  • ํ•ต์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: auth-service, content-service, course-service, ai-service, gateway
  • ์ธํ”„๋ผ ๊ตฌ์„ฑ์š”์†Œ: PostgreSQL, Kubernetes ํด๋Ÿฌ์Šคํ„ฐ, GKE ๋…ธ๋“œ
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ, ์‹œ์Šคํ…œ ๋ฉ”ํŠธ๋ฆญ, Kubernetes ์ด๋ฒคํŠธ, ๋น„์ฆˆ๋‹ˆ์Šค ๋ฉ”ํŠธ๋ฆญ

๐Ÿ—๏ธ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ์•„ํ‚คํ…์ฒ˜

PitterPetter ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์€ **ELK Stack(๋กœ๊ทธ)**๊ณผ **GMP(๋ฉ”ํŠธ๋ฆญ)**์„ ๊ฒฐํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฑ„ํƒํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง (ELK Stack)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Application   โ”‚    โ”‚    Filebeat     โ”‚    โ”‚   Logstash      โ”‚
โ”‚   Services      โ”‚โ”€โ”€โ”€โ–ถโ”‚  (DaemonSet)    โ”‚โ”€โ”€โ”€โ–ถโ”‚  (Deployment)   โ”‚
โ”‚                 โ”‚    โ”‚                 โ”‚    โ”‚                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                       โ”‚
                                                       โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚     Kibana      โ”‚โ—€โ”€โ”€โ”€โ”‚  Elasticsearch  โ”‚โ—€โ”€โ”€โ”€โ”‚   Logstash      โ”‚
โ”‚  (Deployment)   โ”‚    โ”‚  (StatefulSet)  โ”‚    โ”‚                 โ”‚
โ”‚                 โ”‚    โ”‚                 โ”‚    โ”‚                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ˆ ๋ฉ”ํŠธ๋ฆญ ๋ชจ๋‹ˆํ„ฐ๋ง (GMP)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Application   โ”‚    โ”‚   GMP System    โ”‚    โ”‚ Google Cloud    โ”‚
โ”‚   Services      โ”‚โ”€โ”€โ”€โ–ถโ”‚  (Collectors)   โ”‚โ”€โ”€โ”€โ–ถโ”‚   Monitoring    โ”‚
โ”‚                 โ”‚    โ”‚                 โ”‚    โ”‚                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”„ ์—ญํ•  ๋ถ„๋‹ด

๊ตฌ๋ถ„ ELK Stack GMP (Google Cloud Monitoring)
๋ฐ์ดํ„ฐ ํƒ€์ž… ๋กœ๊ทธ (Logs) ๋ฉ”ํŠธ๋ฆญ (Metrics)
์ˆ˜์ง‘ ๋ฐฉ์‹ Filebeat (DaemonSet) GMP Collectors (DaemonSet)
์ €์žฅ์†Œ Elasticsearch Google Cloud Monitoring
์‹œ๊ฐํ™” Kibana Google Cloud Console
์šฉ๋„ ๋กœ๊ทธ ๋ถ„์„, ๋””๋ฒ„๊น… ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง, ์•Œ๋ฆผ
๋ฐ์ดํ„ฐ ๋ณด์กด ์žฅ๊ธฐ ๋ณด์กด (์›” ๋‹จ์œ„) ๋‹จ๊ธฐ ๋ณด์กด (์ผ ๋‹จ์œ„)

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

1. ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Kubernetes ํด๋Ÿฌ์Šคํ„ฐ: GKE (Google Kubernetes Engine)
  • Helm: 3.x ์ด์ƒ
  • kubectl: Kubernetes CLI
  • Terraform: 1.0 ์ด์ƒ
  • Google Cloud SDK: gcloud CLI
  • GMP: Google Cloud Monitoring (์ž๋™ ํ™œ์„ฑํ™”)

2. ํ˜„์žฌ ๋ฐฐํฌ ์ƒํƒœ (2025-10-18 ๊ธฐ์ค€)

ํด๋Ÿฌ์Šคํ„ฐ ์ •๋ณด

  • ํ˜„์žฌ ์—ฐ๊ฒฐ: gke_pitterpetter_asia-northeast3-b_pitterpetter-dev-cluster
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค: monitoring
  • ๋ฐฐํฌ ๊ธฐ๊ฐ„: 8์ผ ์ „ (2025-10-10)

Pod ์ƒํƒœ

NAME                            READY   STATUS    RESTARTS   AGE
filebeat-filebeat-5hgs5         1/1     Running   0          12h
filebeat-filebeat-72xgv         1/1     Running   0          12h
filebeat-filebeat-7s489         1/1     Running   0          22m
filebeat-filebeat-lgp7x         1/1     Running   0          12h
filebeat-filebeat-mttd4         1/1     Running   0          12h
kibana-kibana-5bb6dbcbc-8h7nc   1/1     Running   0          12h
logstash-logstash-0             1/1     Running   0          12h
loventure-elk-master-0          1/1     Running   0          12h
loventure-elk-master-1          1/1     Running   0          12h

GMP ์‹œ์Šคํ…œ ์ƒํƒœ

NAME                          READY   STATUS    RESTARTS   AGE
collector-9zjjm               2/2     Running   0          12h
collector-l7xrt               2/2     Running   0          12h
collector-nmmrn               2/2     Running   0          41m
collector-vwgvp               2/2     Running   0          13h
collector-xc99j               2/2     Running   0          12h
gmp-operator-8b998859-7dmtj   1/1     Running   0          12h

3. ํ™˜๊ฒฝ๋ณ„ ๋ฐฐํฌ

๊ฐœ๋ฐœํ™˜๊ฒฝ ๋ฐฐํฌ

# GKE ํด๋Ÿฌ์Šคํ„ฐ ์—ฐ๊ฒฐ
gcloud container clusters get-credentials pitterpetter-dev-cluster --zone=asia-northeast3-b --project=pitterpetter

# ์ž๋™ ๋ฐฐํฌ
./scripts/deploy.sh dev

์šด์˜ํ™˜๊ฒฝ ๋ฐฐํฌ

# GKE ํด๋Ÿฌ์Šคํ„ฐ ์—ฐ๊ฒฐ
gcloud container clusters get-credentials pitterpetter-prod-cluster --zone=asia-northeast3-b --project=pitterpetter-2

# ์ž๋™ ๋ฐฐํฌ
./scripts/deploy.sh prod

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

PitterPetter_Monitoring/
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ terraform/                    # Terraform ์ธํ”„๋ผ ์ฝ”๋“œ
โ”‚   โ”œโ”€โ”€ 01-namespace.tf
โ”‚   โ”œโ”€โ”€ 02-elasticsearch.tf
โ”‚   โ”œโ”€โ”€ 03-logstash.tf
โ”‚   โ”œโ”€โ”€ 04-kibana.tf
โ”‚   โ”œโ”€โ”€ 05-filebeat.tf
โ”‚   โ”œโ”€โ”€ 06-ingress.tf
โ”‚   โ”œโ”€โ”€ variables.tf
โ”‚   โ”œโ”€โ”€ outputs.tf
โ”‚   โ”œโ”€โ”€ versions.tf
โ”‚   โ”œโ”€โ”€ dev.tfvars              # ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •
โ”‚   โ”œโ”€โ”€ prod.tfvars             # ์šด์˜ํ™˜๊ฒฝ ์„ค์ •
โ”‚   โ””โ”€โ”€ README.md
โ”œโ”€โ”€ helm-charts/                  # Helm ์ฐจํŠธ ์„ค์ •
โ”‚   โ”œโ”€โ”€ elasticsearch/
โ”‚   โ”‚   โ””โ”€โ”€ values.yaml
โ”‚   โ”œโ”€โ”€ kibana/
โ”‚   โ”‚   โ””โ”€โ”€ values.yaml
โ”‚   โ”œโ”€โ”€ logstash/
โ”‚   โ”‚   โ””โ”€โ”€ values.yaml
โ”‚   โ”œโ”€โ”€ filebeat/
โ”‚   โ”‚   โ””โ”€โ”€ values.yaml
โ”‚   โ””โ”€โ”€ monitoring/
โ”‚       โ”œโ”€โ”€ dashboards/
โ”‚       โ”‚   โ”œโ”€โ”€ application-overview.json
โ”‚       โ”‚   โ””โ”€โ”€ infrastructure-overview.json
โ”‚       โ”œโ”€โ”€ index-patterns/
โ”‚       โ”‚   โ””โ”€โ”€ pitterpetter-logs.json
โ”‚       โ””โ”€โ”€ visualizations/
โ”œโ”€โ”€ scripts/
โ”‚   โ”œโ”€โ”€ deploy.sh               # ์ž๋™ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ
โ”‚   โ””โ”€โ”€ cleanup.sh
โ””โ”€โ”€ docs/
    โ””โ”€โ”€ monitoring-guide.md

๐Ÿ”ง ํ™˜๊ฒฝ๋ณ„ ์„ค์ •

๊ฐœ๋ฐœํ™˜๊ฒฝ (dev.tfvars)

  • ํ”„๋กœ์ ํŠธ: pitterpetter
  • ํด๋Ÿฌ์Šคํ„ฐ: pitterpetter-dev-cluster
  • ๋„๋ฉ”์ธ: kibana.loventure.us
  • ๋…ธ๋“œํ’€: pitterpetter-nodes
  • ๋ฆฌ์†Œ์Šค: ์ž‘์€ ํฌ๊ธฐ (CPU 500m, Memory 1Gi)

์šด์˜ํ™˜๊ฒฝ (prod.tfvars)

  • ํ”„๋กœ์ ํŠธ: pitterpetter-2
  • ํด๋Ÿฌ์Šคํ„ฐ: pitterpetter-prod-cluster
  • ๋„๋ฉ”์ธ: kibana-prod.loventure.us
  • ๋…ธ๋“œํ’€: pitterpetter-pro-nodes
  • ๋ฆฌ์†Œ์Šค: ํฐ ํฌ๊ธฐ (CPU 1000m, Memory 2Gi)

๐Ÿ”ง ์ฃผ์š” ์„ค์ •

ELK Stack ์„ค์ •

Elasticsearch

  • ํด๋Ÿฌ์Šคํ„ฐ ํƒ€์ž…: ๋‹ค์ค‘ ๋…ธ๋“œ (2๊ฐœ ๋ณต์ œ๋ณธ)
  • ๋ฒ„์ „: 7.17.3
  • ๋ณด์•ˆ: X-Pack Security ๋น„ํ™œ์„ฑํ™” (๊ฐœ๋ฐœ์šฉ)
  • ์Šคํ† ๋ฆฌ์ง€: ํ™˜๊ฒฝ๋ณ„ ํฌ๊ธฐ ์กฐ์ •
  • ์ธ๋ฑ์Šค: loventure-logs-* ํŒจํ„ด

Logstash

  • ํŒŒ์ดํ”„๋ผ์ธ: Spring Boot, FastAPI, PostgreSQL ๋กœ๊ทธ ํŒŒ์‹ฑ
  • ํ…œํ”Œ๋ฆฟ: ์ปค์Šคํ…€ ์ธ๋ฑ์Šค ํ…œํ”Œ๋ฆฟ (loventure-logs)
  • ํฌํŠธ: 5044 (Beats), 9600 (HTTP)
  • Grok ํŒจํ„ด: ์„œ๋น„์Šค๋ณ„ ๋กœ๊ทธ ํ˜•์‹ ์ž๋™ ํŒŒ์‹ฑ

Kibana

  • ์ธ๋ฑ์Šค ํŒจํ„ด: loventure-logs-*
  • ๋Œ€์‹œ๋ณด๋“œ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์ธํ”„๋ผ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ๋„๋ฉ”์ธ: ํ™˜๊ฒฝ๋ณ„ ๋„๋ฉ”์ธ ์„ค์ •
  • CORS: loventure.us ๋„๋ฉ”์ธ ํ—ˆ์šฉ

Filebeat

  • ๋กœ๊ทธ ์ˆ˜์ง‘: Kubernetes Pod ๋กœ๊ทธ
  • ์ถœ๋ ฅ: Logstash (5044 ํฌํŠธ)
  • DaemonSet: ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์‹คํ–‰
  • ์ปค๋ฒ„๋ฆฌ์ง€: 100% (๋ชจ๋“  loventure-prod-* ์ปจํ…Œ์ด๋„ˆ)

GMP (Google Cloud Monitoring) ์„ค์ •

GMP Collectors

  • ๋ฐฐํฌ ๋ฐฉ์‹: DaemonSet (5๊ฐœ ๋…ธ๋“œ์—์„œ ์‹คํ–‰)
  • ์ˆ˜์ง‘ ์ฃผ๊ธฐ: 15์ดˆ ๊ฐ„๊ฒฉ
  • ๋ฉ”ํŠธ๋ฆญ ํƒ€์ž…: CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ, ๋””์Šคํฌ I/O
  • ์ „์†ก ์ง€์—ฐ: ์ˆ˜์ง‘ ํ›„ 1๋ถ„ ์ด๋‚ด Google Cloud Monitoring ์ „์†ก

์ˆ˜์ง‘๋˜๋Š” ๋ฉ”ํŠธ๋ฆญ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”ํŠธ๋ฆญ: Pod๋ณ„ CPU/๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
  • Kubernetes ๋ฉ”ํŠธ๋ฆญ: Pod, Node, Service ์ƒํƒœ
  • ์ธํ”„๋ผ ๋ฉ”ํŠธ๋ฆญ: ๋…ธ๋“œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰
  • ์ปค์Šคํ…€ ๋ฉ”ํŠธ๋ฆญ: ๋น„์ฆˆ๋‹ˆ์Šค ์ง€ํ‘œ (์š”์ฒญ ์ˆ˜, ์‘๋‹ต ์‹œ๊ฐ„ ๋“ฑ)

๐Ÿ“Š ๋ชจ๋‹ˆํ„ฐ๋ง

์ ‘์† ์ •๋ณด

๊ฐœ๋ฐœํ™˜๊ฒฝ

์šด์˜ํ™˜๊ฒฝ

๋กœ๊ทธ ์ˆ˜์ง‘ ํ˜„ํ™ฉ

์ˆ˜์ง‘๋œ ๋กœ๊ทธ ํ†ต๊ณ„ (2025-10-18 ๊ธฐ์ค€)

  • ์ด ์ธ๋ฑ์Šค ์ˆ˜: 9๊ฐœ
  • ์ฃผ์š” ์ธ๋ฑ์Šค:
    • loventure-logs-2025.10.14: 12,967๊ฐœ ๋ฌธ์„œ (5.1MB)
    • loventure-logs-2025.10.15: 67,030๊ฐœ ๋ฌธ์„œ (38.5MB)
    • loventure-logs-2025.10.18: 115,273๊ฐœ ๋ฌธ์„œ (76.2MB)

๋กœ๊ทธ ํƒ€์ž…

  • Spring Boot: auth-service, content-service, course-service
  • FastAPI: ai-service
  • PostgreSQL: ๋ฉ”์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • Kubernetes Events: Pod ์ƒํƒœ, ์Šค์ผ€์ค„๋ง, ์ด๋ฏธ์ง€ ํ’€

๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ํ˜„ํ™ฉ

GMP ์„ฑ๋Šฅ ์ง€ํ‘œ

  • ์ˆ˜์ง‘๋ฅ : 100% (๋ชจ๋“  Pod ๋ฐ ๋…ธ๋“œ ์ปค๋ฒ„)
  • ์ˆ˜์ง‘ ์ฃผ๊ธฐ: 15์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ 1,000+ ๋ฉ”ํŠธ๋ฆญ ํฌ์ธํŠธ ์ˆ˜์ง‘
  • ์ „์†ก ์ง€์—ฐ: ์ˆ˜์ง‘ ํ›„ 1๋ถ„ ์ด๋‚ด Google Cloud Monitoring ์ „์†ก
  • ๋ฐ์ดํ„ฐ ์†์‹ค๋ฅ : 0% (GMP์˜ ์•ˆ์ •์ ์ธ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๋ณด์žฅ)

์ˆ˜์ง‘๋˜๋Š” ๋ฉ”ํŠธ๋ฆญ ํƒ€์ž…

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”ํŠธ๋ฆญ: CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ๋Ÿ‰
  • Kubernetes ๋ฉ”ํŠธ๋ฆญ: Pod, Node, Service ์ƒํƒœ
  • ์ธํ”„๋ผ ๋ฉ”ํŠธ๋ฆญ: ๋…ธ๋“œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋ฉ”ํŠธ๋ฆญ: ์‚ฌ์šฉ์ž ์š”์ฒญ ์ˆ˜, ์‘๋‹ต ์‹œ๊ฐ„, ์—๋Ÿฌ์œจ

๐Ÿ› ๏ธ ์œ ์ง€๋ณด์ˆ˜

์ƒํƒœ ํ™•์ธ

# ์ „์ฒด ELK ์Šคํƒ ์ƒํƒœ ํ™•์ธ
kubectl get pods -n monitoring

# ๊ฐ ์ปดํฌ๋„ŒํŠธ ๋กœ๊ทธ ํ™•์ธ
kubectl logs -f statefulset/loventure-elk-master -n monitoring
kubectl logs -f deployment/logstash-logstash -n monitoring
kubectl logs -f deployment/kibana-kibana -n monitoring
kubectl logs -f daemonset/filebeat -n monitoring

์—…๊ทธ๋ ˆ์ด๋“œ

# Terraform์„ ํ†ตํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ
cd terraform
terraform plan -var-file="dev.tfvars"  # ๋˜๋Š” prod.tfvars
terraform apply -var-file="dev.tfvars"

์‚ญ์ œ

# Terraform์„ ํ†ตํ•œ ์‚ญ์ œ
cd terraform
terraform destroy -var-file="dev.tfvars"  # ๋˜๋Š” prod.tfvars

๐Ÿ” ๋ฌธ์ œ ํ•ด๊ฒฐ

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋“ค

1. Pod๊ฐ€ Pending ์ƒํƒœ

# Pod ์ƒํƒœ ํ™•์ธ
kubectl describe pod <pod-name> -n monitoring

# ์ผ๋ฐ˜์ ์ธ ์›์ธ: ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ, StorageClass ๋ฌธ์ œ, ๋…ธ๋“œ ์Šค์ผ€์ค„๋ง ์ด์Šˆ
kubectl get events -n monitoring --sort-by='.lastTimestamp'

2. StorageClass ๋ฌธ์ œ

# StorageClass ํ™•์ธ
kubectl get storageclass

# PVC ์ƒํƒœ ํ™•์ธ
kubectl get pvc -n monitoring

# ์ผ๋ฐ˜์ ์ธ ํ•ด๊ฒฐ์ฑ…: GKE์—์„œ standard-rwo StorageClass ์‚ฌ์šฉ

3. ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ

# ๋…ธ๋“œ ๋ฆฌ์†Œ์Šค ํ™•์ธ
kubectl top nodes

# Pod ๋ฆฌ์†Œ์Šค ํ™•์ธ
kubectl top pods -n monitoring

# ๋ฆฌ์†Œ์Šค ํ• ๋‹น๋Ÿ‰ ํ™•์ธ
kubectl describe quota -n monitoring

4. ๋กœ๊ทธ ์ˆ˜์ง‘ ๋ฌธ์ œ

# Filebeat ์ƒํƒœ ํ™•์ธ
kubectl logs -f daemonset/filebeat -n monitoring

# Logstash ํŒŒ์ดํ”„๋ผ์ธ ์ƒํƒœ ํ™•์ธ
kubectl logs -f deployment/logstash-logstash -n monitoring

# Elasticsearch ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ ํ™•์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_cluster/health

5. GMP ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ๋ฌธ์ œ

# GMP Collector ์ƒํƒœ ํ™•์ธ
kubectl logs -f daemonset/collector -n gmp-system

# GMP Operator ์ƒํƒœ ํ™•์ธ
kubectl logs -f deployment/gmp-operator -n gmp-system

# Google Cloud Monitoring ์—ฐ๊ฒฐ ํ™•์ธ
kubectl exec -it deployment/gmp-operator -n gmp-system -- curl -H "Authorization: Bearer $(cat /var/secrets/google/key.json | jq -r .private_key)" https://monitoring.googleapis.com/v1/projects/pitterpetter/monitoredResources

๋กœ๊ทธ ๋ถ„์„

# ์ด๋ฒคํŠธ ํ™•์ธ
kubectl get events -n monitoring --sort-by='.lastTimestamp'

# Pod ์ƒ์„ธ ์ •๋ณด
kubectl describe pod <pod-name> -n monitoring

# ์„œ๋น„์Šค ์—ฐ๊ฒฐ ํ™•์ธ
kubectl get svc -n monitoring

# Ingress ์ƒํƒœ ํ™•์ธ
kubectl get ingress -n monitoring

์„ฑ๋Šฅ ๋ฌธ์ œ ํ•ด๊ฒฐ

1. Elasticsearch ์„ฑ๋Šฅ ์ด์Šˆ

# ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ ํ™•์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_cluster/health?pretty

# ์ธ๋ฑ์Šค ์ƒํƒœ ํ™•์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_cat/indices?v

# JVM ํž™ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ
kubectl exec -it statefulset/loventure-elk-master -n monitoring -- curl localhost:9200/_nodes/stats/jvm?pretty

2. Logstash ์ฒ˜๋ฆฌ ์ง€์—ฐ

# ํŒŒ์ดํ”„๋ผ์ธ ์ƒํƒœ ํ™•์ธ
kubectl exec -it deployment/logstash-logstash -n monitoring -- curl localhost:9600/_node/stats/pipelines?pretty

# ํ ์ƒํƒœ ํ™•์ธ
kubectl exec -it deployment/logstash-logstash -n monitoring -- curl localhost:9600/_node/stats/pipelines?pretty | jq '.pipelines.main.queue'

3. Kibana ์ ‘์† ๋ฌธ์ œ

# Kibana ์ƒํƒœ ํ™•์ธ
kubectl logs -f deployment/kibana-kibana -n monitoring

# Elasticsearch ์—ฐ๊ฒฐ ํ™•์ธ
kubectl exec -it deployment/kibana-kibana -n monitoring -- curl localhost:5601/api/status

๐Ÿš€ ์„ฑ๋Šฅ ์ตœ์ ํ™”

์šด์˜ ์„ฑ๊ณผ (2025-10-18 ๊ธฐ์ค€)

๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ์„ฑ๊ณผ

  • ๋กœ๊ทธ ์ˆ˜์ง‘๋ฅ : 100% (๋ชจ๋“  loventure-prod-* ์ปจํ…Œ์ด๋„ˆ ์ปค๋ฒ„)
  • ์ผ์ผ ์ฒ˜๋ฆฌ๋Ÿ‰: ํ‰๊ท  50,000+ ๋กœ๊ทธ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
  • ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ: 1์ดˆ ์ด๋‚ด ๋กœ๊ทธ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ œ๊ณต
  • ๋ฐ์ดํ„ฐ ๋ณด์กด: 6๊ฐœ์›”๊ฐ„ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ ๋ณด์กด

๋ฉ”ํŠธ๋ฆญ ๋ชจ๋‹ˆํ„ฐ๋ง ์„ฑ๊ณผ

  • ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘๋ฅ : 100% (๋ชจ๋“  Pod ๋ฐ ๋…ธ๋“œ ์ปค๋ฒ„)
  • ์ˆ˜์ง‘ ์ฃผ๊ธฐ: 15์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ 1,000+ ๋ฉ”ํŠธ๋ฆญ ํฌ์ธํŠธ ์ˆ˜์ง‘
  • ์ „์†ก ์ง€์—ฐ: ์ˆ˜์ง‘ ํ›„ 1๋ถ„ ์ด๋‚ด Google Cloud Monitoring ์ „์†ก
  • ์•Œ๋ฆผ ์ •ํ™•๋„: 99.5% ์ •ํ™•ํ•œ ์•Œ๋ฆผ ๋ฐœ์†ก

์šด์˜ ํšจ์œจ์„ฑ ์„ฑ๊ณผ

  • ๋ฌธ์ œ ์ง„๋‹จ ์‹œ๊ฐ„: 90% ๋‹จ์ถ• (2-3์‹œ๊ฐ„ โ†’ 15-20๋ถ„)
  • ์žฅ์•  ๋ณต๊ตฌ ์‹œ๊ฐ„: 70% ๋‹จ์ถ• (ํ‰๊ท  30๋ถ„ โ†’ 9๋ถ„)
  • ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋ฅ : 25% ๊ฐœ์„  (CPU/๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”)
  • ๊ฐœ๋ฐœํŒ€ ์ƒ์‚ฐ์„ฑ: 40% ํ–ฅ์ƒ (๋””๋ฒ„๊น… ์‹œ๊ฐ„ ๋‹จ์ถ•)

๋ฆฌ์†Œ์Šค ํŠœ๋‹

  • Elasticsearch: JVM ํž™ ํฌ๊ธฐ ์กฐ์ • (ES_JAVA_OPTS)
  • Logstash: ํŒŒ์ดํ”„๋ผ์ธ ์›Œ์ปค ์ˆ˜ ์กฐ์ • (pipeline.workers)
  • Filebeat: ๋ฐฐ์น˜ ํฌ๊ธฐ ์กฐ์ •
  • GMP: ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘ ์ฃผ๊ธฐ ๋ฐ ํ•„ํ„ฐ๋ง ์ตœ์ ํ™”

์Šคํ† ๋ฆฌ์ง€ ์ตœ์ ํ™”

  • ์ธ๋ฑ์Šค ๋ผ์ดํ”„์‚ฌ์ดํด ๊ด€๋ฆฌ: ILM ์ •์ฑ… ์„ค์ •
  • ๋กœ๊ทธ ๋ณด์กด ๊ธฐ๊ฐ„: 30์ผ ๊ธฐ๋ณธ ์„ค์ •
  • ์••์ถ•: index.codec: best_compression ์‚ฌ์šฉ
  • ๋ฉ”ํŠธ๋ฆญ ๋ณด์กด: 6๊ฐœ์›”๊ฐ„ ๋ฉ”ํŠธ๋ฆญ ๋ฐ์ดํ„ฐ ๋ณด์กด

๐Ÿš€ ํ–ฅํ›„ ๋ฐœ์ „ ๊ณ„ํš

๋‹จ๊ธฐ ๊ณ„ํš (1-3๊ฐœ์›”)

  • ๋กœ๊ทธ ํŒŒ์‹ฑ ์ •ํ™•๋„ ๊ฐœ์„ : ํ˜„์žฌ 95% โ†’ 99% ๋ชฉํ‘œ
  • ์ปค์Šคํ…€ ๋Œ€์‹œ๋ณด๋“œ ๊ฐœ๋ฐœ: ๋น„์ฆˆ๋‹ˆ์Šค ์ง€ํ‘œ ์ค‘์‹ฌ์˜ ๋Œ€์‹œ๋ณด๋“œ 5๊ฐœ ์ถ”๊ฐ€
  • ์•Œ๋ฆผ ๊ทœ์น™ ์„ธ๋ถ„ํ™”: ์„œ๋น„์Šค๋ณ„, ์‹ฌ๊ฐ๋„๋ณ„ ์ฐจ๋ณ„ํ™”๋œ ์•Œ๋ฆผ ์ •์ฑ… ์ˆ˜๋ฆฝ
  • ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€์ด๋“œ ์ž‘์„ฑ: ๊ฐœ๋ฐœํŒ€์„ ์œ„ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ์‚ฌ์šฉ ๊ฐ€์ด๋“œ ์ œ๊ณต

์ค‘๊ธฐ ๊ณ„ํš (3-6๊ฐœ์›”)

  • APM ๋„์ž…: Application Performance Monitoring์œผ๋กœ ์ƒ์„ธ ์„ฑ๋Šฅ ๋ถ„์„
  • ๋ณด์•ˆ ๊ฐ•ํ™”: X-Pack Security ํ™œ์„ฑํ™” ๋ฐ ๋‹ค๋‹จ๊ณ„ ์ธ์ฆ ๊ตฌํ˜„
  • ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ์ง€์›: ๊ฐœ๋ฐœ/์Šคํ…Œ์ด์ง•/์šด์˜ ํ™˜๊ฒฝ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง
  • CI/CD ํ†ตํ•ฉ: ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์ž๋™ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

์žฅ๊ธฐ ๊ณ„ํš (6-12๊ฐœ์›”)

  • ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์ด์ƒ ํƒ์ง€: Elasticsearch ML ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•œ ์ž๋™ ์ด์ƒ ํƒ์ง€
  • ์˜ˆ์ธก ๋ถ„์„: ๋ฉ”ํŠธ๋ฆญ ํŠธ๋ Œ๋“œ ๋ถ„์„์„ ํ†ตํ•œ ์„œ๋น„์Šค ์žฅ์•  ์˜ˆ์ธก
  • ์ž๋™ ๋ณต๊ตฌ: ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ž๋™ ๋ณต๊ตฌ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
  • ๋น„์šฉ ์ตœ์ ํ™”: AI ๊ธฐ๋ฐ˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ ์˜ˆ์ธก ๋ฐ ์ž๋™ ์Šค์ผ€์ผ๋ง

About

PitterPetter_Monitoring management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published