PLG 스택 설치

DevOps Engineer·2023년 10월 10일
0

PLG 설치한 이유

사내의 기존 시스템에서 filebeat kibana Elasticsearch를 사용하고 있었는데 외주로 인해 제대로 된 설치에 대한 가이드 부족 및 무료 라이센스 Alert 미지원으로 Error 로그에 대한 모니터링이 제대로 이루어 지지 않아 Grafana와 연동하여 사용할 수 있는 Promtail과 Loki를 통해 로그를 수집하는 방식으로 변경함

온프레미스 환경에서 local-storage에 로그가 저장되도록 설정함

Promtail & Loki 설치

Loki-values.yaml

replicas: 5  #고가용성을 위한 Loki server 
persistence:
  enabled: true
  storageClassName: local-storage #StorageClass로 PVC 설정
serviceMonitor:
  enabled: true	#prometheus에서도 Promql로 조회가능하도록 servicemonitor resource 생성
affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
            - key: app
              operator: In
              values:
                - loki
        topologyKey: "kubernetes.io/hostname"
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - kwall7
                - kwall4
                - kwall5
                - kwall6
                - kwall8

PV 경로 폴더 만들기

mkdir -p /opt/loki
sudo chown 10001:10001 loki
  • Helm chart 내 default 값 확인

*10001 으로 지정한 이유*

Loki-pv, pvc yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: loki-pv-0
  namespace: loki
  labels:
    type: local-storage
    app: loki
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  hostPath:
    path: /opt/loki
    type: DirectoryOrCreate
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - kwall8
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    helm.sh/resource-policy: keep
  labels:
    app: loki
  name: storage-loki-0
  namespace: loki
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeMode: Filesystem
  volumeName: loki-pv-2
kubectl create ns loki
kubectl apply -f pv.yaml -f pvc.yaml -n loki
helm repo add grafana https://grafana.github.io/helm-charts
helm install loki grafana/loki —version 2.16.0 –f loki-values.yaml –n loki

#로키 확인
kubectl get all -n loki

Promtail-values.yaml

serviceMonitor:
  enabled: true
config:
  serverPort: 3101
  clients:
    - url: http://loki-headless:3100/loki/api/v1/push


helm install promtail grafana/promtail --version 6.0.0 -f promtail-values.yaml  -n loki

datasource 등록하기

profile
madame의 Techblog

0개의 댓글