﻿# Установка средств мониторинга

> [HTML Version](install-monitoring-tools.html)

В качестве средств мониторинга используются:

- инструмент Prometheus для хранения временных рядов;

- сервис Grafana для наблюдения за ключевыми показателями работы системы.

Рассмотрим, как развернуть их в Kubernetes-кластере в несколько этапов:

1. [Очистка CRD перед установкой (опционально)](#clean-cdr).

2. [Загрузка Helm-чарта и конфигурационного файла](#download-helm-chart-and-config-file).

3. [Заполнение конфигурационного файла](#fill-config-file).

4. [Установка чарта Monitoring с помощью Helm в Kubernetes-кластер](#install-monitoring-chart).

## Шаг 1. Очистка CRD перед установкой (опционально)

Если вы ранее устанавливали средства мониторинга, произведите очистку CRD с помощью команд:

````
kubectl delete crd alertmanagerconfigs.monitoring.coreos.com  
kubectl delete crd alertmanagers.monitoring.coreos.com  
kubectl delete crd podmonitors.monitoring.coreos.com  
kubectl delete crd probes.monitoring.coreos.com  
kubectl delete crd prometheusagents.monitoring.coreos.com  
kubectl delete crd prometheuses.monitoring.coreos.com  
kubectl delete crd prometheusrules.monitoring.coreos.com  
kubectl delete crd scrapeconfigs.monitoring.coreos.com  
kubectl delete crd servicemonitors.monitoring.coreos.com  
kubectl delete crd thanosrulers.monitoring.coreos.com

## ````
Шаг 2. Загрузка Helm-чарта и конфигурационного файла

Для установки через интернет получите конфигурационный файл \[OBJECT\], выполнив команды:

````
helm repo add elma365 https://charts.elma365.tech  
helm repo update  
helm show values elma365/monitoring > values-monitoring.yaml

## ````
Шаг 3. Заполнение конфигурационного файла

Заполните конфигурационный файл \[OBJECT\] для установки средств мониторинга.

Для этого в параметрах \[OBJECT\] и \[OBJECT\] укажите нужный \[OBJECT\] для сервиса мониторинга, например, **namespaceOverride: monitoring**. \[OBJECT\] будет создан во время установки, если не был создан ранее.

Для Grafana:

1. Убедитесь что включён интерфейс, в параметре \[OBJECT\] задано \[OBJECT\].

2. Задайте адрес, по которому будет доступна Grafana, в параметре \[OBJECT\].

3. Задайте пароль для администратора в параметре \[OBJECT\]. 

Заполнение конфигурационного файла values-monitoring.yaml для установки мониторинга

````
\# Настройки monitoring  
kube-prometheus-stack:  
  # Настройки grafana  
  grafana:  
    assertNoLeakedSecrets: false  
    # адрес по которому будет доступна grafana  
    ingress:  
      enabled: true  
      ingressClassName: nginx  
      hosts:  
        - grafana.mycompany.com  
      # настройка tls  
      # tls:  
      #   - secretName: "mycompany-cert"  
      #     hosts:  
      #       - grafana.mycompany.com  
      annotations: \{\}  
    # учетные данные администратора  
    adminUser: admin  
    adminPassword: admin  
    # список используемых плагинов  
    plugins:  
    - camptocamp-prometheus-alertmanager-datasource  
    - flant-statusmap-panel  
    - vonage-status-panel  
    sidecar:  
      dashboards:  
        enabled: true  
        label: "grafana\_dashboard"  
        labelValue: ""  
        annotations:  
        folderAnnotation: grafana-dashboard-folder  
        provider:  
          allowUiUpdates: true  
          foldersFromFilesStructure: true  
  # Настройки prometheus  
  prometheus:  
    prometheusSpec:  
      replicas: 1  
      serviceMonitorSelectorNilUsesHelmValues: false  
      # Как долго хранить метрики  
      retention: 1d  
      # Максимальный размер метрик  
      retentionSize: ""
````

````
Заполнение параметров подключения к удалённому хранилищу Mimir

````
kube-prometheus-stack:  
  grafana:  
    sidecar:  
      # включить mimir в качестве источника данных  
      datasources:  
        enabled: true  
        defaultDatasourceEnabled: true  
        isDefaultDatasource: true  
        uid: prometheus  
        url: http://mimir-nginx:80/prometheus  
       
  prometheus:  
    prometheusSpec:  
      # включить mimir в качестве долгосрочного хранилища  
      remoteWrite:  
      - url: http://mimir-nginx:80/api/v1/push
````

## ````
Шаг 4. Установка чарта Monitoring с помощью Helm в Kubernetes-кластер

Выполните установку чарта Monitoring в \[OBJECT\], наименование которого указали на шаге 2 в конфигурационном файле \[OBJECT\]. Namespace будет создан во время установки, если не был создан ранее.

Для установки через интернет выполните команду:

````
helm upgrade --install elma365-monitoring elma365/monitoring -f values-monitoring.yaml -n monitoring --create-namespace 

Начало внимание

````
После установки средств мониторинга нужно [настроить их использование на стороне приложения ELMA365](enable-monitoring-enterprise.md).

````
Конец внимание

## ````
Удалить чарт Monitoring с помощью Helm в Kubernetes-кластере

````
Начало внимание

````
Перед удалением компонента дополнений Monitoring отключите мониторинг на стороне приложения ELMA365.

````
Конец внимание

1. ````
Чтобы удалить чарт **elma365-monitoring** в \[OBJECT\], выполните команду:

````
helm uninstall elma365-monitoring -n monitoring

2. ````
CRD, созданные чартом **elma365-monitoring**, не удаляются по умолчанию и должны быть очищены вручную пользователем с правами **cluster-admin**:

````
kubectl delete crd alertmanagerconfigs.monitoring.coreos.com  
kubectl delete crd alertmanagers.monitoring.coreos.com  
kubectl delete crd podmonitors.monitoring.coreos.com  
kubectl delete crd probes.monitoring.coreos.com  
kubectl delete crd prometheusagents.monitoring.coreos.com  
kubectl delete crd prometheuses.monitoring.coreos.com  
kubectl delete crd prometheusrules.monitoring.coreos.com  
kubectl delete crd scrapeconfigs.monitoring.coreos.com  
kubectl delete crd servicemonitors.monitoring.coreos.com  
kubectl delete crd thanosrulers.monitoring.coreos.com

3. ````
Если при удалении CRD более пяти минут остается в статусе **Terminating**, произведите патчинг с помощью CRD‑команды:

````
kubectl patch crd/MY\_CRD\_NAME -p '\{"metadata":\{"finalizers":\[\]\}\}' --type=merge
````