Перейти к содержимому

Установка Grafana и Prometheus

    В данной инструкции мы разберемся с вами правильно установить и настроить одну из самых популярных система мониторинга Grafana + Prometheus. Установку мы буде производить в Docker. В статье мы подробно рассмотрим все этапы установки, а в самом конце вы найдете готовый compose файл для быстрой установки.

    Установка Docker

    Вы можете установить докер в ручную либо заказать уже готовый виртуальный сервер с Docker и Portainer у нас на сайте

    Установим необходимые пакеты

    sudo apt update
    sudo apt install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    Добави GPG ключ Docker
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    Добавим стабильный репозиторий Docker

    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    Обновим пакеты и установим Docker

    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io

    Для удобства управления контейнерами можно дополнительно установить Portainer. После установки вебинтерфейс Portainer будет доступен по адресу https://ip:9443

    docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
        --restart=always \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v portainer_data:/data \
        portainer/portainer-ce:latest

    Установим docker-compose

    apt  install docker-compose

    На данном подготовку для установки Grafana + Portainer мы закончили.

    Установка Grafana

    Для установки последней стабильной вервии Grafana достаточно выполнить следующую команду

    docker run -d -p 3000:3000 --name grafana grafana/grafana-enterprise

    После завершения установки веб интерфейс будет доступен по адресу http://ip:3000. Вам будет необходимо ввести логин admin и пароль admin, после чего вам будет предложено указать новый пароль.

    Установка Prometheus + Node Exporter

    Установим Prometheus и для сбора статистики с хост системы(системы на которой установлен сервер Grafana) дополнительно установим Node Exporter.

    Для упрощения установки мы создадим файл docker-compose.yml со следующим содержимым:

    version: '3.3'
    
    networks:
      monitoring:
        driver: bridge
        
    volumes:
      prometheus_data: {}
    
    services:
      node-exporter:
        image: prom/node-exporter:latest
        container_name: node-exporter
        restart: unless-stopped
        volumes:
          - /proc:/host/proc:ro
          - /sys:/host/sys:ro
          - /:/rootfs:ro
        command:
          - '--path.procfs=/host/proc'
          - '--path.rootfs=/rootfs'
          - '--path.sysfs=/host/sys'
          - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
        ports:
          - 9100:9100
        networks:
          - monitoring
      prometheus:
        image: prom/prometheus:latest
        container_name: prometheus
        restart: unless-stopped
        volumes:
          - ./prometheus.yml:/etc/prometheus/prometheus.yml
          - prometheus_data:/prometheus
        command:
          - '--config.file=/etc/prometheus/prometheus.yml'
          - '--storage.tsdb.path=/prometheus'
          - '--web.console.libraries=/etc/prometheus/console_libraries'
          - '--web.console.templates=/etc/prometheus/consoles'
          - '--web.enable-lifecycle'
        ports:
          - 9090:9090
        networks:
          - monitoring

    Для сбора статистики Node Exporter мы смонтировали /proc /sys и / в режиме чтения.

    Для Prometheus нам необходимо указать папку в которой будет располагаться файл конфигурации prometheus.yml. В примере выше путь указан к корневой папке с которой будет запущен compose файл.

    Создадим директорию prometheus в которой создадим файл prometheus.yml со следующим содержимым:

    global:
      scrape_interval:     15s
    
    scrape_configs:
      - job_name: "prometheus"
        scrape_interval: 5s
        static_configs:
        - targets: ["localhost:9090"]
    
      - job_name: "node"
        static_configs:
        - targets: ["node-exporter:9100"]
    

    Вернемся на уровень выше, где находится файл docker-compose.yml и выполним установку

    docker-compose up -d

    После установки проверим доступность Prometheus который будет доступен по адресу http://ip:9090, а метрики который собираются на хост системе будут доступы по адресу http://ip:9100.

    Теперь остался последний шаг — добавить в Grafana в качестве источника получения данных Prometheus.

    Переходим в Grafana — Configuration — Data sources и нажимаем Add data source и выбираем Prometheus.

    В поле URL вводим адрес и порт по которому доступен Prometheus в нашем случаи это http://ip:9090

    Прокручиваем в низ страницы и нажимаем Save& test и после успешной проверки Prometheus будет добавлен в Grafana.

    Последний шаг установки — установка дашборда Node Exporter для сбора статистики с хост системы.

    Переходим в Dashboards (четыре квадрата в боковом меню) — Brows — и нажимаем Import.

    В поле импорта указываем ID 1860 и нажимаем на кнопку Load

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

    После того как вы нажмете кнопку Import вы попадает в установленный дашборд в котором уже будут отображаться собранные данные.

    Для того чтобы установить установить всю связку необходимо создать файл docker-compose.yml в который необходимо добавить следующее

    version: '3.3'
    
    networks:
      monitoring:
        driver: bridge
        
    volumes:
      prometheus_data: {}
    
    services:
      node-exporter:
        image: prom/node-exporter:latest
        container_name: node-exporter
        restart: unless-stopped
        volumes:
          - /proc:/host/proc:ro
          - /sys:/host/sys:ro
          - /:/rootfs:ro
        command:
          - '--path.procfs=/host/proc'
          - '--path.rootfs=/rootfs'
          - '--path.sysfs=/host/sys'
          - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
        ports:
          - 9100:9100
        networks:
          - monitoring
      grafana:
        image: grafana/grafana-enterprise
        container_name: grafana
        restart: unless-stopped
        ports:
          - 3000:3000
      prometheus:
        image: prom/prometheus:latest
        container_name: prometheus
        restart: unless-stopped
        volumes:
          - ./prometheus.yml:/etc/prometheus/prometheus.yml
          - prometheus_data:/prometheus
        command:
          - '--config.file=/etc/prometheus/prometheus.yml'
          - '--storage.tsdb.path=/prometheus'
          - '--web.console.libraries=/etc/prometheus/console_libraries'
          - '--web.console.templates=/etc/prometheus/consoles'
          - '--web.enable-lifecycle'
        ports:
          - 9090:9090
        networks:
          - monitoring

    И выполнить команду:

    docker-compose up -d