Мониторинг — Как Отслеживать Elk С Помощью Metricbeat В Kubernetes (Простое Решение, Совместимое С V8)

  • Автор темы Letr
  • Обновлено
  • 22, Oct 2024
  • #1

Вероятно, уже больше года появилось предупреждение об устаревании мониторинга xpack в elasticsearch, logstash, kibana и т. д., в котором говорилось, что встроенный мониторинг исчезнет.

Поскольку мне не нравится использовать устаревшие настройки, я решил, что пришло время исправить это сейчас, должно быть легко, не так ли? Не совсем, то, что представляет собой две строки конфигурации в ELK 7.x, требует развертывания дополнительного экземпляра metricbeat. Лично мне этот подход очень не нравится, поскольку он утомляет и кажется пустой тратой ресурсов развертывание еще одного контейнера только для отправки некоторых показателей мониторинга. Но Elastic выбрал путь, и мы можем просто следовать ему.

Я немного прочитал на некоторых официальных каналах, и, похоже, в разработке есть некоторые официальные решения, которые требуют специальных CRD Kubernetes ELK и т. д. Это не то, что я хочу, я просто хочу простое решение, которое можно развернуть где угодно в качестве вспомогательного устройства.

#kubernetes #monitoring #logstash #elasticsearch #elk

Letr


Рег
23 Sep, 2014

Тем
76

Постов
191

Баллов
591
  • 25, Oct 2024
  • #2

Я предлагаю следующее решение, хотя для него потребуется 1 дополнительный metricbeat для каждого контролируемого объекта, оно простое и не оптимизировано. Этот подход также будет работать для других контекстов, не связанных с Kubernetes, таких как docker-compose, с небольшой доработкой.

  • Разверните сайдкар (дополнительный контейнер для каждого модуля) для мониторинга чего-либо (в этом примере это logstash, но сделать то же самое для elasticsearch или kibana должно быть тривиально, просто заменив модуль мониторинга и, возможно, порт метрик.
  • Установите xpack.monitoring.enabled: false в logstash.yml (или elastic/kibana)
  • Попросите metricbeat получать метрики через локальный хост на порту 9600.
  • Настройте metricbeat с смонтированными картами конфигурации, определенными в yaml.
  • Пример предполагает отсутствие TLS/RBAC для elasticsearch, но если у вас есть tls, изменение ниже, надеюсь, будет простым.
 
 # Configmaps for metricbeat conf files
---
apiVersion: v1
kind: ConfigMap
metadata:

name: kibana-metricbeat-modules

namespace: elk
data:

xpack.yml: |-

- module: kibana

xpack.enabled: true # This is what turns on reporting

period: 10s

hosts: ["localhost:5601"]
---
apiVersion: v1
kind: ConfigMap
metadata:

name: kibana-metricbeat-config

namespace: elk
data:

metricbeat.yml: |-

metricbeat.config.modules:

path: ${path.config}/modules.d/*.yml

reload.enabled: true

reload.period: 10s

metricbeat.modules: # Disable system metrics

- module: system

enabled: false

output.elasticsearch:

hosts: ["http://elasticsearch:9200"]

setup.ilm.enabled: true
...
container: 

- name: metricbeat-sidecar

image: docker.elastic.co/beats/metricbeat:7.14.0

volumeMounts:

- name: config

mountPath: /usr/share/metricbeat/metricbeat.yml

readOnly: true

subPath: metricbeat.yml

- name: modules

mountPath: /usr/share/metricbeat/modules.d

readOnly: true
...

volumes:

- name: config

configMap:

defaultMode: 0640

name: kibana-metricbeat-config

- name: modules

configMap:

defaultMode: 0640

name: kibana-metricbeat-modules
 

Основные источники:

Обновлять:

# Configmaps for metricbeat conf files --- apiVersion: v1 kind: ConfigMap metadata: name: metricbeat-modules namespace: logstash data: logstash-xpack.yml: |- - module: logstash xpack.enabled: true # This is what turns on xpack monitoring metric export period: 10s hosts: ["localhost:9600"] # Connect to logstash metrics api using localhost inside pod --- apiVersion: v1 kind: ConfigMap metadata: name: metricbeat-config namespace: logstash data: metricbeat.yml: |- metricbeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: true reload.period: 10s metricbeat.modules: # Disable system metrics - module: system enabled: false output.elasticsearch: hosts: ["http://elasticsearch:9200"] # You probably need to modify elasticsearch URL setup.ilm.enabled: true --- ... Here goes the rest of your yaml for logstash/elasticsearch/kibana And then the sidecar container: ... containers: - name: metricbeat-sidecar image: docker.elastic.co/beats/metricbeat:7.14.0 volumeMounts: - name: config mountPath: /usr/share/metricbeat/metricbeat.yml readOnly: true subPath: metricbeat.yml - name: modules mountPath: /usr/share/metricbeat/modules.d readOnly: true ... # and then finally in the volumes section: ... volumes: - name: config configMap: defaultMode: 0640 name: metricbeat-config - name: modules configMap: defaultMode: 0640 name: metricbeat-modules
 

Kaynak


Рег
17 Jul, 2009

Тем
79

Постов
200

Баллов
595
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно