๋ชจ๋์๊ฒ ํ์ด์ ๋น๋๋ค.
ํ์ฌ ์๋น์ค์์ ๋ฐฐํฌ๋ ์์คํ
์ผ๋ก ๋ฉํธ๋ฆญ์ ๋ก๊น
ํ๊ณ ์์งํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ผ๋ฐํ๋ ๊ฐ์ด๋๋ฅผ ์จ๋ผ์ธ์์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
๋ฒ์ฑ ๋ฐ์ถ
๋ง์ ๊ธฐ์
์์๋ ๋ค์ํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ๋ฅผ ์์ง, ํ์ธ ๋ฐ ์ค์ํํฉ๋๋ค.
๊ฐ.yaml
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
hosts:
- host: kube-loki.example.domain
paths:
- /
tls: []
....
persistence:
type: pvc
enabled: true
accessModes:
- ReadWriteOnce
size: 100Gi
finalizers:
- kubernetes.io/pvc-protection
existingClaim: "pv-loki"
์ธ์คํด์ค์ ๋ก๊ทธ๋ฅผ ๋ณด๋ด๋ ค๋ฉด
๋ชจ๋ ๊ธฐ๊ธฐ์ ์ด ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ค์นํด์ผ ํฉ๋๋ค.
postgres.yaml
- name: Run containers
docker_compose:
project_name: main-postgres
definition:
version: '3.7'
services:
p:
image: "{{ postgres_version }}"
container_name: postgresql
restart: always
volumes:
- "{{ postgres_dir }}/data:/var/lib/postgresql/data"
- "{{ postgres_dir }}/postgres_init_scripts:/docker-entrypoint-initdb.d"
environment:
POSTGRES_PASSWORD: {{ postgres_pass }}
POSTGRES_USER: {{ postgres_user }}
ports:
- "{{ postgres_ip }}:{{ postgres_port }}:5432"
logging:
driver: "loki"
options:
loki-url: "{{ loki_url }}"
loki-batch-size: "{{ loki_batch_size }}"
loki-retries: "{{ loki_retries }}"
...
์ฌ๊ธฐ์ loki_url:
์ธก์ ํญ๋ชฉ
์งํ๋ ๋ค์์ ์ฌ์ฉํ์ฌ PostgreSQL์์ ์์ง๋ฉ๋๋ค.
postgres.yaml
...
pexp:
image: "wrouesnel/postgres_exporter"
container_name: pexporter
restart: unless-stopped
environment:
DATA_SOURCE_NAME: "postgresql://{{ postgres_user }}:{{ postgres_pass }}@p:5432/postgres?sslmode=disable"
ports:
- "{{ postgres_ip }}:{{ postgres_exporter_port }}:9187"
logging:
driver: "json-file"
options:
max-size: "5m"
...
๋ ๋ช ํํ๊ฒ ํ๊ธฐ ์ํด Endpoints๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ์ํ ์ ์ฅ ์๋น์ค์ ์ด๋ฆ์ ์์ฑํ๊ฒ ์ต๋๋ค.
postgres-service.yaml
apiVersion: v1
kind: Endpoints
metadata:
name: postgres-exporter
subsets:
- addresses:
- ip: {{ .Values.service.postgres.ip }}
ports:
- port: {{ .Values.service.postgres.port }}
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: postgres-exporter
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
spec:
ports:
- protocol: TCP
port: {{ .Values.service.postgres.port }}
targetPort: {{ .Values.service.postgres.port }}
postgres_exporter ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋๋ก Prometheus๋ฅผ ๊ตฌ์ฑํ๋ ์์ ์ ํ์ ์ฐจํธ์ ๊ฐ์ ํธ์งํ์ฌ ์ํ๋ฉ๋๋ค.
๊ฐ.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
์์ ๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๋ ค๋ฉด ์ ์ ํ ๋์๋ณด๋๋ฅผ ์ค์นํ์ญ์์ค.
์ด๋ป๊ฒ ๋ณด์ด๋์ง
์ด ์งง์ ๊ธฐ์ฌ๊ฐ ์ด ์๋ฃจ์
์ ๊ธฐ๋ณธ ์์ด๋์ด๋ฅผ ์ดํดํ๊ณ Kubernetes ํด๋ฌ์คํฐ์์ Loki/Prometheus์ ๋ํ ์ธ๋ถ ์๋น์ค์ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น
์ ์ค์ ํ ๋ ์๊ฐ์ ์ ์ฝํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ถ์ฒ : habr.com