ENV
EKS_CLUSTER_NAME="<CLUSTER_NAME>"
CLUSTER_OIDC=$(aws eks describe-cluster --name $EKS_CLUSTER_NAME --query "cluster.identity.oidc.issuer" --output text | cut -c 9-100)
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)
Shell
복사
Prometheus
Metrics Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl get deployment metrics-server -n kube-system
Shell
복사
Namespace
kubectl create ns monitoring
Shell
복사
Prometheus install by Helm
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm repo list
helm install prometheus prometheus-community/prometheus \
--namespace monitoring \
--set alertmanager.persistentVolume.storageClass="gp2" \
--set server.persistentVolume.storageClass="gp2" \
-f values.yaml
Shell
복사
kubectl get all -n monitoring
Shell
복사
EBS CSI Driver
OIDC
eksctl utils associate-iam-oidc-provider --region ap-northeast-2 --cluster $EKS_CLUSTER_NAME --approve
Shell
복사
IRSA
eksctl create iamserviceaccount \
--name ebs-csi-controller-sa \
--region ap-northeast-2 \
--namespace kube-system \
--cluster $EKS_CLUSTER_NAME \
--role-name AmazonEKS_EBS_CSI_DriverRole \
--role-only \
--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
--approve
Shell
복사
Create Addon
eksctl create addon --name aws-ebs-csi-driver --cluster $EKS_CLUSTER_NAME --service-account-role-arn arn:aws:iam::$AWS_ACCOUNT_ID:role/AmazonEKS_EBS_CSI_DriverRole
# eksctl delete addon --name aws-ebs-csi-driver --cluster $EKS_CLUSTER_NAME
eksctl get addon --name aws-ebs-csi-driver --cluster $EKS_CLUSTER_NAME
Shell
복사
Grafana
•
prometheus-source.yaml
datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus-server.monitoring.svc.cluster.local/prometheus
access: proxy
isDefault: true
YAML
복사
Grafana install by Helm
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana \
--namespace monitoring \
--set persistence.storageClassName="gp2" \
--set persistence.enabled=true \
--set adminPassword='admin1234' \
--values prometheus-source.yaml \
--set service.type=ClusterIP
Shell
복사
Loki
•
loki-stack-values.yaml
helm show values grafana/loki-stack > loki-stack-values.yaml
Shell
복사
test_pod:
image: bats/bats:v1.8.2
pullPolicy: IfNotPresent
loki:
enabled: true
isDefault: true
image:
repository: grafana/loki
tag: 2.9.3
pullPolicy: IfNotPresent
url: http://{{(include "loki.serviceName" .)}}:{{ .Values.loki.service.port }}
readinessProbe:
httpGet:
path: /ready
port: http-metrics
initialDelaySeconds: 45
livenessProbe:
httpGet:
path: /ready
port: http-metrics
initialDelaySeconds: 45
datasource:
jsonData: {}
uid: ""
promtail:
enabled: true
config:
logLevel: info
serverPort: 3101
clients:
- url: http://{{ .Release.Name }}:3100/loki/api/v1/push
YAML
복사
•
위와 같이 파일 코드 변경
Namespace
kubectl create ns loki
Shell
복사
Loki install by Helm
helm install loki-stack grafana/loki-stack --values loki-stack-values.yaml -n loki
Shell
복사
Check
kubectl -n loki get pods
Shell
복사
Grafana Web Setting
http://loki-stack.loki.svc.cluster.local:3100
Shell
복사
Connections > Data sources > Add data source > Loki 선택 후 위 URL입력 후 Save & Test
Dashboards > Create dashboard > Import dashboard 후 13639 대시보드 ID 입력 후 Load
방금 전에 만든 Loki 선택 후 import 클릭
작동 확인