Я интегрирую Prometheus в свой кластер Kubernetes с помощью таблицы рулевого управления, которую я скачал с https://github.com/helm/helm. Я использую Azure для развертывания моего AKS, если вы должны знать. В каждом моем модуле контейнер запускает изображение Docker, которое включает скрипт master_server.py
, который контролирует рабочий процесс в моем основном модуле.
Я пытаюсь получить некоторые пользовательские метрики из своего главного модуля через master_server.py
с официальным пакетом Prometheus Python - https://github.com/prometheus/client_python. Мой master_server.py
выглядит примерно так:
master_server.py
(усечено)
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.websocket
import tornado.gen
import tornado.concurrent
import prometheus_client as prom
num_req = prom.Counter('number_of_request_receive_by_master',
'number of request receive by master')
num_worker = prom.Gauge('number_of_worker_available',
'number of worker available')
def main():
logging.debug('Starting up server')
.
.
.
if __name__ == "__main__":
main()
prom.start_http_server(8081)
Я прибегнул к поиску и обнаружил, что мне нужно добавить аннотации, чтобы Прометей мог очистить данные от моего главного модуля. Поэтому в своем файле deployment.yaml
я добавил следующий фрагмент, чтобы Прометей мог соскрести данные с моего главного модуля.
template:
metadata:
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '8081'
Тем не менее, он не работал. Я не вижу свои пользовательские метрики в запросах Prometheus.
Ниже приведены мои deployment.yaml
мастер-модуля.
Name: kaldi-feature-test-master
Namespace: kaldi-test
CreationTimestamp: Fri, 10 Jan 2020 01:53:09 +0800
Labels: app.kubernetes.io/instance=kaldi-feature-test
app.kubernetes.io/managed-by=Tiller
app.kubernetes.io/name=kaldi-feature-test-master
helm.sh/chart=kaldi-feature-test-0.1.0
Annotations: deployment.kubernetes.io/revision: 1
Selector: app.kubernetes.io/instance=kaldi-feature-test,app.kubernetes.io/name=kaldi-feature-test-master
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app.kubernetes.io/instance=kaldi-feature-test
app.kubernetes.io/name=kaldi-feature-test-master
Annotations: prometheus.io/port: 8081
prometheus.io/scrape: true
Containers:
kaldi-feature-test-master:
Image: kalditest.azurecr.io/kalditestscaled:latest
Port: 8080/TCP
Host Port: 0/TCP
Command:
/home/appuser/opt/tini
--
/home/appuser/opt/start_master.sh
Limits:
cpu: 2
memory: 2Gi
Requests:
cpu: 2
memory: 2Gi
Liveness: http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
Readiness: http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
Environment Variables from:
environment-variables-master-secret Secret Optional: false
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: kaldi-feature-test-master-79886c5d76 (2/2 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 15m deployment-controller Scaled up replica set kaldi-feature-test-master-79886c5d76 to 2
Я проверил цели Prometheus и понял, что в соединении отказано моим мастерам.
Что мне нужно сделать, чтобы Прометей очистил пользовательские метрики от моего главного модуля?