Развёртывание Grafana с помощью Helm-чартов

Эта тема включает инструкции по установке и запуску Grafana на Kubernetes с помощью Helm-чартов.

Helm — это инструмент командной строки с открытым исходным кодом, используемый для управления приложениями Kubernetes. Это выпускной проект в CNCF Landscape.

Note

Сообщество Grafana с открытым исходным кодом предлагает Helm-чарты для запуска её на Kubernetes. Обратите внимание, что код предоставляется без каких-либо гарантий. Если вы столкнётесь с какими-либо проблемами, вы можете сообщить о них в поддерживаемом сообществом репозитории GitHub.

Посмотрите это видео, чтобы узнать больше об установке Grafana с помощью Helm-чартов:

Перед началом

Чтобы установить Grafana с помощью Helm, убедитесь, что вы выполнили следующее:

  • Установите сервер Kubernetes на вашу машину. Информацию об установке Kubernetes см. в разделе Установка Kubernetes.
  • Установите последнюю стабильную версию Helm. Информацию об установке Helm см. в разделе Установка Helm.

Установка Grafana с помощью Helm

При установке Grafana с помощью Helm вы выполняете следующие задачи:

  1. Настройка репозитория Grafana Helm, который предоставляет пространство, в котором вы установите Grafana.

  2. Развёртывание Grafana с помощью Helm, которое устанавливает Grafana в пространство имён.

  3. Доступ к Grafana, который предоставляет шаги для входа в Grafana.

Настройка репозитория Grafana Helm

Чтобы настроить репозиторий Grafana Helm так, чтобы вы загрузили правильные Helm-чарты Grafana на вашу машину, выполните следующие шаги:

  1. Чтобы добавить репозиторий Grafana, используйте следующий синтаксис команды:

    helm repo add <DESIRED-NAME> <HELM-REPO-URL>

    Следующий пример добавляет Helm-репозиторий grafana.

    Bash
    helm repo add grafana-community https://grafana-community.github.io/helm-charts
  2. Выполните следующую команду, чтобы проверить, что репозиторий был добавлен:

    Bash
    helm repo list

    После добавления репозитория вы должны увидеть вывод, похожий на следующий:

    Bash
    NAME              URL
    grafana-community https://grafana-community.github.io/helm-charts
  3. Выполните следующую команду, чтобы обновить репозиторий для загрузки последних Helm-чартов Grafana:

    Bash
    helm repo update

Развёртывание Helm-чартов Grafana

После настройки репозитория Grafana Helm вы можете начать развёртывать его в вашем кластере Kubernetes.

При развёртывании Helm-чартов Grafana используйте отдельное пространство имён вместо того, чтобы полагаться на пространство имён по умолчанию. В пространстве имён по умолчанию могут уже работать другие приложения, что может привести к конфликтам и другим потенциальным проблемам.

Когда вы создаёте новое пространство имён в Kubernetes, вы можете лучше организовывать, распределять и управлять ресурсами кластера. Дополнительную информацию см. в разделе Пространства имён.

  1. Чтобы создать пространство имён, выполните следующую команду:

    Bash
    kubectl create namespace monitoring

    Вы увидите вывод, похожий на этот, что означает, что пространство имён успешно создано:

    Bash
    namespace/monitoring created
  2. Найдите официальный репозиторий grafana-community/grafana, используя команду:

    helm search repo <repo-name/package-name>

    Например, следующая команда предоставляет список Helm-чартов Grafana, из которых вы установите последнюю версию чарта Grafana.

    Bash
    helm search repo grafana-community/grafana
  3. Выполните следующую команду, чтобы развернуть Helm-чарт Grafana внутри вашего пространства имён.

    Bash
    helm install my-grafana grafana-community/grafana --namespace monitoring

    Где:

    • helm install: устанавливает чарт, развёртывая его в кластере Kubernetes
    • my-grafana: логическое имя чарта, которое вы указали
    • grafana-community/grafana: имя репозитория и пакета для установки
    • --namespace: пространство имён Kubernetes (то есть monitoring), в котором вы хотите развернуть чарт
  4. Чтобы проверить статус развёртывания, выполните следующую команду и убедитесь, что в столбце STATUS появилось deployed:

    Bash
    helm list -n monitoring

    Вы должны увидеть вывод, похожий на следующий:

    Bash
    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART          APP VERSION
    my-grafana      monitoring      1               2024-01-13 23:06:42.737989554 +0000 UTC deployed        grafana-6.59.0 10.1.0
  5. Чтобы проверить общий статус всех объектов в пространстве имён, выполните следующую команду:

    Bash
    kubectl get all -n monitoring

    Если вы столкнётесь с ошибками или предупреждениями в столбце STATUS, проверьте журналы и обратитесь к разделу «Устранение неполадок» этой документации.

Доступ к Grafana

В этом разделе описаны шаги, которые вы должны выполнить, чтобы получить доступ к Grafana через веб-браузер.

  1. Выполните следующую команду helm get notes:

    Bash
    helm get notes my-grafana -n monitoring

    Эта команда выведет примечания к чарту. Вы увидите вывод NOTES, который предоставляет полные инструкции о том:

    • Как декодировать пароль для входа для учётной записи администратора Grafana
    • Как получить доступ к службе Grafana через веб-браузер
  2. Чтобы получить пароль администратора Grafana, выполните команду следующим образом:

    Bash
    kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

    Она выдаст вам декодированный вывод строки base64, который является паролем для учётной записи администратора.

  3. Сохраните декодированный пароль в файл на вашей машине.

  4. Чтобы получить доступ к службе Grafana в веб-браузере, выполните следующую команду:

    Bash
    export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}")

    Приведённая выше команда экспортирует переменную оболочки с именем POD_NAME, которая сохранит полное имя развёрнутого pod.

  5. Выполните следующую команду переадресации портов, чтобы направить pod Grafana на прослушивание порта 3000:

    Bash
    kubectl --namespace monitoring port-forward $POD_NAME 3000

    Дополнительную информацию о переадресации портов см. в разделе Использование переадресации портов для доступа к приложениям в кластере.

  6. Перейдите на 127.0.0.1:3000 в вашем браузере.

  7. Появится страница входа Grafana.

  8. Чтобы войти, введите admin в качестве имени пользователя.

  9. В качестве пароля вставьте тот, который вы сохранили в файл после декодирования ранее.

Настройка конфигурации Grafana по умолчанию

Helm — популярный менеджер пакетов для Kubernetes. Он объединяет манифесты ресурсов Kubernetes для повторного использования в разных средах. Эти манифесты написаны на языке шаблонов, позволяя вам предоставлять значения конфигурации через файл values.yaml или встроенно с помощью Helm, чтобы заменить заполнители в манифесте там, где должны находиться эти конфигурации.

Файл values.yaml позволяет настраивать конфигурацию чарта, указывая значения для различных параметров, таких как версии образов, лимиты ресурсов, конфигурации служб и так далее.

Изменяя значения в файле values.yaml, вы можете адаптировать развёртывание Helm-чарта к вашим конкретным требованиям, используя команды helm install или upgrade. Дополнительную информацию о настройке Helm см. в разделе Файлы значений.

Загрузка файла values.yaml

Чтобы внести любые изменения конфигурации, загрузите файл values.yaml из репозитория Grafana Helm Charts:

https://github.com/grafana-community/helm-charts/blob/main/charts/grafana/values.yaml

Note

В зависимости от требований вашего случая использования вы можете использовать один файл YAML, содержащий ваши изменения конфигурации, или создать несколько файлов YAML.

По умолчанию постоянное хранилище отключено, что означает, что Grafana использует эфемерное хранилище, и все данные будут храниться в файловой системе контейнера. Эти данные будут потеряны, если контейнер остановлен, перезапущен или если контейнер падает.

Настоятельно рекомендуется включить постоянное хранилище в Helm-чартах Grafana, если вы хотите гарантировать, что ваши данные сохраняются и не теряются в случае перезапусков или сбоев контейнера.

Включение постоянного хранилища в Helm-чартах Grafana обеспечивает надёжное решение для запуска Grafana в продакшен-средах.

Чтобы включить постоянное хранилище в Helm-чартах Grafana, выполните следующие шаги:

  1. Откройте файл values.yaml в вашем любимом редакторе.

  2. Отредактируйте значения и в разделе persistence измените флаг enable с false на true

    YAML
    .......
    ............
    ......
    persistence:
      type: pvc
      enabled: true
      # storageClassName: default
    .......
    ............
    ......
  3. Выполните следующую команду helm upgrade, указав файл values.yaml, чтобы изменения вступили в силу:

    Bash
    helm upgrade my-grafana grafana-community/grafana -f values.yaml -n monitoring

Теперь PVC будет хранить все ваши данные, такие как дашборды, источники данных и так далее.

Установка плагинов (например, приложение Zabbix, панель Clock и т. д.)

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

Grafana в настоящее время поддерживает три типа плагинов: панель, источник данных и приложение. Дополнительную информацию об управлении плагинами см. в разделе Управление плагинами.

Чтобы установить плагины в Helm-чартах Grafana, выполните следующие шаги:

  1. Откройте файл values.yaml в вашем любимом редакторе.

  2. Найдите строку plugins: и в этом разделе определите плагины, которые вы хотите установить.

    YAML
    .......
    ............
    ......
    plugins:
    # here we are installing two plugins, make sure to keep the indentation correct as written here.
    
    - alexanderzobnin-zabbix-app
    - grafana-clock-panel
    .......
    ............
    ......
  3. Сохраните изменения и используйте команду helm upgrade, чтобы установить эти плагины:

    Bash
    helm upgrade my-grafana grafana-community/grafana -f values.yaml -n monitoring
  4. Перейдите на 127.0.0.1:3000 в вашем браузере.

  5. Войдите с учётными данными администратора, когда появится страница входа Grafana.

  6. Перейдите в UI -> Administration -> Plugins

  7. Найдите указанные выше плагины, и они должны быть помечены как установленные.

Настройка приватного центра сертификации (CA)

Во многих корпоративных сетях TLS-сертификаты выдаются приватным центром сертификации и не доверены по умолчанию (с использованием предоставленной цепочки доверия ОС).

Если вашему экземпляру Grafana нужно взаимодействовать со службами, предоставляющими сертификаты, выданные этими приватными CA, то вам нужно убедиться, что Grafana доверяет корневому сертификату.

Вам может потребоваться настроить это, если вы:

  • имеете плагины, требующие связности с другими самостоятельно размещёнными системами. Например, если вы установили плагины Grafana Enterprise Metrics, Logs или Traces (GEM, GEL, GET), и ваш кластер GEM (или GEL/GET) использует приватный сертификат.
  • хотите подключиться к источникам данных, которые слушают HTTPS с приватным сертификатом.
  • используете бэкенд-базу данных для постоянного хранения или службу кэширования, которая использует приватные сертификаты для шифрования при передаче.

В некоторых случаях вы можете указать самоподписанный сертификат внутри Grafana (как в некоторых источниках данных) или выбрать пропуск проверки TLS-сертификата (это не рекомендуется, если только это не абсолютно необходимо).

Простое решение, которое должно работать по всему вашему экземпляру (плагины, источники данных и бэкенд-подключения), — добавить ваш самоподписанный сертификат CA в ваше развёртывание Kubernetes.

  1. Создайте ConfigMap, содержащий сертификат, и разверните его в вашем кластере Kubernetes

    YAML
    # grafana-ca-configmap.yaml
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: grafana-ca-cert
    data:
      ca.pem: |
        -----BEGIN CERTIFICATE-----
        (rest of the CA cert)
        -----END CERTIFICATE-----
    Bash
    kubectl apply --filename grafana-ca-configmap.yaml --namespace monitoring
  2. Откройте файл Helm values.yaml в вашем любимом редакторе.

  3. Найдите строку extraConfigmapMounts: и в этом разделе укажите дополнительный ConfigMap, который вы хотите смонтировать.

    YAML
    .......
    ............
    ......
    extraConfigmapMounts:
       - name: ca-certs-configmap
         mountPath: /etc/ssl/certs/ca.pem
         subPath: ca.pem
         configMap: grafana-ca-cert
         readOnly: true
    .......
    ............
    ......
  4. Сохраните изменения и используйте команду helm upgrade, чтобы обновить ваше развёртывание Grafana и смонтировать новый ConfigMap:

    Bash
    helm upgrade my-grafana grafana-community/grafana --values values.yaml --namespace monitoring

Устранение неполадок

Этот раздел включает советы по устранению неполадок, которые могут оказаться полезными при развёртывании Grafana на Kubernetes через Helm.

Сбор журналов

Важно просматривать журналы сервера Grafana при устранении любых проблем.

Чтобы проверить журналы Grafana, выполните следующую команду:

Bash
# dump Pod logs for a Deployment (single-container case)

kubectl logs --namespace=monitoring deploy/my-grafana

Если в развёртывании работает несколько контейнеров, выполните следующую команду, чтобы получить журналы только для развёртывания Grafana:

Bash
# dump Pod logs for a Deployment (multi-container case)

kubectl logs --namespace=monitoring deploy/grafana -c my-grafana

Дополнительную информацию о доступе к журналам приложений Kubernetes см. в разделах Pods и Deployments.

Повышение уровня детализации журналов

По умолчанию уровень журнала Grafana установлен в info, но вы можете повысить его до режима debug, чтобы получить информацию, необходимую для диагностики и устранения проблемы. Дополнительную информацию об уровнях журнала Grafana см. в разделе Настройка журналов.

Чтобы повысить уровень журнала до режима debug, выполните следующие шаги:

  1. Откройте файл values.yaml в вашем любимом редакторе и найдите строку grafana.ini, и там вы найдёте раздел о режиме журналирования.

  2. Добавьте level: debug сразу под строкой mode: console

    YAML
    # This is the values.yaml file
      .....
    .......
    ....
    grafana.ini:
    paths:
      data: /var/lib/grafana/
      .....
    .......
    ....
      mode: console
      level: debug

    Убедитесь, что уровень отступа остаётся тем же, иначе это не сработает.

  3. Теперь, чтобы применить это, выполните команду helm upgrade следующим образом:

    Bash
    helm upgrade my-grafana grafana-community/grafana -f values.yaml -n monitoring
  4. Чтобы проверить это, откройте интерфейс Grafana в браузере, используя предоставленный IP:Port. Появится страница входа Grafana.

  5. Чтобы войти в Grafana, введите admin в качестве имени пользователя и вставьте пароль, который был декодирован ранее. Перейдите в Server Admin > Settings и затем найдите log. Вы должны увидеть уровень в режиме debug.

Сброс секретов администратора Grafana (учётные данные для входа)

По умолчанию учётные данные для входа для учётной записи супер-администратора генерируются через secrets. Однако это можно легко изменить. Чтобы добиться этого, выполните следующие шаги:

  1. Отредактируйте файл values.yaml и найдите строку adminPassword. Там вы можете определить новый пароль:

    YAML
    # Administrator credentials when not using an existing secret (see below)
    adminUser: admin
    adminPassword: admin
  2. Затем используйте команду helm upgrade следующим образом:

    Bash
    helm upgrade my-grafana grafana-community/grafana -f values.yaml -n monitoring

    Эта команда теперь сделает ваши учётные данные для входа супер-администратора admin как для имени пользователя, так и для пароля.

  3. Чтобы проверить это, войдите в Grafana, введите admin как для имени пользователя, так и для пароля. Вы должны иметь возможность войти как супер-администратор.

Удаление развёртывания Grafana

Чтобы удалить развёртывание Grafana, выполните команду:

helm uninstall <RELEASE-NAME> <NAMESPACE-NAME>

Bash
helm uninstall my-grafana -n monitoring

Это удаляет все объекты из данного пространства имён monitoring.

Если вы хотите удалить пространство имён monitoring, выполните команду:

Bash
kubectl delete namespace monitoring