Перейти к основному содержимому
Версия: 7.9

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

ПараметрТипОбязательный параметрЗначение по умолчаниюОписание
streamIdstringдаИдентификатор текущего потока ($.vars.stream.id)
streamKeystringдаAPI ключ текущего потока ($.vars.stream.key)
apiUristringдаИмя и порт api-сервера k8s к которому обращается агент
timeoutintegerопционально10Время ожидания ответа на запрос. Глобальный параметр для всех scrapeConfigs
maxSamplesPerSendintegerопционально2000Количество метрик, отправляемых в коллектор единоразово
tlsConfigопциональноПараметры установки защищенного соединения
tlsConfig: insecureSkipVerifybooleanопциональноtrueОпределяет должна ли проверяться цепочка сертификатов при установке соединения
tlsConfig: caFilestringда, если insecureSkipVerify=falseПуть к файлу с CA сертификатом
tlsConfig: serverNamestringопциональноИмя сервера, с которым должно быть установлено соединение
authorizationдаАвторизационные параметры
authorization: BearerTokenstringда, если не указан BearerTokenFileТокен в виде строки
authorization: BearerTokenFilestringда, если не указан BearerTokenПуть к файлу с токеном
proxyопциональноnullПараметры соединения через proxy-сервер
proxy: addressstringопциональноURL proxy-сервера, через который будет проходить запрос
proxy: credentials: loginstringопциональноЛогин или username для http-аутентификации на proxy-сервере
proxy: credentials: passwordstringопциональноПароль для http-аутентификации на proxy-сервере
enableHttp2booleanопциональноfalseПоддержка HTTP/2 при обращении к K8s
followRedirectsbooleanопциональноfalseПараметр, позволяющий запросу следовать перенаправлениям, при обращении к K8s

Параметры обнаружения точек публикации метрик и снятия метрик с них

Секция указания параметров сбора метрик: с какими параметрами обращаться к endpoint и как его обнаружить (scrapeConfigs)

ПараметрТипОбязательный параметрЗначение по умолчаниюОписание
jobNamestringдаНаименование задания по снятию метрик. Имя задания наследуется в массив меток по каждой собранной метрике
timeoutintegerопционально10Время ожидания ответа endpoint на запрос. Данный параметр переопределяет глобальный параметр
metricsPathstringопционально/metricsПуть публикации метрик сервисом
customLabelslist[]опциональноПеречисление меток, которые можно добавить к метрике
schemestringопциональноhttpСхема http/https для точки выдачи метрик
jobKindstringдаУказание типа поискового задания точек публикации метрик (endpointSearch/nodeSearch)
namespaceSelectorlist[]опциональноdefaultПеречисление пространств имен в которых должен осуществляться поиск endpoints
labelSelectorlist[]опциональноПеречисление меток, которым должен соответствовать endpoint публикации метрик
tlsConfigопциональноПараметры установки TLS-соединения с точкой публикации метрик
tlsConfig: insecureSkipVerifybooleanопциональноОпределяет должна ли проверяться цепочка сертификатов при установке соединения
tlsConfig: caFilestringда, если insecureSkipVerify=falseПуть к файлу с CA сертификатом
tlsConfig: serverNamestringопциональноИмя сервера, с которым должно быть установлено соединение
basicAuthопциональноПараметры авторизации, задавать либо authorization либо basicAuth
basicAuth: usernamestringопциональноЛогин http-аутентификации
basicAuth: passwordstringопциональноПароль для http-аутентификации
authorizationопциональноПараметры авторизации, задавать либо authorization либо basicAuth
authorization: bearerTokenstringопциональноТокен в виде строки
authorization: BearerTokenFilestringопциональноПуть к файлу с токеном
proxyопциональноОпциональные параметры соединения с proxy, стоящей перед точкой публикации метрик
proxy: addressstringопциональноURL proxy-сервера, через который будет проходить запрос
proxy: credentials: loginstringопциональноЛогин или username для http-аутентификации на proxy-сервере
proxy: credentials: passwordstringопциональноПароль для http-аутентификации на proxy-сервере
enableHttp2booleanопциональноfalseПоддержка HTTP/2 при обращении к K8s
followRedirectsbooleanопционально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 - пользовательский параметр, заданный на вкладке "Настройка" потока данных