Добрый день.
Пытаюсь запустить мониторинг 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, с которого и должен снимать метрики.
Заранее благодарен за любой ответ.