์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ณ ์ฌ์ฉํ๋ฉด์ ๋ชจ๋ํฐ๋ง์ ์ค์ํ ์์ ์ค ํ๋์ด๋ค.
CPU, Memory, ๋์คํฌ ๋ฑ ๋ฆฌ์์ค ์ฌ์ฉ๋, ๋คํธ์ํฌ ์ํ ๋ฑ ์๋น์ค์ ์ ์ฒด์ ์ธ ์ํ ํ์ธ, ๋ถ์, ์ฅ์ ํ์
๋ฑ์ด ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉํ๋ ์ด์ ์ด๋ค.
์ด๋ฒ 5์ฃผ์ฐจ ์คํฐ๋์์๋ ์ฟ ๋ฒ๋คํฐ์ค์ ๊ธฐ๋ณธ ๋ชจ๋ํฐ๋ง ๋ฐ ํ์ค์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋ ํ๋ก๋ฉํ ์ฐ์ค, ์๊ฐํ ๋๊ตฌ์ธ ๊ทธ๋ผํ๋์ ๋ํด์ ํ์ต ํ ๊ณํ์ด๋ค.
๋ณ๋์ metric-server Pod๋ฅผ ์ค์นํ์ฌ ํด๋น ์๋ฒ๊ฐ cAdvisor๋ฅผ ํตํด ์์ง๋๋ Pod์ ๋ฆฌ์์ค metric์ ์์ง
ํ์ฌ ์คํฐ๋์์ ์ฌ์ฉํ๋ kops์ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ์ metric ์๋ฒ๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์์
kops edit cluster
-----
spec:
certManager:
enabled: true
awsLoadBalancerController:
enabled: true
externalDns:
provider: external-dns
#[๋ฉํธ๋ฆญ ์๋ฒ ๊ด๋ จ ๋ด์ฉ]
metricsServer:
enabled: true
kubeProxy:
metricsBindAddress: 0.0.0.0
-----
kubectl top nodes, kubectl top pods
kubectl krew install df-pv
hele์ ์ด์ฉํ์ฌ ํ๋ก๋ฉํ ์ฐ์ค-์คํ ์ค์น
# ๋ค์์คํ์ด์ค ์์ฑ
kubectl create ns monitoring
# ์ฌ์ฉ ๋ฆฌ์ ์ ์ธ์ฆ์ ARN ํ์ธ
CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`
echo "alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN"
# ํฌ๋ฆ ํ๋ก๋ฉํ
์ฐ์ค ์ ์ฅ๋ ์ถ๊ฐ
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# ์ธ์ฆ์ ์ ๋ณด ๋ฐ ํด๋ฌ์คํฐ๋ช
์ ๋ณ์๋ก ์ง์ ํ์ฌ ์ ์ฅ
cat <<EOT > ~/monitor-values.yaml
alertmanager:
ingress:
enabled: true
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
alb.ingress.kubernetes.io/success-codes: 200-399
alb.ingress.kubernetes.io/group.name: "monitoring"
hosts:
- alertmanager.$KOPS_CLUSTER_NAME
paths:
- /*
grafana:
defaultDashboardsTimezone: Asia/Seoul
adminPassword: prom-operator
ingress:
enabled: true
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
alb.ingress.kubernetes.io/success-codes: 200-399
alb.ingress.kubernetes.io/group.name: "monitoring"
hosts:
- grafana.$KOPS_CLUSTER_NAME
paths:
- /*
prometheus:
ingress:
enabled: true
ingressClassName: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
alb.ingress.kubernetes.io/certificate-arn: $CERT_ARN
alb.ingress.kubernetes.io/success-codes: 200-399
alb.ingress.kubernetes.io/group.name: "monitoring"
hosts:
- prometheus.$KOPS_CLUSTER_NAME
paths:
- /*
prometheusSpec:
serviceMonitorSelectorNilUsesHelmValues: false
retention: 5d
retentionSize: "10GiB"
EOT
# ๋ฐฐํฌ
helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack --version 45.0.0 -f monitor-values.yaml --namespace monitoring
ํฌ๋ฆ ์ฐจํธ ๋ฐฐํฌ ํ LB ๊ตฌ์ฑ์ด ์๋ฃ๋๋ฉด, ๋๋ฌด ๊ฐํธํ๊ฒ ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋, ์ผ๋ฟ๋งค๋์ ๋ฅผ ๋ฐ๋ก ์ฌ์ฉ ํ ์ ์๋ค.(๊ฐ๊ฟ๐)
ํ๋ก๋ฉํ ์ฐ์ค ์นํ์ด์ง์์ ์์งํ metric์ ๋ํ์ฌ ํ์ธ ๋ฐ ์ค์ ์ด ๊ฐ๋ฅํ์ง๋ง, ๋ณด๋ค ์ข์ ์๊ฐํ๋ฅผ ์ ๊ณตํ๋ ๊ทธ๋ผํ๋๋ฅผ ํตํด metirc ํ์ธ!
๋ํ ๋ค์ํ ๊ณต์ dashboard๋ฅผ ์ ์ฉํ์ฌ ํจ์จ์ ์ด๊ณ ์ด๋ฟ ๋ชจ๋ํฐ๋ง dashboard๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๊ณผ์ 1. ๊ทธ๋ผํ๋์ ์ฌ๋ฌ ๋์ฌ๋ณด๋๋ฅผ ์ถ๊ฐํด๋ณด์!
๊ณผ์ 2. Nginx ์น ํ๋ ๋ฐฐํฌ ํ ๊ด๋ จ metric ๋ฅผ ํ๋ก๋ฉํ ์ฐ์ค ์น์์ ํ์ธ, ๊ทธ๋ผํ๋์ nginx ์น์๋ฒ ๋์๋ณด๋๋ฅผ ์ถ๊ฐ
์ด๋ฒ ์คํฐ๋์์๋ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ ๊ธฐ๋ณธ ๋ชจ๋ํฐ๋ง ๋๊ตฌ ๋ฐ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ํ๋ก๋ฉํ
์ฐ์ค๋ฅผ ํ์ตํ์๋ค.
ํ๋ก๋ฉํ
์ฐ์ค๋ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ผํ๋, ์ผ๋ฟ๋งค๋์ ์ ์ฐ๋ํ์ฌ ์๊ฐํ, ์๋ ๋ฑ์ ํธํ๊ฒ ์ค์ ๋ฐ ๊ตฌ์ฑํ ์ ์๋ค.
๋ํ ํ๋ก๋ฉํ
์ฐ์ค-์คํ์ ์ค์นํ๋ฉด์ ํ๋ฒ์ ๋ชจ๋ ๊ตฌ์ฑ์ ํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์๋ค.
๋ค์ ์๊ฐ์๋ ์ผ๋ฟ๋งค๋์ ๋ฐ ๋ก๊น
์์คํ
์ ๋ํด์ ํ์ต ํ ๊ณํ์ด๋ค.