Chúc mọi người may mắn.
Tôi chưa tìm thấy hướng dẫn tổng quát trực tuyến về cách ghi nhật ký và thu thập số liệu từ các dịch vụ của bên thứ ba vào các hệ thống được triển khai trong
ghi nhật ký
Nhiều công ty sử dụng nhiều công nghệ để thu thập, xem và tập trung nhật ký
giá trị.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"
Để gửi nhật ký đến một phiên bản
Bạn phải cài đặt tiện ích bổ sung này trên mọi thứ
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 }}"
...
nơi loki_url:
Số liệu
Số liệu được thu thập từ PostgreSQL bằng cách sử dụng
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"
...
Để rõ ràng hơn, chúng tôi sẽ viết tên của các dịch vụ có trạng thái bên ngoài bằng cách sử dụng Điểm cuối.
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 }}
Việc định cấu hình Prometheus để nhận dữ liệu postgres_exporter được thực hiện bằng cách chỉnh sửa các giá trị trong biểu đồ con.
giá trị.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
Để trực quan hóa dữ liệu đã nhận, hãy cài đặt Bảng điều khiển thích hợp trong
Nó trông như thế nào
Tôi hy vọng bài viết ngắn này đã giúp bạn hiểu được những ý tưởng chính đằng sau giải pháp này và giúp bạn tiết kiệm thời gian khi thiết lập giám sát và ghi nhật ký các dịch vụ bên ngoài cho Loki/Prometheus trong cụm Kubernetes.
Nguồn: www.habr.com