Prometheus + Grafana + Alertmanager в Docker

В данной инструкции мы рассмотрим пример docker-compose файла для организации системы мониторинга на базе Prometheus. Мы получим:




  • Базу данных Prometheus и интерфейс для выполнения PromQL.
  • Визуализацию с помощью Grafana.
  • Сбор метрик через Node Exporter.
  • Мониторинг HTTP с использованием Blackbox.
  • Отправку уведомлений в Telegram с помощью Alertmanager.




Мы будем работать в среде Linux, хотя полученный файл docker-compose можно применять где угодно. Останавливаться подробно на описании docker-compose мы не будем.




Подготовка системы




Подразумевается, что у нас установлен Docker и docker-compose, в противном случае, можно воспользоваться инструкцией Установка Docker на Linux.




Создаем каталоги, где будем создавать наши файлы:




mkdir -p /opt/prometheus_stack/{prometheus,grafana,alertmanager,blackbox}




Создаем файл:




touch /opt/prometheus_stack/docker-compose.yml




Переходим в каталог prometheus_stack:




cd /opt/prometheus_stack




Дальше будем работать относительно него.




Prometheus + Node Exporter




Открываем файл:




vi docker-compose.yml




version: '3.9'

services:

  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus:/etc/prometheus/
    container_name: prometheus
    hostname: prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
    ports:
      - 9090:9090
    restart: unless-stopped
    environment:
      TZ: "Europe/Moscow"
    networks:
      - default

  node-exporter:
    image: prom/node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    container_name: exporter
    hostname: exporter
    command:
      - --path.procfs=/host/proc
      - --path.sysfs=/host/sys
      - --collector.filesystem.ignored-mount-points
      - ^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)
    ports:
      - 9100:9100
    restart: unless-stopped
    environment:
      TZ: "Europe/Moscow"
    networks:
      - default

networks:
  default:
    ipam:
      driver: default
      config:
        - subnet: 172.28.0.0/16




* в данном примере мы создаем 2 сервиса — prometheus и node-exporter. Также мы отдельно определили подсеть 172.28.0.0/16, в которой будут находиться наши контейнеры docker.




Создаем конфигурационный файл для prometheus:




vi prometheus/prometheus.yml




scrape_configs:
  - job_name: node
    scrape_interval: 5s
    static_configs:
    - targets: ['node-exporter:9100']




* в данном примере мы прописываем наш node-exporter в качестве таргета.




Запускаем контейнеры:




docker-compose up -d




Ждем несколько секунд и можно пробовать подключиться. Открываем браузер и переходим по адресу http://<IP-адрес сервера>:9090 — мы должны увидеть страницу Prometheus:







Переходим по адресу http://<IP-адрес сервера>:9100 — мы должны увидеть страницу Node Exporter:







Мы движемся в правильном направлении. Идем дальше.




Grafana




Добавим к нашему стеку графану.




Открываем файл:




vi docker-compose.yml




Добавляем:




version: '3.9'

services:
  ...
  grafana:
    image: grafana/grafana
    user: root
    depends_on:
      - prometheus
    ports:
      - 3000:3000
    volumes:
      - ./grafana:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    container_name: grafana
    hostname: grafana
    restart: unless-stopped
    environment:
      TZ: "Europe/Moscow"
    networks:
      - default

...




* по аналогии с другими сервисами, мы добавили сервис для графаны.




Перезапустим контейнеры:




docker-compose up -d




Открываем браузер и переходим по адресу http://<IP-адрес сервера>:3000 — мы должны увидеть стартовую страницу Grafana.




Для авторизации вводим admin / admin. После система потребует ввести новый пароль.




Настроим связку с Prometheus. Кликаем по иконке Configuration — Data Sources:







Переходим к добавлению источника, нажав по Add data source:







Среди списка источников данных находим и выбираем Prometheus, кликнув по Select:







Задаем параметры для подключения к Prometheus:







Сохраняем настройки, кликнув по Save & Test:







Добавим дашборд для мониторинга с node exporter. Для этого уже есть готовый вариант.




Кликаем по изображению плюса и выбираем Import:







Вводим идентификатор дашборда. Для Node Exporter это 1860:







Кликаем Load — Grafana подгрузит дашборд из своего репозитория — выбираем в разделе Prometheus наш источник данных и кликаем по Import:







Мы увидим страницу с настроенными показателями метрик. Можно пользоваться.




Настройка оповещений с AlertManager




В нашем примере мы настроим отправку уведомлений на телеграм бот. Само оповещение будет выполнять AlertManager, который интегрируется с Prometheus.




Для начала подготовим наш бот телеграм. Создадим нового — для этого открываем телеграм и ищем @my_id_bot:







Приложение покажет наш идентификатор. Записываем — он нам потребуется позже.




Теперь создаем бота. Ищем @BotFather:







Переходим в чат с найденным BotFather и запускаем бота:







Создаем бота, последовательно введя команду /newbot и отвечая на запросы мастера:







* в нашем примере мы создаем бота prometheus_alert с именем учетной записи DmoskPrometheusBot.




Переходим в чат с созданным ботом, кликнув по его названию:







Запускаем бота:







С ботом мы закончили. Переходим к docker.




Открываем наш файл docker-compose:




vi docker-compose.yml




И добавляем:




version: '3.9'
  ...

  alertmanager-bot:
    command:
      - --alertmanager.url=http://alertmanager:9093
      - --log.level=info
      - --store=bolt
      - --bolt.path=/data/bot.db
      - --telegram.admin=573454381
      - --telegram.token=5472129845:AAFTQRdujqIHgWHbbVtfYWQQvzvIN98KBqg
    image: metalmatze/alertmanager-bot:0.4.3
    user: root
    ports:
      - 8080:8080
    container_name: alertmanager-bot
    hostname: alertmanager-bot
    environment:
      TZ: "Europe/Moscow"
    restart: unless-stopped
    volumes:
      - ./data:/data
    networks:
      - default

  alertmanager:
    image: prom/alertmanager:v0.21.0
    user: root
    ports:
      - 127.0.0.1:9093:9093
    volumes:
      - ./alertmanager/:/etc/alertmanager/
    container_name: alertmanager
    hostname: alertmanager
    environment:
      TZ: "Europe/Moscow"
    restart: unless-stopped
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/etc/alertmanager/data'
    networks:
      - default

...




* мы добавили два сервиса — alertmanager-bot (телеграм бот для prometheus alertmanager) и alertmanager (система оповещений в prometheus).




Теперь открываем конфигурационный файл для prometheus:




vi prometheus/prometheus.yml




И добавим строки:




...

rule_files:
  - 'alert.rules'

alerting:
  alertmanagers:
  - scheme: http
    static_configs:
    - targets:
      - "alertmanager:9093"




* в данном примере мы указали, что наш сервер мониторинга должен использовать в качестве системы оповещения alertmanager, который доступен по адресу alertmanager:9093. Также мы добавили файл alert.rules с описанием правил оповещения.




Создаем файл с правилами оповещения:




vi prometheus/alert.rules




groups: 
- name: test
  rules:
  - alert: PrometheusTargetMissing
    expr: up == 0
    for: 0m
    labels:
      severity: critical
    annotations:
      summary: "Prometheus target missing (instance {{ $labels.instance }})"
      description: "A Prometheus target has disappeared. An exporter might be crashed. VALUE = {{ $value }}  LABELS: {{ $labels }}"




* в данном примере мы добавили правило, которое будет срабатывать при недоступности узла (node-exporter).




Переходим к конфигурированию alertmanager:




vi alertmanager/config.yml




route:
    receiver: 'alertmanager-bot'

receivers:
- name: 'alertmanager-bot'
  webhook_configs:
  - send_resolved: true
    url: 'http://alertmanager-bot:8080'




* данная конфигурация позволяет отправлять оповещения с помощью webhook на сервис alertmanager-bot:8080 (наш телеграм бот для alertmanager).




Запускаем новые сервисы docker:




docker-compose up -d




Открываем браузер и переходим по адресу http://<IP-адрес сервера>:9090 — на вкладке Alerts мы должны увидеть нашу настройку:







Попробуем проверить работу оповещения. Отключаем наш node exporter:




docker stop exporter




На телеграм должно прийти оповещение:







Отправка уведомлений настроена.




Blackbox exporter




Переходим к настройке мониторинга http сервисов. В нашем примере мы будем проверять работу сайта dmosk.ru.




Открываем наш файл docker-compose:




vi docker-compose.yml




Добавим в него:




version: '3.9'

services:
  ...

  blackbox:
    image: prom/blackbox-exporter
    container_name: blackbox
    hostname: blackbox
    ports:
      - 9115:9115
    restart: unless-stopped
    command:
      - "--config.file=/etc/blackbox/blackbox.yml"
    volumes:
      - ./blackbox:/etc/blackbox
    environment:
      TZ: "Europe/Moscow"
    networks:
      - default

  ...




* сервис blackbox является компонентом Prometheus для мониторинга сетевых сервисов по различным протоколам.




Открываем конфигурационный файл prometheus:




vi prometheus/prometheus.yml




И дописываем:




scrape_configs:
  ...
  - job_name: 'blackbox'
    metrics_path: /probe
    params:
      module: [http_2xx]
    static_configs:
      - targets:
        - https://www.dmosk.ru
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: blackbox:9115

...




* подобная конфигурация позволит создать дополнительное задание мониторинга сайта https://www.dmosk.ru.




Создаем конфигурационный файл blackbox:




vi blackbox/blackbox.yml




modules:
  http_2xx:
    prober: http
    timeout: 5s
    http:
      valid_http_versions: ["HTTP/1.1", "HTTP/2.0"]
      valid_status_codes: [200]
      method: GET
      no_follow_redirects: true
      fail_if_ssl: false
      fail_if_not_ssl: false
      fail_if_body_matches_regexp:
        - "Could not connect to database"
      fail_if_body_not_matches_regexp:
        - "Download the latest version here"
      fail_if_header_matches: # Verifies that no cookies are set
        - header: Set-Cookie
          allow_missing: true
          regexp: '.*'
      fail_if_header_not_matches:
        - header: Access-Control-Allow-Origin
          regexp: '(*|example.com)'
      tls_config:
        insecure_skip_verify: false
      preferred_ip_protocol: "ip4"
      ip_protocol_fallback: false




* во многом, данный пример взят с официальной страницы на Github.




Теперь откроем конфигурационный файл с описанием правил для предупреждений:




vi prometheus/alert.rules




Добавим:




  ...

  - alert: BlackboxSlowProbe
    expr: avg_over_time(probe_duration_seconds[1m]) > 5
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: Blackbox slow probe (instance {{ $labels.instance }})
      description: "Blackbox probe took more than 1s to completen  VALUE = {{ $value }}n  LABELS = {{ $labels }}"

  - alert: BlackboxProbeHttpFailure
    expr: probe_http_status_code <= 199 OR probe_http_status_code >= 400
    for: 0m
    labels:
      severity: critical
    annotations:
      summary: Blackbox probe HTTP failure (instance {{ $labels.instance }})
      description: "HTTP status code is not 200-399n  VALUE = {{ $value }}n  LABELS = {{ $labels }}"




* в данном примере мы создали два правила:




  • BlackboxSlowProbe — предупреждать, если сайт открывается дольше 5 секунд.
  • BlackboxProbeHttpFailure — реагировать, в случае получения кода ответа с ошибкой работы сайта (более 400).




Запускаем добавленный в докер сервис:




docker-compose up -d




Для визуализации мониторинга с помощью blackbox есть готовый дашборд в графане. Снова открываем страницу импорта:







Вводим идентификатор 7587 и выбираем источник (как делали при добавлении дашборда node exporter).




Источник https://www.dmosk.ru/miniinstruktions.php?mini=prometheus-stack-docker#prometheus



2022-10-02T19:55:44
DevOps

Qt 6.4 выходит с новыми функциями, внутренними улучшениями и многим другим

Qt 6.4 выходит с новыми функциями, внутренними улучшениями и многим другим

Qt — это кроссплатформенная объектно-ориентированная среда, широко используемая для разработки программ, использующих графические пользовательские интерфейсы.



Представлена ​​компания Qt запуск новой версии кв. 6.4, в котором продолжается работа по стабилизации и увеличению функциональности ветки Qt 6.

команда Кьюдобавлены дополнительные функциональные возможности для типов Qt Quick TableView и TreeView., помимо поддержки новых платформ, он содержит множество новых функций, некоторые из которых являются технологическими достижениями, а также множество внутренних улучшений.



Читать

Что делает Системный администратор?

Системный администратор, часто сокращенный как системный администратор или просто администратор, отвечает за поддержание сети компьютеров под контролем. Скорее всего, от вас не ожидают, что вы будете исправлять рабочие столы нескольких конечных пользователей, но вы будете тем человеком, который гарантирует, что все работает, в общей картине. Читать

Что интересного в облаке в 2022-23 годах — тенденции, на которые следует обратить внимание

Облачные вычисления уже были мощными до ситуации с COVID-19. Но за последние два года произошел беспрецедентный рост благодаря вызванному пандемией переходу на цифровые сервисы и гибридные рабочие пространства, охватывающие отрасли.

Ничто не может помешать этой тенденции в 2022 году и далее, учитывая успех облачных вычислений как надежной операционной модели в современном цифровом мире.

Компания Nubes обеспечит вас производительной облачной ИТ-инфраструктурой, подробнее тут, высокий уровень обслуживания — с каждым клиентом работает команда профессионалов с многолетним опытом, помогая решить любые технические задачи.

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

 

Основные тенденции облачных вычислений с 2022 года

Вот основные тенденции облачных вычислений, на которые следует обратить внимание с 2022 года:

1. Пограничные вычисления

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

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

Пограничные вычисления идеально подходят для обработки данных, зависящих от времени. ИТ-технологии ускоряют обработку данных, сокращают задержки и повышают безопасность, возможности подключения и поддержку конфиденциальности. Эта тенденция станет невероятным стимулом для организаций, которым нужна операционная эффективность.

Переход к «целевому подходу к облаку»

Миграция и внедрение облачных технологий были основой подхода, ориентированного на облако. Концепция обычно предполагает перенос большей части инфраструктуры организации на облачные платформы, размещенные в Google Cloud, Microsoft Azure или AWS. Но это часто приводило к неоднозначным результатам.

Опытные организации будут все больше отходить от этой концепции в 2022 году и далее. Вместо этого подход «под облако» выделяется как более реалистичный. При таком практическом менталитете ИТ-бизнес функционирует, а руководители компаний будут более стратегически подходить к:

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

Продолжение использования технологий по требованию

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

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

 

2. GitOps теперь является стандартом непрерывного развертывания

GitOps выпускает управление облачными рабочими нагрузками с помощью знакомого рабочего процесса на основе Git. Рассмотрение Git как основного источника истины примиряет государство. Сочетание этого с возможностью быстрого отката решения делает GitOps практичным и мощным подходом.

Доступные варианты реализации GitOps включают в себя Rancher Fleet, Google Anthos Config Management, ArgoCD и Flux CD.

В 2022 году и далее GitOps начнет поддерживать многокластерные и многопользовательские развертывания. Следовательно, организациям будет легко управлять кластерами Kubernetes в гибридных средах или на границе. Таким образом, это, скорее всего, станет золотым стандартом непрерывного развертывания.

Безопасность, устойчивость и отказоустойчивость становятся основой облачных разговоров

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

Безопасность

Более конфиденциальные данные и критические рабочие нагрузки находятся в облаке. Таким образом, бизнес-лидеры и CISO сейчас стратегически создают облачные среды и переносят рабочие нагрузки, чтобы наилучшим образом защитить свои данные. Все больше организаций будут переходить от реактивных к проактивным ИТ-средам, которые предвидят и устраняют проблемы в режиме реального времени.

Отказоустойчивость

Клиенты никогда не стесняются выражать разочарование, когда зависящее устройство или услуга выходят из строя из-за сбоя в работе облачного провайдера. Поскольку вопрос заключается в том, «когда», а не «если» произойдет следующее отключение, руководители бизнеса теперь уделяют больше внимания готовности ИТ и действиям по исправлению, чтобы уменьшить последующее воздействие на потребителей.

Устойчивость

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

  • Как спроектировать и внедрить облако для достижения нулевых целей, таких как углеродная нейтральность.
  • Как сократить накладные и эксплуатационные расходы с помощью автоматизации.
  • Как облачные технологии могут помочь или помешать усилиям по энергосбережению.

 

3. Kubevirt становится мейнстримом

Этот проект с открытым исходным кодом позволяет Kubernetes организовывать виртуальные машины как контейнеры. Одновременный запуск контейнеров и виртуальных машин позволяет клиентам интегрировать современные приложения на основе микросервисов с устаревшими рабочими нагрузками. Клиенты также получают выгоду от простых рабочих процессов DevOps.

В настоящее время Kubevirt является неотъемлемой частью Google Anthos, Kubernetes, управляемых платформой 9, Rancher’s Harvester и Red Hat OpenShift Virtualization. Но ожидайте резкого роста его внедрения и интеграции, когда виртуальные машины будут рассматриваться как первоклассные граждане.

Привнесение интеллекта в облачное пространство

Сфера применения облачных вычислений выходит за рамки хранения данных. В настоящее время компании используют интеллектуальные облачные решения для извлечения информации из доступных данных и повышения общей эффективности.

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

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

Наконец, многие организации в настоящее время предпочитают передавать свои ИТ-функции на аутсорсинг поставщикам. Делегирование ИТ-функций сокращает операционные расходы и позволяет организациям сосредоточиться на своей основной услуге или продукте. Однако при выборе аутсорсинга необходимо учитывать ваши конфиденциальные технологии и данные.



2022-09-29T19:52:22
Облако

Должен ли ваш бизнес использовать пространство в стойке colocation?

По мере того как ваш бизнес становится больше, вы можете браться за более крупные и сложные проекты. Возможно, у вас большая команда сотрудников или вы даже работаете в нескольких филиалах. Все это означает, что ваша ИТ-инфраструктура становится все более сложной.

Если вы хотите расширить свои ИТ-системы, но при этом хотите что-то недорогое, арендуйте стеллажи colocation в Дата-Центре Miran по ссылке https://miran.ru/services/colocation/rentrack, Используются серверные шкафы объемом 47U, шириной 19 дюймов и глубиной 1200 см. В каждом шкафу функциональный кодовый замок и два независимых розеточных блока (PDU). Стеллажи colocation от Дата-Центре Miran могут стать подходящим вариантом для вашего бизнеса.

 

Что такое colocation?

Colocation (также известный как CoLo) — это когда вы арендуете пространство для своих серверов у третьей стороны, используя центр обработки данных colocation, а не размещаете свои физические серверы в своих помещениях.

Это может быть более доступным для бизнеса, потому что вам не нужно вкладывать средства в выделенную комнату связи, платить за охлаждение или управлять каким-либо обслуживанием. Если пространство дорого, переход на пространство для стеллажей colocation может освободить место, предоставив вам больше возможностей без необходимости переезда.

Более того, аренда места в стойке в центре обработки данных может значительно снизить ваши расходы на электроэнергию, поскольку вы не будете платить за питание своих локальных серверов. Поскольку затраты на электроэнергию стремительно растут, сейчас может быть идеальное время для перехода на пространство для стеллажей colocation.

 

В чем преимущества услуг colocation?

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

Поскольку все больше предприятий работают на гибридной или удаленной основе, colocation может стать эффективным ресурсом, поскольку вам не нужно беспокоиться о постоянном обслуживании своих серверов или коммуникационных комнат.

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

 

Является ли colocation тем же, что и облачные вычисления?

Между colocation и облачными вычислениями есть сходство, поскольку в обоих сценариях у вас нет физического сервера в вашем офисе. Однако они отличаются тем, как данные управляются и надежно хранятся.

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

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

Важно отметить, что когда дело доходит до ИТ-инфраструктуры, вам не нужно выбирать между облачными вычислениями или размещением. Вместо этого многие предприятия приветствуют гибридный подход, который позволяет им извлекать выгоду из гибкости и гибкости, соответствующих потребностям их бизнеса. Например, некоторым компаниям может потребоваться использовать физические серверы (а не облачные решения) в целях соблюдения требований.



2022-09-29T14:16:06
Сервер

WireGuard Site to Site VPN Between MikroTik RouterOS 7

WireGuard is a free, open source, secure and high-speed modern VPN solution. WireGuard is extremely easy to implement but utilizes state-of-the-art cryptography. WireGuard can be used as either Client-Server VPN technology or Site to Site VPN technology.




From the RouterOS 7, MikroTik introduces WireGuard VPN as their native package. So, who are using RouterOS 7 can use WireGuard VPN and can implement both client-server and site to site VPN with WireGuard free VPN server.




In my previous article, I discussed how to configure client-server free VPN server with WireGuard and how to connect windows client with WireGuard VPN. In this article, I am going to show how to setup a site-to-site WireGuard VPN between two MikroTik RouterOS 7.




Site to Site WireGuard VPN Network Diagram




In this article, we are going to implement a site-to-site VPN like the following image where two offices are connected over WireGuard site to site VPN service.



Site to Site Wiregurard VPN
Site to Site Wiregurard VPN



Note: in the above diagram, we are using private IP addresses in public interface for demo purpose. In live network, you should replace these IP Addresses with your public IP Addresses.




Site to Site WireGuard VPN Configuration in RouterOS 7




According to the above network diagram, we will now configure site to site WireGuard VPN in MikroTik RouterOS. But before going to start WireGuard VPN, you should have RouterOS 7 basic configuration which includes WAN, LAN, DNS, Gateway and Masquerade setup.




If you are new in MikroTik RouterOS, feel free to study another article about how to configure MikroTik RouterOS 7 first time and complete WAN, LAN, DNS and other Setup and then follow our WireGuard configuration steps.






If you have existing network and RouterOS 7 is running there, don’t forget to replace my demo IP information according to your existing one. You just follow my steps keeping your existing IP information.




We will now do configurations those are required for WireGuard configuration. For WireGuard configuration we need to do enabling WireGuard, Creating Peers, assigning IP address in WireGuard virtual interface and doing routing over virtual interface to communicate among LAN devices.




Enabling WireGuard in MikroTik RouterOS  




WireGuard package is installed by default in MikroTik RouterOS 7. So, you will get a WireGuard menu item in Winbox by default. To enable WireGuard in R1 Router, do the following steps.




  • Login to R1 Router of Office 1 with Winbox using full access user credentials.
  • Click on WireGuard menu item from Winbox menu bar. WireGuard window will appear.
  • Click on PLUS SIGN (+) to create a new WireGuard interface. New Interface window will appear.
  • Put an interface name in Name input field or you can keep the default name wireguard1.
  • Click Apply button. Public Key and Private Key will be generated as soon as you click the Apply button. The Public Key will be required when WireGuard Peer will be created in R2 Router (Office 2 Router).
  • Click OK button.




Similarly, enable WireGuard in R2 Router of Office 2 Router and create a new WireGuard interface. Your configurations will look like the following image.



Enabling WireGuard in RouterOS 7
Enabling WireGuard in RouterOS 7



Assigning IP Address on WireGuard Virtual Interface




After enabling WireGuard in RouterOS 7, a new virtual interface will be created in each Router. We will now assign IP address in each WireGuard interface so that both interfaces can communicate with each other after establishing WireGuard tunnel.




To assign IP address on WireGuard virtual interface in R1 Router, issue the following steps.




  • From Winbox, go to IP > Addresses menu item. Address List window will appear.
  • Click on PLUS SIGN (+) to add new address. New Address window will appear.
  • Put an IP address (in this article: 10.10.10.1/30) that you to assign for WireGuard VPN tunnel in Address input field.
  • Choose WireGuard interface (in this article: wireguard1) from Interface dropdown menu.
  • Click Apply and OK button.




Similarly, add the second IP address on the WireGuard virtual interface of R2 Router at office 2. According to the above diagram, the second router’s IP will be 10.10.10.2/30.




Creating WireGuard Peers Between Two RouterOS




After assigning IP addresses on WireGuard virtual interface, we will now configure peers in both Routers. To create peers in R1 Router of office1, issue the following steps.






  • From Winbox, click on WireGuard menu item and then click on Peers tab.
  • Click on PLUS SIGN (+). New WireGuard Peer window will appear.
  • Choose WireGuard interface (wireguard1) from Interface dropdown menu.
  • Put the Public Key that was generated at R2 Router when WireGuard was enabled, in Public Key input field.
  • Put the Public IP address (For demo purpose, in this article: 172.26.0.2) of R1 Router in Endpoint input field. 
  • If you don’t change the port number (default is 13231), no need to change the Endpoint Port but if you change, put the listen port of R1 Router in Endpoint Port input field.
  • Put the IP blocks (in this article: 10.10.10.0/30 for tunnel interface and 192.168.26.0/24 LAN IP Block of R2 Router) those will be passed over WireGuard VPN Tunnel in Allowed Address input field. If you want to allow all IP addresses, put 0.0.0.0/0 in this field.
  • In Persistent Keepalive input, put a time value in seconds (for 10 second: 00:00:10) when the tunnel will be checked and keep lived.
  • Click Apply and OK button.



Router1 Peer Configuration
Peer Configuration R1 Router



Similarly, create peer in R2 Router and information accordingly. Be careful to put Public Key, Endpoint and Endpoint Port of R1 Router. Also be careful to put IP block of R2 Router’s LAN block. The configuration should be like the following image.



Router 2 Peer Configuration
Peer Configuration in R2 Router



Static Routing Configuration Between RouterOS




At the last step of site-to-site WireGuard VPN configuration, we will configure static routing between R1 and R2 Router so that R1 Router’s LAN can access R2 Router’s LAN and vice versa.






To configure static routing in R1 Router, do the following steps.




  • From Winbox, go to IP > Routes menu item. Route List window will appear.
  • Click PLUS SIGN (+) to add new route. New Route window will appear.
  • In Dst. Address input field, put the LAN IP block (in this article: 192.168.26.0/24) of R2 Router.
  • Put the IP address (10.10.10.2) assigned on WireGuard interface of R2 Router in Gateway input field.
  • Click Apply and OK button.



Static Routing Configuration in Router1
Static Routing Configuration in R1 Router



Similarly, configure static routing in R2 Router and put the LAN IP block (in this article: 192.168.25.0/24) of R1 Router and WireGuard interface IP address (10.10.10.1) of R1 Router.




How to configure site to site WireGuard VPN between two RouterOS has been discussed in this article. I hope, you will now be able to configure site to site WireGuard VPN in MikroTik RouterOS. However, if you face any issue to configure site to site WireGuard VPN in MikroTik RouterOS, feel free to discuss in comment or contact me from Contact page. I will try my best to stay with you.



2022-09-29T10:13:13
MikroTik Router Tutorials & Guides