āĻ“āĻĒā§‡āĻ¨āĻļāĻŋāĻĢāĻŸā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž

āĻļā§āĻ­ āĻĻāĻŋāĻ¨, āĻšāĻžāĻŦāĻ°ā§‡āĻ° āĻŦāĻžāĻ¸āĻŋāĻ¨ā§āĻĻāĻž!

āĻ†āĻœ āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻāĻŦāĻ‚ āĻ“āĻĒā§‡āĻ¨āĻļāĻŋāĻĢā§āĻŸ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻ¤ā§āĻ¤ā§āĻŦāĻž āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻĒā§āĻ°āĻŦā§‡āĻļāĻĻā§āĻŦāĻžāĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ›āĻŋāĻ˛:

  • OpenShift
  • āĻšāĻžāĻ˛
  • āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻ‰āĻ¸


āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻ­āĻž āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ›āĻŋāĻ˛ āĻŦā§‡āĻļ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻšā§āĻ›, āĻŦāĻž āĻ†āĻ°āĻ“ āĻ¸ā§āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻšāĻ¤ā§‡:

1) build.gradle āĻ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž

 implementation "io.micrometer:micrometer-registry-prometheus"

2) āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻš āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻ‰āĻ¸ āĻšāĻžāĻ˛āĻžāĻ¨

 - job_name: 'job-name'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    kubernetes_sd_configs:
    - role: pod
      namespaces:
        names: 
          - 'name'

3) Grafana āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨ā§‡āĻŽāĻ¸ā§āĻĒā§‡āĻ¸ā§‡ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ˜āĻžāĻāĻŸāĻŋāĻ—ā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻžāĻ° āĻŽā§āĻšā§‚āĻ°ā§āĻ¤ āĻ¨āĻž āĻ†āĻ¸āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§āĻ‡ āĻŦā§‡āĻļ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ…āĻĒā§āĻ°ā§€āĻ¤āĻŋāĻ•āĻ° āĻ›āĻŋāĻ˛ (āĻšā§āĻ¯āĻžāĻ, āĻāĻŸāĻŋ āĻ–āĻžāĻ°āĻžāĻĒ, āĻ•ā§‡āĻ‰ āĻāĻŸāĻŋ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻ˜āĻŸā§‡)āĨ¤

āĻāĻŸāĻž āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻ‰āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻĄ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻ°āĻ“ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ¤ā§āĻ¤āĻž āĻĻāĻ°āĻ•āĻžāĻ° - āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋāĻ•āĻžāĻ°āĻ•āĨ¤

āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŽā§‚āĻ°ā§āĻ¤ āĻ§āĻžāĻ°āĻŖāĻžāĻ° āĻāĻ•āĻœāĻ¨ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋāĻ•āĻžāĻ°āĻ• āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻāĻœā§‡āĻ¨ā§āĻŸ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻŦāĻž āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻŽā§‡āĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°ā§‡āĨ¤ āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻāĻ•ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻŸāĻŋ Go-āĻ¤ā§‡ āĻ˛ā§‡āĻ–āĻž āĻ†āĻ›ā§‡, āĻāĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ SQL āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¨ā§€āĻ¤āĻŋāĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻ‰āĻ¸ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¨ā§‡āĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡ āĻ¸āĻ‚āĻ—ā§ƒāĻšā§€āĻ¤ āĻŽā§‡āĻŸā§āĻ°āĻŋāĻ•āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋāĻ•ā§‡ āĻāĻ­āĻžāĻŦā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻŋ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ deployment.yaml, āĻ¨āĻ¨-āĻŦāĻžāĻ‡āĻ¨ā§āĻĄāĻŋāĻ‚):


---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: postgres-exporter
  labels:
    app: {{ .Values.name }}
    monitoring: prometheus
spec:
  serviceName: {{ .Values.name }}
  replicas: 1
  revisionHistoryLimit: 5
  template:
    metadata:
      labels:
        app: postgres-exporter
        monitoring: prometheus
    spec:
      containers:
      - env:
        - name: DATA_SOURCE_URI
          value: postgresdb:5432/pstgr?sslmode=disable
        - name: DATA_SOURCE_USER
          value: postgres
        - name: DATA_SOURCE_PASS
          value: postgres
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
          requests:
            cpu: 100m
            memory: 50Mi
        livenessProbe:
          tcpSocket:
            port: metrics
          initialDelaySeconds: 30
          periodSeconds: 30
        readinessProbe:
          tcpSocket:
            port: metrics
          initialDelaySeconds: 10
          periodSeconds: 30
        image: exporter
        name: postgres-exporter
        ports:
        - containerPort: 9187
          name: metrics

āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻāĻŦāĻ‚ āĻ‡āĻŽā§‡āĻœāĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨

āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻ¸āĻŦāĻžāĻ‡ āĻāĻ•ā§‡ āĻ…āĻĒāĻ°āĻ•ā§‡ āĻĻā§‡āĻ–ā§āĻ•āĨ¤

āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻ‰āĻ¸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ…āĻ‚āĻļ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨:

  - job_name: 'postgres_exporter'
    metrics_path: '/metrics'
    scrape_interval: 5s
    dns_sd_configs:
    - names:
      - 'postgres-exporter'
      type: 'A'
      port: 9187

āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻŦāĻžāĻ•āĻŋ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻšāĻ˛ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻ—ā§āĻ°āĻžāĻĢāĻ¨āĻžāĻ¯āĻŧ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻŸāĻŋ āĻ‰āĻĒāĻ­ā§‹āĻ— āĻ•āĻ°āĻžāĨ¤

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻ‰āĻ¸ā§‡āĻ° āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ†āĻ°āĻ“ āĻ˛āĻ•ā§āĻˇā§āĻ¯āĻ¯ā§āĻ•ā§āĻ¤ āĻŽā§‡āĻŸā§āĻ°āĻŋāĻ•ā§āĻ¸ āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

āĻāĻŸāĻŋ āĻāĻ•āĻ‡āĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻ° āĻœāĻ¨ā§āĻ¯:

  • āĻ•āĻžāĻĢāĻ•āĻž
  • Elasticsearch
  • āĻŽā§‹āĻ™ā§āĻ—ā§‹

PS āĻ¨āĻžāĻŽ, āĻŦāĻ¨ā§āĻĻāĻ° āĻāĻŦāĻ‚ āĻŦāĻžāĻ•āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻ¯āĻŧā§ āĻĨā§‡āĻ•ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻ¤ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ¤āĻĨā§āĻ¯ āĻ¨ā§‡āĻ‡āĨ¤

āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋ:
āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ°āĻĒā§āĻ¤āĻžāĻ¨āĻŋāĻ•āĻžāĻ°āĻ•āĻĻā§‡āĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨