حظا موفقا للجميع.
لم أجد دليلاً عامًا عبر الإنترنت حول تسجيل وجمع المقاييس من خدمات الجهات الخارجية في الأنظمة المنشورة فيها
تسجيل
تستخدم العديد من الشركات مجموعة من التقنيات لجمع السجلات وعرضها ومركزيتها
value.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"
...
لمزيد من الوضوح، سنكتب أسماء الخدمات ذات الحالة الخارجية باستخدام نقاط النهاية.
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 }}
يتم تكوين Prometheus لتلقي بيانات postgres_exporter عن طريق تحرير القيم في المخطط الفرعي.
value.yaml
scrape_configs:
...
- job_name: postgres-exporter
static_configs:
- targets:
- postgres-exporter.applicationnamespace.svc.cluster.local:9187
labels:
alias: postgres
...
لتصور البيانات المستلمة، قم بتثبيت لوحة المعلومات المناسبة فيها
ما يبدو عليه
آمل أن تساعدك هذه المقالة القصيرة على فهم الأفكار الرئيسية وراء هذا الحل وتوفير وقتك عند إعداد مراقبة وتسجيل الخدمات الخارجية لـ Loki/Prometheus في مجموعة Kubernetes.
المصدر: www.habr.com