Kubernetes discovery and fetch metrics
Общие сведения
Название плагина: k8sMetricsDataFlow
Ссылка для загрузки плагина: 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
- пользовательский параметр, заданный на вкладке "Настройка" потока данных