Какая роль нужна телеграфу для мониторинга одного проекта в openshift? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь получить метрики из приложения 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
...