Kubernetes Discovery and Fetch Metrics
Общие сведения
Название плагина: k8sMetricsDataFlow
Ссылка для загрузки плагина: скачать
Описание:
Данный плагин позволяет обнаружить и собрать метрики с кластера Kubernetes по определенному сценарию, настраиваемому в интерфейсе Monq.
Формат сценария задания потока данных
name: K8s Metrics Discovery
jobs:
- name: Get Metrics
  steps:
    - plugin: k8sMetricsDataFlow
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: <K8s ApiServer URL>
        timeout: <integer>
        tlsConfig:
          insecureSkipVerify: {true | false}
          caFile: <path>
          serverName: <string>
        authorization:
          bearerToken: <string>
          tokenPath: <path>
        proxy:
          address: <string>
          credentials:
            login: <string> 
            password: <string>
        enableHttp2: {true | false}
        followRedirects: {true | false}
        maxSamplesPerSend: <integer>
        scrapeConfigs:
          - jobName: K8s Endpoint Metrics HTTPS
            jobKind: {endpointSearch | nodeSearch}
            timeout: <integer>
            metricsPath: /metrics
            customLabels:
              user_label1: example1
              user_label2: example2
            scheme: https
            tlsConfig:
              insecureSkipVerify: {true | false}
              caFile: <path>
              serverName: <string>
            basicAuth:
              username: <string>
              password: <string>
            authorization:
              bearerToken: <string>
              tokenPath: <path>  
            proxy:
              address: <string>
              credentials:
                login: <string>
                password: <string>
            enableHttp2: {true | false}
            followRedirects: {true | false}
            namespaceSelector:
              - <namespace>
            labelSelector:
                <label-name>: <label-value>
Параметры конфигурации используемые в сценарии
Параметры соединения к Kubernetes Api
| Параметр | Тип | Обязательный параметр | Значение по умолчанию | Описание | 
|---|---|---|---|---|
| streamId | string | да | Идентификатор текущего потока ($.vars.stream.id) | |
| streamKey | string | да | API ключ текущего потока ($.vars.stream.key) | |
| apiUri | string | да | Имя и порт api-сервера k8s к которому обращается агент | |
| timeout | integer | опционально | 10 | Время ожидания ответа на запрос. Глобальный параметр для всех scrapeConfigs | 
| maxSamplesPerSend | integer | опционально | 2000 | Количество метрик, отправляемых в коллектор единоразово | 
| tlsConfig | опционально | Параметры установки защищенного соединения | ||
| tlsConfig: insecureSkipVerify | boolean | опционально | true | Определяет должна ли проверяться цепочка сертификатов при установке соединения | 
| tlsConfig: caFile | string | да, если insecureSkipVerify=false | Путь к файлу с CA сертификатом | |
| tlsConfig: serverName | string | опционально | Имя сервера, с которым должно быть установлено соединение | |
| authorization | да | Авторизационные параметры | ||
| authorization: BearerToken | string | да, если не указан BearerTokenFile | Токен в виде строки | |
| authorization: BearerTokenFile | string | да, если не указан BearerToken | Путь к файлу с токеном | |
| proxy | опционально | null | Параметры соединения через proxy-сервер | |
| proxy: address | string | опционально | URL proxy-сервера, через который будет проходить запрос | |
| proxy: credentials: login | string | опционально | Логин или username для http-аутентификации на proxy-сервере | |
| proxy: credentials: password | string | опционально | Пароль для http-аутентификации на proxy-сервере | |
| enableHttp2 | boolean | опционально | false | Поддержка HTTP/2 при обращении к K8s | 
| followRedirects | boolean | опционально | false | Параметр, позволяющий запросу следовать перенаправлениям, при обращении к K8s | 
Параметры обнаружения точек публикации метрик и снятия метрик с них
Секция указания параметров сбора метрик: с какими параметрами обращаться к endpoint и как его обнаружить (scrapeConfigs)
| Параметр | Тип | Обязательный параметр | Значение по умолчанию | Описание | 
|---|---|---|---|---|
| jobName | string | да | Наименование задания по снятию метрик. Имя задания наследуется в массив меток по каждой собранной метрике | |
| timeout | integer | опционально | 10 | Время ожидания ответа endpoint на запрос. Данный параметр переопределяет глобальный параметр | 
| metricsPath | string | опционально | /metrics | Путь публикации метрик сервисом | 
| customLabels | list[] | опционально | Перечисление меток, которые можно добавить к метрике | |
| scheme | string | опционально | http | Схема http/https для точки выдачи метрик | 
| jobKind | string | да | Указание типа поискового задания точек публикации метрик (endpointSearch/nodeSearch) | |
| namespaceSelector | list[] | опционально | default | Перечисление пространств имен в которых должен осуществляться поиск endpoints | 
| labelSelector | list[] | опционально | Перечисление меток, которым должен соответствовать endpoint публикации метрик | |
| tlsConfig | опционально | Параметры установки TLS-соединения с точкой публикации метрик | ||
| tlsConfig: insecureSkipVerify | boolean | опционально | Определяет должна ли проверяться цепочка сертификатов при установке соединения | |
| tlsConfig: caFile | string | да, если insecureSkipVerify=false | Путь к файлу с CA сертификатом | |
| tlsConfig: serverName | string | опционально | Имя сервера, с которым должно быть установлено соединение | |
| basicAuth | опционально | Параметры авторизации, задавать либо authorization либо basicAuth | ||
| basicAuth: username | string | опционально | Логин http-аутентификации | |
| basicAuth: password | string | опционально | Пароль для http-аутентификации | |
| authorization | опционально | Параметры авторизации, задавать либо authorization либо basicAuth | ||
| authorization: bearerToken | string | опционально | Токен в виде строки | |
| authorization: BearerTokenFile | string | опционально | Путь к файлу с токеном | |
| proxy | опционально | Опциональные параметры соединения с proxy, стоящей перед точкой публикации метрик | ||
| proxy: address | string | опционально | URL proxy-сервера, через который будет проходить запрос | |
| proxy: credentials: login | string | опционально | Логин или username для http-аутентификации на proxy-сервере | |
| proxy: credentials: password | string | опционально | Пароль для http-аутентификации на proxy-сервере | |
| enableHttp2 | boolean | опционально | false | Поддержка HTTP/2 при обращении к K8s | 
| followRedirects | boolean | опционально | false | Параметр, позволяющий запросу следовать перенаправлениям | 
Пример сценария на обнаружение и получение метрик
В приведенном примере метрики собираются со следующих сервисов:
node-exporter,cAdvisor,kube-state-metrics
name: K8s Node Metrics
jobs:
- name: Get Node Metrics
  steps:
    - plugin: k8sMetricsDataFlow
      with:
        streamId: $.vars.stream.id
        streamKey: $.vars.stream.key
        apiUri: "{{ vars.stream.params.apiUri }}"
        timeout: 10
        enableHttp2: false
        followRedirects: false
        maxSamplesPerSend: 500
        scrapeConfigs:
          - jobName: cadvisor
            metricsPath: metrics/cadvisor
            customLabels:
              metricsPath: metrics/cadvisor
            scheme: https
            jobKind: nodeSearch
            authorization:
              bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
          - jobName: kube-state-metrics
            scheme: http
            metricsPath: metrics
            namespaceSelector:
              - kube-system
            labelSelector:
              app.kubernetes.io/name: kube-state-metrics
            customLabels:
              metric_name: kube-state-metrics
            jobKind: endpointSearch
            authorization:
              bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
          - jobName: node-exporter
            scheme: http
            metricsPath: metrics
            namespaceSelector:
              - monitoring
            customLabels:
              metric_name: node-exporter
            jobKind: endpointSearch
            authorization:
              bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
      with-secured:
        authorization:
          bearerTokenFile: "/var/run/secrets/kubernetes.io/serviceaccount/token"
vars.stream.params.apiUri - пользовательский параметр, заданный на вкладке "Настройка" потока данных