@SSSSTTTTAAAASSSS

Вопрос по kubernetes и prometheus: настройка?

Добрый день.
Пытаюсь запустить мониторинг prometheus через kubernetes.
В данный момент все работает через докер.
Вот docker-compose файл
version: "3.1"

services:
  http:
    container_name: "http_pr"
    build:
      context: "./"
      dockerfile: "./docker/http.Dockerfile"
    ports:
      - "8085:8085"
#    links:
#      - "grpc:grpc"
    environment:
      PORT_HTTP: ":8085"
      GRPC: "grpc:9000"

  grpc:
    container_name: "grpc"
    build:
      context: "./"
      dockerfile: "./docker/grpc.Dockerfile"
    ports:
      - "9000:9000"
    environment:
      TCP_PORT: ":9000"
      DB_TYPE: "inmemory"

  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus:/etc/prometheus/
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    ports:
      - 9090:9090
    depends_on:
      - http

  grafana:
    image: grafana/grafana:latest
    ports:
      - 3000:3000
    depends_on:
      - prometheus

и конфиг файла prometheus:
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
  - job_name: myCounters
    metrics_path: /posts/metrics
    static_configs:
      - targets:
          - http:8085

Насколько нашел на просторах интернета как такого, как эквивалент depends_on в kubernetes нет, и как вариант много гже предлагали initContainer. У меня с этим инитом не получилось завести.
Потом много где прочитал про целую настройку через namespace, кластер и т.д., но насколько я понял это настройка глобального prometheus-a, который будет мониторить все поды сразу.
Кто подскажет, если мне надо чисто мониторить только одну ноду с несколькими контейнерами, надо ли мне проходить этот путь с namespaces и остальными файлами, или могук обойтись deployment-ом и service-ом одним?
В данный момент файлы такие:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-deployment
  labels:
    app: prometheus
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
        - name: prometheus
          image: prom/prometheus
          args:
            - '--config.file=/etc/prometheus/prometheus.yml'
            - '--storage.tsdb.path=/prometheus'
#          volumeMounts:
#            - name: config-volume
#              mountPath: ./prometheus:/etc/prometheus/
          ports:
            - containerPort: 9090
#      volumes:
#        - name: config-volume

С volumes-ми у меня что-то не сложилось, пока закоммитил
и сервис:
apiVersion: v1
kind: Service
metadata:
  name: prometheus-service
spec:
  selector:
    app: prometheus
  ports:
    - protocol: TCP
      port: 9090

Но в этом варианте, у меня есть сомнения что я как-то неправильно подключаю файл prometheus конфига, который у меня настроен на прослушивание http сервиса. Потому как сам эндпоинт /metrics через сервис http у меня работает и снимает метрики, а вот веб интерфейс не видит ничего. Вроде как видел, вариант его делать отдельным файлом и apply-ть, но не уверен надо ли оно в моем случае.
При пробрасывании порта по данному сервису, он не видит моего сервиса http, с которого и должен снимать метрики.
Заранее благодарен за любой ответ.
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы