From 57101dafcb5f8060c5d213c1d4ffde5d8fdfa89a Mon Sep 17 00:00:00 2001 From: SergeyFM Date: Sat, 18 Jan 2025 14:46:13 +0300 Subject: [PATCH 1/4] compose.yaml fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. исправлен путь до geoip.mmdb для grafana 2. исправлен путь до сертификатов для nginx --- examples/pilot/compose.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/pilot/compose.yaml b/examples/pilot/compose.yaml index af6f80f..142560c 100644 --- a/examples/pilot/compose.yaml +++ b/examples/pilot/compose.yaml @@ -118,7 +118,7 @@ services: condition: service_healthy volumes: - ./ssl:/gmonit/ssl - - ./***.mmdb:/gmonit/geoip.mmdb + - ./geoip.mmdb:/gmonit/geoip.mmdb <<: *logging collector: @@ -174,7 +174,7 @@ services: restart: unless-stopped image: umputun/nginx-le:v1.7.0 volumes: - - ./nginx/ssl:/etc/nginx/ssl + - ./ssl:/gmonit/ssl - ./nginx/conf.d-le:/etc/nginx/conf.d-le - ./nginx/templates:/etc/nginx/templates ports: @@ -244,6 +244,7 @@ services: NRIA_IDENTITY_URL: https://${COLLECTOR_DOMAIN}/infra/identity-api NRIA_CA_BUNDLE_FILE: ${CA_FILE} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + # не работает на самоподписанных сертификатах # NRIA_SELF_INSTRUMENTATION: newrelic # NRIA_SELF_INSTRUMENTATION_APM_HOST: ${COLLECTOR_DOMAIN} From 5a08184b932eb7e80fc4ccffa7afc4c7d3fac368 Mon Sep 17 00:00:00 2001 From: SergeyFM Date: Sat, 18 Jan 2025 15:02:15 +0300 Subject: [PATCH 2/4] nginx service.conf.template fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Заключил названия переменных в скобки, чтобы они разрешались 2. Добавил подробностей по ssl протоколам 3. отключил ssl_stapling, чтобы не было лишних warnings в логах --- .../pilot/nginx/templates/service.conf.template | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/examples/pilot/nginx/templates/service.conf.template b/examples/pilot/nginx/templates/service.conf.template index 3a34a47..c5da869 100644 --- a/examples/pilot/nginx/templates/service.conf.template +++ b/examples/pilot/nginx/templates/service.conf.template @@ -13,11 +13,18 @@ server { # https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass resolver 127.0.0.11; - ssl_certificate SSL_CERT; - ssl_certificate_key SSL_KEY; - ssl_trusted_certificate SSL_CHAIN_CERT; + ssl_certificate ${SSL_CERT}; + ssl_certificate_key ${SSL_KEY}; + ssl_trusted_certificate ${SSL_CHAIN_CERT}; - # in caddy it's also unlimited, leaving it as is for now + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + + ssl_stapling off; + ssl_stapling_verify off; + + + # in caddy it's also unlimited, leaving it as is for now client_max_body_size 0; location / { From a23840376c6d6ff5413c046c84e7960c3820b6b6 Mon Sep 17 00:00:00 2001 From: SergeyFM Date: Sat, 18 Jan 2025 15:31:09 +0300 Subject: [PATCH 3/4] .env.example fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Указал версию, для которой этот дистрибутив проверялся 2. Заменил CA_FILE на pem фал 3. Отформатировал файл для ясности --- examples/pilot/.env.example | 54 +++++++++++-------------------------- 1 file changed, 16 insertions(+), 38 deletions(-) diff --git a/examples/pilot/.env.example b/examples/pilot/.env.example index dcece7d..0b587bd 100644 --- a/examples/pilot/.env.example +++ b/examples/pilot/.env.example @@ -1,48 +1,26 @@ +#Файл конфигурации GMonit. Пожалуйста переименуйте его в ".env". + # Версия GMonit -TAG= +TAG=v3-3135 # GMonit linense key -LICENSE_KEY= - -# random string -SECRET_TOKEN= - -# Пароль для логина admin применяется при первом запуске -GRAFANA_ADMIN_PASSWORD=password - -# В этом примере мы используeм домены: - -GRAFANA_DOMAIN=gmonit.example -COLLECTOR_DOMAIN=gmonit-collector.example +LICENSE_KEY=xxx #укажите здесь лицензионный ключ GMonit -# Чтобы открыть их в браузере нужно добавить в файл /etc/hosts на вашей машине: -# # /etc/hosts -# 127.0.0.1 gmonit.example -# 127.0.0.1 gmonit-collector.example +# random string - укажите случайную строку +SECRET_TOKEN=AAZtUvIaAagdlZGl0aW9uagplbnRlcnByaXN -# Для этих доменов выпущен самоподписанный сертификат на 100 лет. -# Команды для выпуска сертификата вы найдете в директории ./ssl +# Passwords +GRAFANA_ADMIN_PASSWORD=123456789 #пароль для admin в Grafana +CLICKHOUSE_PASSWORD=123456789 #задайте пароль для БД Clickhouse +POSTGRES_PASSWORD=123456789 #задайте пароль для БД PostgreSQL +COLLECTOR_DATASOURCE_PASSWORD=123456789 #задайте пароль для коллектора -# ./ssl внутри контейнеров смонтирована в /gmonit/ssl +# Domains - задайте домены и обеспечьте их разрешение +GRAFANA_DOMAIN=gmonit.example #домен для интерфейса +COLLECTOR_DOMAIN=gmonit-collector.example #домен для коллектора -CA_FILE=/gmonit/ssl/rootCA.crt +#Certificates - сгенерированные сертификаты +CA_FILE=/gmonit/ssl/rootCA.pem CERT_FILE=/gmonit/ssl/server.crt KEY_FILE=/gmonit/ssl/server.key -# Вы можете настроить в вашем DNS произвольные домены и выпустить собственные сертификаты: - -# GRAFANA_DOMAIN=gmonit.company.ru -# COLLECTOR_DOMAIN=gmonit-collector.company.ru -# CA_FILE=/gmonit/ssl/company-rootCA.crt -# CERT_FILE=/gmonit/ssl/company-server.crt -# KEY_FILE=/gmonit/ssl/company-server.key - -#== Обязательно установите пароли! ==# -# ClickHouse -CLICKHOUSE_PASSWORD= - -# Postgres -POSTGRES_PASSWORD= - -# COLLECTOR DATASOURCE -COLLECTOR_DATASOURCE_PASSWORD= From 6448cdc400ce1d63655707498129a121a84a9eb6 Mon Sep 17 00:00:00 2001 From: SergeyFM Date: Sat, 18 Jan 2025 15:47:51 +0300 Subject: [PATCH 4/4] installation_instruction added MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил инструкцию по инсталляции этого дистрибутива GMonit. --- examples/pilot/installation_instruction.md | 213 +++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 examples/pilot/installation_instruction.md diff --git a/examples/pilot/installation_instruction.md b/examples/pilot/installation_instruction.md new file mode 100644 index 0000000..ad8dd0a --- /dev/null +++ b/examples/pilot/installation_instruction.md @@ -0,0 +1,213 @@ +# Инструкция по подготовке и запуску GMonit + +В этой инструкции описывается процесс подготовки и запуска GMonit с использованием самоподписанных сертификатов. Используется Docker Compose. + +## Содержание +- Настройка доменов и файла `.env` с параметрами GMonit. +- Добавление доменов в файлы `hosts`, если отсутствует DNS. +- Генерация самоподписанныч сертификаты и настроить их использование. +- Установка Docker и Docker Compose. +- Авторизация в Yandex Container Registry. +- Скачивание и подготовка базы данных GeoIP. +- Запуск GMonit и проверка его работоспособности. + +После завершения всех шагов можно приступить к установке агентов сбора данных. + +## Шаги настройки + +### 1. Настройка доменов +Прописать в файле `.env` заранее созданные домены: +- Для коллектора +- Для Grafana + +### 2. Настроить .env файл +- `TAG` — версия GMonit +- `LICENSE_KEY` — ключ лицензии GMonit. +- `SECRET_TOKEN` — случайная строка (например, 32-значный алфавитно-цифровой токен). +- `GRAFANA_ADMIN_PASSWORD` — пароль для авторизации в UI GMonit. +- `CLICKHOUSE_PASSWORD` — пароль для базы данных ClickHouse. +- `POSTGRES_PASSWORD` — пароль для базы данных PostgreSQL. +- `COLLECTOR_DATASOURCE_PASSWORD` — пароль для доступа к источнику данных коллектора. +- `GRAFANA_DOMAIN` — grafana.address домен пользовательского интерфейса. +- `COLLECTOR_DOMAIN` — collector.address домен коллектора сбора данных. + +### 3. Добавить домены для разрешения (если без DNS) +- На машине пользователя (Windows) добавить домены в `C:\Windows\System32\drivers\etc\hosts`. +- На Linux машине: `sudo nano /etc/hosts`. + +### 4. Выпустить Root Certificate Authority (CA) +- Если используются существующие сертификаты, пропустите этот и следующий шаги. +```bash +# Всё на Linux машине +# Создать директорию для сертификатов +mkdir ~/certificates +cd ~/certificates + +# Сгенерировать Root CA private key +openssl genrsa -out rootCA.key 2048 + +# Выпустить Root CA certificate с увеличенным сроком действия +openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1825 -out rootCA.pem -config cert.conf + +# Сделать Root CA certificate в crt +openssl x509 -in rootCA.pem -outform pem -out rootCA.crt +``` + +### 5. Выпустить SSL-сертификат +- Создать конфигурационный файл. +```bash +nano cert.conf + +# Пример содержимого: + +[req] +default_bits = 2048 +default_md = sha256 +distinguished_name = req_distinguished_name +req_extensions = v3_req +prompt = no + +[req_distinguished_name] +C = RU +ST = Moscow +L = Moscow +O = GMonitOrg +CN = *.ubuntu24 + +[v3_req] +keyUsage = keyEncipherment, dataEncipherment, digitalSignature +extendedKeyUsage = serverAuth, clientAuth +subjectAltName = @alt_names + +[alt_names] +DNS.1 = *.ubuntu24 +DNS.2 = ubuntu24 +DNS.3 = ui.ubuntu24 +DNS.4 = collector.ubuntu24 +``` + +- Выпустить сертификат. +```bash +# Сгенерировать server private key +openssl genrsa -out server.key 2048 + +# Создать Certificate Signing Request (CSR) с использованием cert.conf +openssl req -new -key server.key -out server.csr -config cert.conf + +# Подписать CSR созданным Root CA с увеличенным сроком действия +openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 1825 -sha256 -extfile cert.conf -extensions v3_req +``` + +### 6. Разместить файлы сертификатов +- Скопировать созданные сертификаты в директорию `gmonit/ssl` дистрибутива GMonit. +- Файл `rootCA.crt` на сервере `sudo cp rootCA.crt /usr/local/share/ca-certificates/` -> `sudo update-ca-certificates`. +- Файл `rootCA.crt` скопировать на Windows-машину пользователя и установить (Install Certificate -> Local Machine -> Trusted Root Certification Authorities). + +### 7. Прописать пути к сертификатам +- Проверить, что эти сертификаты есть в `gmonit/ssl` папке. +```bash +# Файл .env +CA_FILE=/gmonit/ssl/rootCA.pem +CERT_FILE=/gmonit/ssl/server.crt +KEY_FILE=/gmonit/ssl/server.key +``` + +### 8. Установить Docker+Compose +- Проверить установку, если есть, пропускаем этот шаг. +```bash +docker compose version +``` +- Установить докер. +```bash +# Подготовить систему +sudo apt-get update +sudo apt-get 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 Engine +sudo apt-get update +sudo apt-get install docker-ce docker-ce-cli containerd.io + +# Добавить пользователя в группу docker (выйдите из системы и зайдите снова после этого) +sudo usermod -aG docker $USER + +# Проверить плагин Docker Compose +docker compose version +``` + +### 9. Авторизация в Yandex Container Registry +- Скопировать ключ Яндекс в файл `/home/user/key.json`. +- Произвести логин. +```bash +cat key.json | docker login \ + --username json_key \ + --password-stdin \ + cr.yandex +``` +- Проверить, что ключ сохранился. +```bash +cat ~/.docker/config.json +``` +- После успешного выполнения key.json можно с машины удалить. + +### 10. Скопировать gmonit каталог на сервер +- `gmonit` скопировать в `/home/user/`. + +### 11. Загрузить базу данных GeoIP +- Проверить текущую версию базы данных и ссылку на `https://db-ip.com/db/download/ip-to-city-lite`. +- Скачать базу данных на сервере. +```bash +# Зайти в папку gmonit +cd ~/gmonit + +# Загрузить базу данных GeoIP +wget https://download.db-ip.com/free/dbip-city-lite-2025-01.mmdb.gz + +# Распаковать скачанный файл +gzip -d *.mmdb.gz + +# Переименование файла для использования в GMonit +mv "$(find . -maxdepth 1 -name '*.mmdb' | head -n 1)" geoip.mmdb +``` + +### 12. Запуск приложения +```bash +cd ~/gmonit + +# Обновить образы Docker (опционально) +docker compose pull + +# Запустить контейнеры и ожидать их готовности +docker compose up --wait +``` +## Проверить, что работает +- Проверить статус контейнеров. +```bash +docker compose ps +``` +- Зайти на сервер, убедиться, что открывается. +```bash +https://grafana.address +``` +- Такой запрос к коллектору должен вернуть JSON с версией. +```bash +https://collector.address/about +``` + +## Редкации и проверка +Редакция инструкции от 18 января 2025 года. +Проверено на Ubuntu 24.04.1 LTS. 18 января 2025 года. +