Search

Loki

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 클릭
작동 확인