diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..92ac550 --- /dev/null +++ b/dockerfile @@ -0,0 +1,18 @@ +# docker pull squidfunk/mkdocs-material:latest +# docker build -t git.st1t.ru/thest1tch/mkdocs-material:latest -t git.st1t.ru/thest1tch/mkdocs-material:latest . +# docker push git.st1t.ru/thest1tch/mkdocs-material:latest + +FROM squidfunk/mkdocs-material:latest + +RUN apk add --no-cache py3-pip py3-pillow py3-cffi py3-brotli gcc musl-dev python3-dev pango build-base libffi-dev jpeg-dev libxslt-dev pngquant py3-cairosvg + +RUN pip install \ + mkdocs-material \ + mkdocs-material-extensions>=1.1 \ + mkdocs-minify-plugin>=0.2 \ + mkdocs-git-revision-date-plugin==0.3.1 \ + pymdown-extensions>=9.9.1 \ + mkdocs-git-revision-date-localized-plugin \ + mkdocs-glightbox \ + mkdocs-blogging-plugin \ + livereload diff --git a/docs/docker/grafana/index.md b/docs/docker/grafana/index.md new file mode 100755 index 0000000..3c645bc --- /dev/null +++ b/docs/docker/grafana/index.md @@ -0,0 +1,232 @@ +# Grafana + +Для запуска будет использовать Docker Compose. Я предпологаю, что уже есть настроенное окружение с Docker Compose, если нет, то сделать можно в [инструкции](docs/docker/install.md). + +Grafana — один из самых популярных инструментов мониторинга. В сочетании с Prometheus, Grafana предлагает мощный инструмент визуализации данных временных рядов. + +Чтобы запустить Prometheus и Grafana с помощью docker compose, нам нужно создать файл docker compose, определяющий отдельные сервисы (Prometheus и Grafana), используемые образы, запущенные порты и все остальное необходимое. + +Использование постоянных томов с Docker Compose +Нам нужно учитывать тот факт, что для Grafana требуется файл конфигурации и файл источника данных. Promemetheus также требует файла конфигурации. Для этого мы будем использовать смонтированные тома (постоянные тома), чтобы можно было легко вносить изменения в файлы, когда это необходимо. + +Создайте рабочий каталог с именем prometheus-grafana и внутри него создайте каталоги для хранения файлов конфигурации Prometheus и Grafana. + +mkdir -p ~/prometheus-grafana/{grafana,prometheus} + +Теперь перейдите в каталог grafana и создайте файлы конфигурации. Файл конфигурации Grafana по умолчанию предоставляется в официальном репозитории Github. Создайте файл с именем grafana.ini, скопируйте и вставьте конфигурацию grafana по умолчанию в этот файл и сохраните. + +Контент для конфигурации Grafana по умолчанию можно найти по адресу https://github.com/grafana/grafana/blob/master/conf/defaults.ini . Обратите внимание, что вы можете вносить изменения в файл конфигурации по умолчанию в соответствии с вашими потребностями. + +wget https://raw.githubusercontent.com/grafana/grafana/main/conf/defaults.ini -O ~/prometheus-grafana/grafana/grafana.ini vim ~/prometheus-grafana/grafana/grafana.ini + +После этого перейдите в папку Prometheus и создайте файл конфигурации prometheus, чтобы указать Prometheus, где брать метрики. Поскольку у меня нет отдельного сервера для мониторинга, отображаемые метрики относятся к самому серверу prometheus (localhost:9090) +```bash +nano ~/prometheus-grafana/prometheus/prometheus.yml +``` + +```yaml +global: + scrape_interval: 15s + scrape_timeout: 10s + evaluation_interval: 15s +alerting: + alertmanagers: + static_configs: + targets: [] + scheme: http + timeout: 10s + api_version: v1 + scrape_configs: + job_name: prometheus + honor_timestamps: true + scrape_interval: 15s + scrape_timeout: 10s + metrics_path: /metrics + scheme: http +static_configs: + targets: + localhost:9090 +``` +Вы можете открыть и изменить файл в соответствии с вашим вариантом использования. + +nano ~/prometheus-grafana/prometheus/prometheus.yml + +На данный момент Grafana не показывает, откуда брать данные. Нам нужно сказать ему, чтобы он достался от Прометея. Создайте файл с именем datasource.yml в каталоге grafana. + +nano ~/prometheus-grafana/grafana/datasource.yml + +apiVersion: 1 + +datasources: + +name: Prometheus +type: prometheus + +url: http://localhost:9090 + +isDefault: true + +access: proxy + +editable: true + +Дальнейшая модификация может быть выполнена: + +nano ~/prometheus-grafana/grafana/datasource.yml + +К настоящему времени у нас готовы все тома. Давайте продолжим, чтобы создать файл docker-compose. + +nano ~/prometheus-grafana/docker-compose.yml + +Содержимое должно выглядеть так, как показано ниже. Убедитесь, что вы изменили путь к файлам конфигурации в соответствии с путями в вашей системе. + +version: "3.7" + +networks: + +direct_net: + +name: direct_net + +driver: bridge + +ipam: + +config: + +subnet: 192.168.200.0/24 +services: + +prometheus: + +user: "$PUID:$PGID" + +container_name: prometheus + +image: prom/prometheus:latest + +restart: always + +networks: + +direct_net +ulimits: + +nofile: + +soft: 200000 + +hard: 200000 + +command: + +--config.file=/data/prometheus.yml + +--storage.tsdb.path=/data + +--storage.tsdb.retention.time=180d + +--web.enable-admin-api + +volumes: + +$DOCKER_APP/prometheus:/data + +/etc/timezone:/etc/timezone:ro + +/etc/localtime:/etc/localtime:ro + +grafana: + +user: "$PUID:$PGID" + +container_name: grafana + +image: grafana/grafana:latest + +restart: always + +networks: + +direct_net +security_opt: + +no-new-privileges:true +environment: + +GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-simple-json-datasource,grafana-worldmap-panel,grafana-piechart-panel" + +volumes: + +~/prometheus-grafana/grafana/data:/var/lib/grafana + +/etc/timezone:/etc/timezone:ro + +/etc/localtime:/etc/localtime:ro + +Если вам нужно указать конкретную версию Prometheus или Grafana, вы можете добавить номер версии, чтобы он выглядел так: + +services: + +prometheus: + +image: prom/prometheus:#get tag https://hub.docker.com/r/prom/prometheus/tags + +grafana: + +image: grafana/grafana:# Tags https://hub.docker.com/r/grafana/grafana/tags + +Также целью создания стека Prometheus/Grafana является мониторинг других сервисов, работающих, возможно, на разных серверах. Prometheus использует разные экспортеры для предоставления метрик, связанных с аппаратным обеспечением и ядром, в зависимости от отслеживаемого вами сервиса, наиболее распространенным из которых является node-exporter. Экспортеры устанавливаются на хостах, за которыми нужно следить. + +Поскольку у меня нет другого внешнего сервера, я собираюсь установить экспортер узлов на локальном компьютере. Для этого в конец файла ~/prometheus-grafana/docker-compose.yml добавляем: + +node-exporter: + +image: prom/node-exporter:latest + +container_name: monitoring_node_exporter + +restart: unless-stopped + +expose: + +9100 +Также я должен обновить файл prometheus.yml, чтобы добавить node-exporter в качестве цели. + +static_configs: + +targets: ['localhost:9090','node-exporter:9100'] +Или формат: + +static_configs: + +targets: + +localhost:9090 + +node-exporter:9100 + +Если у вас есть другие экспортеры из других сервисов, вы можете добавить в массив по подобию. + +Запуск контейнеров с помощью docker-compose +Перейдите в каталог данных: + +cd ~/prometheus-grafana + +Теперь все готово для запуска наших контейнеров. Чтобы запустить контейнеры, выполните команду, как показано ниже: + +docker compose up -d + +Проверте запуск контейнеров: + +docker compose ps + +Получите доступ к Prometheus и grafana из браузера, используя порты по умолчанию. Для Прометея мы используем http://serverip_or_hostname:9090. Если вы перейдете к status -> target , вы сможете увидеть статус своих целей, как показано ниже : + + + +Для Grafana зайдите http://serverip_or_hostname:3000и войдите в систему, используя имя пользователя и пароль, указанные в .ini файле конфигурации. Учетные данные по умолчанию: admin:admin + + + +Теперь вы можете продолжить и создать информационную панель для мониторинга. Одна вещь, которую я отметил, заключается в том, что я не мог получить метрики для использования при создании графиков, когда «доступ» в разделе «HTTP» источников данных был установлен на «сервер». Мне пришлось установить его как «браузер», как показано ниже: \ No newline at end of file diff --git a/docs/docker/grafana/prometheus.md b/docs/docker/grafana/prometheus.md new file mode 100755 index 0000000..3b10116 --- /dev/null +++ b/docs/docker/grafana/prometheus.md @@ -0,0 +1,3 @@ +# Prometheus + +Prometheus — это база данных временных рядов, использующая экспортеры для мониторинга различных серверов/сервисов \ No newline at end of file diff --git a/docs/docker/plex/radarr.md b/docs/docker/plex/radarr.md new file mode 100755 index 0000000..85b77a2 --- /dev/null +++ b/docs/docker/plex/radarr.md @@ -0,0 +1,5 @@ +# Radarr + +[![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Prowlarr/Prowlarr) +[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest) +[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/) \ No newline at end of file diff --git a/docs/docker/plex/sonarr.md b/docs/docker/plex/sonarr.md new file mode 100755 index 0000000..65b5294 --- /dev/null +++ b/docs/docker/plex/sonarr.md @@ -0,0 +1,5 @@ +# Sonarr + +[![](https://img.shields.io/github/stars/Prowlarr/Prowlarr?label=%E2%AD%90%20Stars&style=flat-square)](https://github.com/Prowlarr/Prowlarr) +[![](https://img.shields.io/github/v/release/Prowlarr/Prowlarr?label=%F0%9F%9A%80%20Release&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest) +[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/prowlarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/prowlarr/) \ No newline at end of file diff --git a/woodpacker.yml b/woodpacker.yml new file mode 100755 index 0000000..bfea819 --- /dev/null +++ b/woodpacker.yml @@ -0,0 +1,3 @@ +steps: + buildDocs: + image: woodpeckerci/plugin-mkdocs:latest \ No newline at end of file