Как мы используем OmniEdge Github Action для мониторинга наших серверов

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

Зачем нужен мониторинг

Мы используем 11 публичных суперузлов, расположенных в Огайо, Орегоне, Франкфурте, Токио, Сиднее, Мумбаи, Сан-Паулу, Милане, Сингапуре, Гонконге и Тайбэе.

Все серверы работают в отдельном облаке AWS и GCP, открывая UDP порт для сервера, помогая узлам omniedge соединяться peer-to-peer, а также в качестве запасного варианта для ретрансляции трафика между узлами в случае, если обход NAT не удается и прямое соединение не может быть установлено. Таким образом, сервер supernode очень важен для пользователей по всему миру.

Как осуществлять мониторинг

Поскольку сервер открывает только один порт udp, проверить его состояние легко, выполнив команду:

nc -v -w 2 -z -u 1.2.3.4 80  #scan port 80 of IP 1.2.3.4
Войти в полноэкранный режим Выйти из полноэкранного режима

Netcat (или сокращенно nc) — это простой, но мощный сетевой инструмент командной строки, используемый для выполнения любых операций в Linux, связанных с TCP, UDP или UNIX-доменными сокетами. Его довольно легко установить:

$ yum install nc                  #CentOS/RHEL
$ dnf install nc                  #Fedora
$ sudo apt-get install Netcat     #Debian/Ubuntu
Войти в полноэкранный режим Выйти из полноэкранного режима

Команда использует различные параметры:

  • -v включает режим verbose
  • -w задает таймаут для соединения, которое не может быть установлено.
  • -u сканирует UDP порт.
  • -z задает nc для простого сканирования на наличие слушающих демонов, без фактической отправки им каких-либо данных.

Как подключить все сервера в одной интрасети

1.Зарегистрируйте аккаунт OmniEdge, и система создаст для вас виртуальную сеть, получит ID виртуальной сети и создаст ключ безопасности в Dashboard.

2.Установите Docker и запустите команду с вашим собственным ключом безопасности и идентификатором виртуальной сети на всех серверах:

sudo docker run -d 
  -e OMNIEDGE_SECURITYKEY=Security-key 
  -e OMNIEDGE_VIRUTALNETWORK_ID="Virtual Network ID" 
  --network host 
  --privileged 
  omniedge/omniedge:latest
Войти в полноэкранный режим Выйти из полноэкранного режима

3.Вы увидите, что все сервера отображаются в списке на панели виртуальной сети.

Используйте Github action with для мониторинга

Мы соединили все суперузлы в интранет, и мы хотели бы осуществлять внутреннюю проверку. Поэтому мы используем действие GitHub во внутренней сети, чтобы проверить состояние через одноранговое соединение без внутреннего IP, а не публичного IP.

Вот шаги по настройке действия GitHub для проверки статуса и обновления readme.

  1. Создайте рабочий процесс в своем репозитории GitHub
mkdir -p /.github/workflows/check-server-status.yml
Войдите в полноэкранный режим Выйти из полноэкранного режима

2.Установите переменную окружения, переключитесь на ваш адрес репо/settings/secrets/actions, создайте Repository secrets с именем:

  SERVER_IPs #Servers IP and name with format: server_name, IP
  PORT # 80
  OMNIEDGE_SECURITY_KEY #OmniEdge security_key
  OMNIEDGE_VIRTUALNETWORK_ID #OmniEdge Virtual network ID
Войти в полноэкранный режим Выйти из полноэкранного режима

3.Зарегистрируйте аккаунт OmniEdge, чтобы получить OMNIEDGE_SECURITY_KEY и OMNIEDGE_VIRTUALNETWORK_ID из Dashboard, заполните их в шаге 2.

4.Отредактируйте файл check-server-status.yml, добавьте OmniEdge for GitHub Action.

- name: OmniEdge for Github Action
  uses: omniedgeio/github-action@v1
  with:
    securitykey: ${{ secrets.OMNIEDGE_SECURITY_KEY }}
    virtualnetworkid: ${{ secrets.OMNIEDGE_VIRTUALNETWORK_ID }}
Войти в полноэкранный режим Выйти из полноэкранного режима

5.Установите расписание проверки, здесь мы делаем это каждые 5 часов.

- cron: "0 */5 * * *"
Войти в полноэкранный режим Выйти из полноэкранного режима

6.Вы можете скопировать весь рабочий процесс по ссылке https://github.com/omniedgeio/server-status/blob/main/.github/workflows/check-server-status.yml.

7.Внесите ваш коммит в репо, и вы увидите, что действие запущено, а новый README.md будет сгенерирован через 1 минуту.

Да, в Readme показано, что HongKong не в сети, но на самом деле это не так. Команда nc не всегда работает правильно, если у вас есть лучшая команда, дайте мне знать, пожалуйста.

Спасибо.

Вот весь запущенный репо: https://github.com/omniedgeio/server-status

Оцените статью
devanswers.ru
Добавить комментарий