Я пытаюсь получить метрики из приложения Spring Boot в Openshift, и я выбрал телеграф, потому что он предлагает преобразовать метрики из формата Prometheus в OpenTSDB, который мне нужен. Проблема в том, что я застрял в том, чтобы использовать контейнер с телеграфом в каждом POD, что не является лучшим стабильным решением. Мне нужно создать один POD телеграфа, который бы обнаруживал другие службы и другие модули, чтобы получать из них метрики.
Я добавил роль 'view' и 'hawkular-metrics' в стандартную учетную запись службы, но она регистрирует, что не может просматривать все модули кластера, и на самом деле я пытаюсь смотреть только стручки одного проекта, а не все проекты кластера.
Это мой шаблон для развертывания телеграфа:
---
kind: Template
apiVersion: v1
metadata:
name: telegraf-testapp-template
annotations:
description: Template to deploy an application with telegraf
labels:
app: telegraf
createdBy: telegraf-testapp-template
parameters:
- description: Application name
name: APPLICATION_NAME
value: 'telegraf'
required: true
- description: OpenTSDB service
name: OPENTSDB_HOST
value: 'proxytsdb.project.svc'
- description: OpenTSDB port
name: OPENTSDB_PORT
value: '4242'
- description: Default data collection interval for telegraf (seconds)
name: TELEGRAF_INTERVAL
value: '1s'
- description: Prefix for metrics keys
name: PREFIX_KEYS
value: 'app.'
- description: Run telegraf with debug log messages (true/false)
name: TELEGRAF_DEBUG
value: 'false'
- description: Cluster
name: CLUSTER
value: 'pmp'
- description: Project name
name: PROJECT
value: 'unknown'
objects:
- kind: DeploymentConfig
apiVersion: v1
metadata:
name: ${APPLICATION_NAME}
labels:
deploymentConfig: ${APPLICATION_NAME}
app: telegraf
spec:
replicas: 1
selector:
deploymentConfig: ${APPLICATION_NAME}
strategy:
type: Rolling
template:
metadata:
labels:
deploymentConfig: ${APPLICATION_NAME}
app: telegraf
name: ${APPLICATION_NAME}
spec:
containers:
- env:
- name: INTERVAL
value: ${TELEGRAF_INTERVAL}
- name: PREFIX_KEYS
value: 'app.'
- name: OPENTSDB_HOST
value: ${OPENTSDB_HOST}
- name: OPENTSDB_PORT
value: ${OPENTSDB_PORT}
- name: DEBUG
value: ${TELEGRAF_DEBUG}
- name: CLUSTER
value: ${CLUSTER}
- name: PROJECT
value: ${PROJECT}
- name: SERVICE
value: ${APPLICATION_NAME}
image: >-
sandbox/awl-openshift-telegraf:1.9.1
imagePullPolicy: Always
name: telegraf
resources: {}
securityContext: {}
terminationMessagePath: /dev/termination-log
restartPolicy: Always
dnsPolicy: ClusterFirst
triggers:
- type: ConfigChange
После развертывания этого шаблона с учетной записью службы по умолчанию, я ожидаю, что он обнаружит модули и службы проекта, но он показывает:
unable to watch resources: kubernetes api: Failure 403 User "system:serviceaccount:project:default" cannot watch all pods in the cluster