Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как отправлять метрики Prometheus из кластера Kubernetes, отслеживаемого аналитикой контейнеров, в рабочую область Log Analytics. Прежде чем выполнить эту конфигурацию, необходимо сначала убедиться, что вы собираете метрики Prometheus в вашем кластере с помощью управляемой службы Azure Monitor для Prometheus, который является рекомендуемым способом для мониторинга кластеров. Используйте конфигурацию, описанную в этой статье, только если вы также хотите отправить эти данные в рабочую область Log Analytics, где можно проанализировать ее с помощью запросов журналов и оповещенийпоиска по журналам.
Для этой конфигурации требуется конфигурирование надстройки мониторинга для агента Azure Monitor, используемого в Container insights для отправки данных в рабочую область Log Analytics. Для этого необходимо предоставить конечную точку метрик Prometheus через экспортеров или pod-ов, а затем настроить надстройку мониторинга для агента Azure Monitor, используемого аналитикой контейнеров, как это показано на следующем рисунке.
Параметры очистки Prometheus (для метрик, хранящихся в виде журналов)
Активная очистка метрик из Prometheus выполняется с одной из двух перспектив ниже, а метрики отправляются в настроенную рабочую область Log Analytics:
- На уровне кластера: определено в разделе ConfigMap [Prometheus data_collection_settings.cluster].
- На уровне узла: определено в разделе ConfigMap [Prometheus_data_collection_settings.node].
Конечная точка | Область | Пример |
---|---|---|
Заметка Pod | На уровне кластера | prometheus.io/scrape: "true" prometheus.io/path: "/mymetrics" prometheus.io/port: "8000" prometheus.io/scheme: "http" |
Служба Kubernetes | На уровне кластера | http://my-service-dns.my-namespace:9100/metrics http://metrics-server.kube-system.svc.cluster.local/metrics |
URL-адрес/конечная точка | На уровне узла и/или кластера | http://myurl:9101/metrics |
Если указан URL-адрес, то аналитика контейнеров собирает только данные конечной точки. Если указана служба Kubernetes, имя службы разрешается DNS-сервером внутри кластера для получения IP-адреса. затем выполняется парсинг разрешенной службы.
Область | Ключ | Тип данных | значение | Описание |
---|---|---|---|---|
На уровне кластера | Укажите любой из следующих трех методов, чтобы снимать данные с конечных точек для метрик. | |||
urls |
Строка | Массив, разделённый запятыми | Конечная точка HTTP (указан IP-адрес или допустимый URL-путь). Например: urls=[$NODE_IP/metrics] . ($NODE_IP — это специальный параметр для аналитики контейнеров, который можно использовать вместо IP-адреса узла. Необходимо использовать прописные буквы.) |
|
kubernetes_services |
Строка | Массив, разделённый запятыми | Массив служб Kubernetes для извлечения метрик из kube-state-metrics. Здесь следует использовать полностью квалифицированные доменные имена. Например: kubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics] . |
|
monitor_kubernetes_pods |
Логический | истина или ложь | Если в параметрах на уровне кластера установлено значение true , агент Container insights собирает данные с pod Kubernetes во всем кластере для следующих аннотаций Prometheus:prometheus.io/scrape: prometheus.io/scheme: prometheus.io/path: prometheus.io/port: |
|
prometheus.io/scrape |
Логический | истина или ложь | Включает скрейпинг pod, monitor_kubernetes_pods должен быть установлен в true . |
|
prometheus.io/scheme |
Строка | HTTP | По умолчанию для извлечения данных по HTTP. | |
prometheus.io/path |
Строка | Массив, разделённый запятыми | Путь к HTTP-ресурсу, на котором следует получать метрики. Если для пути метрик не указано /metrics , укажите его с помощью этой заметки. |
|
prometheus.io/port |
Строка | 9102 | Укажите порт для сбора данных. Если порт не задан, по умолчанию используется значение 9102. | |
monitor_kubernetes_pods_namespaces |
Строка | Массив, разделённый запятыми | Список разрешенных пространств имен для сбора метрик из модулей Kubernetes. Например: monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"] |
|
На уровне узла | urls |
Строка | Массив, разделённый запятыми | Конечная точка HTTP (указан IP-адрес или допустимый URL-путь). Например: urls=[$NODE_IP/metrics] . ($NODE_IP — это специальный параметр для аналитики контейнеров, который можно использовать вместо IP-адреса узла. Необходимо использовать прописные буквы.) |
На уровне узла или на уровне кластера | interval |
Строка | 60 с | Интервал сбора по умолчанию равен одной минуте (60 секунд). Коллекцию можно изменить для [prometheus_data_collection_settings.node] и (или) [prometheus_data_collection_settings.cluster] на единицы времени, такие как s, m и h. |
На уровне узла или на уровне кластера | fieldpass fielddrop |
Строка | Массив, разделённый запятыми | Можно указать определенные метрики, которые следует или не следует собирать в конечной точке, задав список разрешений (fieldpass ) и запретов (fielddrop ). Сначала необходимо задать список разрешений. |
Настройка ConfigMaps для указания конфигурации скребка Prometheus (для метрик, хранящихся в виде журналов)
Выполните следующие действия, чтобы настроить файл конфигурации ConfigMap для кластера. ConfigMaps представляет собой глобальный список, и к агенту можно применить только один ConfigMap. Нельзя допускать, чтобы другой ConfigMaps отменял коллекции.
Скачайте файл YAML шаблона ConfigMap и сохраните его как container-azm-ms-agentconfig.yaml. Если вы уже развернули ConfigMap в кластере и хотите обновить его, используя новую конфигурацию, можно изменить ранее использовавшийся файл ConfigMap,
Чтобы извлекать метрики Prometheus, измените YAML-файл ConfigMap, дополнив настройки.
Для сбора данных из служб Kubernetes на уровне кластера, настройте файл ConfigMap, используя следующий пример.
prometheus-data-collection-settings: |- # Custom Prometheus metrics data collection settings [prometheus_data_collection_settings.cluster] interval = "1m" ## Valid time units are s, m, h. fieldpass = ["metric_to_pass1", "metric_to_pass12"] ## specify metrics to pass through fielddrop = ["metric_to_drop"] ## specify metrics to drop from collecting kubernetes_services = ["http://my-service-dns.my-namespace:9102/metrics"]
Выполните следующую команду kubectl:
kubectl apply -f <configmap_yaml_file.yaml>
.Пример:
kubectl apply -f container-azm-ms-agentconfig.yaml
.
Изменение конфигурации может занять несколько минут, прежде чем вступит в силу. Все модули pod ama-logs в кластере перезагрузятся. По завершении перезапусков появится сообщение, подобное приведенному ниже, с результатом configmap "container-azm-ms-agentconfig" created
.
Проверка конфигурации
Чтобы убедиться в успешном применении конфигурации к кластеру, выполните следующую команду, чтобы просмотреть логи из Пода агента: kubectl logs ama-logs-fdf58 -n=kube-system
.
Если из модулей pod агента Azure Monitor возникают ошибки конфигурации, выходные данные отображают ошибки, аналогичные следующему примеру:
***************Start Config Processing********************
config::unsupported/missing config schema version - 'v21' , using defaults
Ошибки, связанные с применением изменений конфигурации, также доступны для просмотра. Следующие параметры доступны для дополнительного устранения неполадок в изменениях конфигурации и анализа метрик Prometheus.
Из журналов объектов pod агента с помощью той же команды
kubectl logs
.Из динамических данных. В журналах динамических данных отображаются ошибки, аналогичные следующему примеру:
2019-07-08T18:55:00Z E! [inputs.prometheus]: Error in plugin: error making HTTP request to http://invalidurl:1010/metrics: Get http://invalidurl:1010/metrics: dial tcp: lookup invalidurl on 10.0.0.10:53: no such host
Из таблицы KubeMonAgentEvents в рабочей области Log Analytics. Данные отправляются каждый час с уровнем серьезности Предупреждение для ошибок сбора данных и уровнем серьезности Ошибка для ошибок в конфигурации. Если ошибки отсутствуют, запись в таблице содержит данные с уровнем серьезности Info, который указывает на отсутствие ошибок. Свойство Tags содержит дополнительные сведения об идентификаторе модуля pod и контейнера, в котором произошла ошибка, а также первое вхождение, последнее вхождение и подсчет за последний час.
Для Azure Red Hat OpenShift версии 3.x и версии 4.x проверьте журналы агента Azure Monitor, выполнив поиск в таблице ContainerLog, чтобы проверить, включена ли коллекция журналов openshift-azure-logging.
Ошибки предотвращают синтаксический анализ файла агентом Azure Monitor, что приводит к перезапуску и использованию конфигурации по умолчанию. После исправления ошибок в ConfigMap для кластеров, отличных от Azure Red Hat OpenShift версии 3.x, сохраните YAML-файл и примените обновленный ConfigMaps, выполнив команду kubectl apply -f <configmap_yaml_file.yaml
.
Для Azure Red Hat OpenShift версии 3.x измените и сохраните обновленный ConfigMaps, выполнив команду oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging
.
Запрос данных метрик Prometheus
Чтобы просмотреть метрики Prometheus, собранные Azure Monitor, и любые ошибки конфигурации и сбора, сообщенные агентом, просмотрите данные метрик запроса Prometheus.
Просмотр метрик Prometheus в Grafana
Аналитика контейнеров поддерживает просмотр метрик, хранящихся в рабочей области Log Analytics, на панелях мониторинга Grafana. Мы предоставили шаблон, который можно скачать из репозитория панели мониторинга Grafana. Используйте его в качестве отправной точки и образца, когда будете учиться запрашивать другие данных из отслеживаемых кластеров для визуализации на пользовательских панелях мониторинга Grafana.