Monitorando o postgres dentro do Openshift

Bom dia, residentes de Habr!

Hoje, quero dizer como realmente queremos monitorar o postgres e algumas entidades dentro do cluster OpenShift e como fizemos isso.

Na entrada, eles tinham:

  • Openshift
  • Elmo
  • Prometeu


Para trabalhar com um aplicativo java, tudo era bastante simples e transparente, e para ser mais preciso, então:

1) Adicionando ao build.gradle

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

2) Inicie o prometheus com configuração

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

3) Adicionando uma exibição no Grafana

Tudo era bastante simples e prosaico até a hora de monitorar as bases localizadas nas proximidades em nosso espaço para nome (sim, isso é ruim, ninguém faz, mas acontece de maneira diferente).

Como isso funciona?


Além da lareira com o postgres e o próprio prometheus, precisamos de outra entidade - exportadora.

Um exportador abstrato é um agente que coleta métricas de um aplicativo ou mesmo de um servidor. Para o postgres, o exportador é escrito em Go, funciona com o princípio de executar scripts baseados em sql inside e, em seguida, o prometheus obtém os resultados. Também permite expandir as métricas coletadas adicionando suas próprias.

Nós o implementamos desta forma (exemplo deployment.yaml, não vinculativo a nada):

 --- 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 

Ele também precisava de um serviço e um fluxo de imagens.

Após a implantação, realmente queremos que todos se vejam.

Adicione a seguinte peça à configuração do prometheus:

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

E então tudo funcionou, resta acrescentar toda essa bondade ao veado e aproveitar o resultado.

Além da capacidade de adicionar suas próprias consultas, no prometheus você pode alterar a configuração, coletando as métricas necessárias mais direcionadas.

Um método semelhante foi feito para:

  • Kafka
  • Elasticsearch
  • Mongo

PS Todos os dados sobre nomes, portas e o resto são retirados do teto e não carregam nenhuma informação.

Links úteis:
Lista de vários exportadores

Source: https://habr.com/ru/post/pt467915/


All Articles