Skip to content

Инструмент проверки сетевой связанности элементов контура на уровне портов и протоколов, работы DNS на PowerShell

License

Notifications You must be signed in to change notification settings

msklv/PSConnectivityCheck

Repository files navigation

PSConnectivityCheck

Описание

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

Проверки

  • Доступность удаленного TCP порта
  • Доступность порта по HTTP или HTTPS
  • Работа DNS

Алгоритм работы

  • Поиск тестов по Имени хоста или Алиасам
    • Если нет совпадений, то берем из _default_ секции
  • Разрешение DNS имен в Тестах
  • Выполнение проверок в сл. порядке:
    • PORT - Открытость TCP порта
    • HTTP - Проверка протокола HTTP и кода ответа из диапазона 2xx или 3xx
    • HTTPS - Проверка протокола HTTPS, валидация защищенного соединения и кода ответа из диапазона 2xx или 3xx
  • Формирование отчета в формате Markdown

Требования к среде исполнения

  • PowerShell 6, лучше 7 и выше
  • OS
    • AltLinux p8, лучше p10 и выше
    • AstraLinux 1.7 и выше
    • MacOS 10.15 и выше
    • Windows 2012 R2 и выше
  • Powershell Module powershell-yaml. Описание

Архитектура

architecture architecture

Структура проекта

.
├── doc                          # папка с дополнительной документацией
├── PSConnectivityCheck.ps1      # основной скрипт
├── EnvironmentConnectivityExample.yaml  # пример конфигурации окружения
├── EnvironmentConnectivity.yaml # файл конфигурации окружения по умолчанию
├── DemoConnectCheckReport.md    # пример отчета

Использование

# Запуск скрипта с указанием файла конфигурации окружения
.\PSConnectivityCheck.ps1 -EnvironmentConfigFilePath .\EnvironmentConnectivityExample.yaml
# Если не указать путь к файлу конфигурации, 
#   то будет использован файл по умолчанию - EnvironmentConnectivity.yaml

Формат конфигурации окружения

---
HostBusinessName1:        # Основное имя хоста
  alias:                  # Не обязательный параметр, альтернативные имена хоста
    - Name1.domain.ru     # Альтернативное DNS имя
    - AltName1            # Альтернативное DNS имя
  services:               # Обязательный параметр вместе с одним из протоколов
    port:
      - 10.0.0.4:         # Можно указывать несколько портов для проверки
          - 111           # TCP Порт
          - 444
      - hostName2: 222
    http:
      - 10.0.0.3: 80
      - hostName3: 8080
    https:
      - github.com: 443
  serviceGroups:         # Блок проверок объеденных в группы
    db-cluster:          # Имя группы, прохождение всех проверок в группе обязательно
    Exadata:
                         #   на общий результат не влияет
_default_:               # Не обязательная секция, для не сопоставленных хостов
  services:
    port:
      - huggingface.co: 443

_serviceGroups_:        # Не обязательная секция, коллекция групп сервисов
  db-cluster :          # Имя группы
    port:
      - db-master:
          - 5432
          - 5433
      - db-slave: 5432
  Exadata:
    port:
      - db-Exadata: 1251
 

Что можно улучшить

  • Exit code в зависимости от результата, для использования в CI/CD
  • Возможность указать диапазон портов
  • Повтор тестов N раз
  • Загрузка файла конфигурации по http/https
  • Отчет в формате Allure Report (json)
  • Добавить поддержку других протоколов( S3, PostgreSQL, gRPC и т.д. )
  • В HostBusinessName1 можно использовать Regex выражения
  • Запись респонса в отчет для анализа позже
  • Добавить поддержку UDP портов
  • Порт по умолчанию для HTTP и HTTPS
  • Централизованный запуск тестов через Ansible
  • WarningOnly для Сервис групп - Только предупреждения, при провале проверок в группе

About

Инструмент проверки сетевой связанности элементов контура на уровне портов и протоколов, работы DNS на PowerShell

Resources

License

Stars

Watchers

Forks

Packages

No packages published