Блог и новости

Инструкция по ICMP, TCP и DNS проверкам в Pingera

Проверки Блог
Мы в Pingera осознаем, что веб-приложение — это лишь вершина айсберга. Под ней лежит ИТ-инфраструктура, надежность которой определяет доступность сервиса в целом. В дополнение к нашим синтетическим и веб-проверкам, пользователи могут отслеживать свои DNS-серверы, TCP-сервисы и проверять базовую доступность серверов с помощью ICMP.
В этой статье мы дадим краткие технические рецепты для этих проверок, объясним, для каких задач лучше всего подходит каждая из них, и покажем, как получить максимальную пользу, используя их через API или CLI.

ICMP: Проверка базовой сетевой доступности (Ping)

Начнем с ICMP (Internet Control Message Protocol) — протокола, знакомого многим по утилите ping. Наши серверы проверок отправляют ICMP echo запросы к вашим хостам и замеряют время ответа и процент потери пакетов.
Когда использовать ICMP?
ICMP проверяет базовую доступность вашего хоста на сетевом уровне. Он не скажет вам, работает ли веб-сервер, но ответит на вопрос: «Достижим ли этот IP-адрес?». Это фундаментальный инструмент для:
  • Мониторинга сетевых устройств: Проверка доступности маршрутизаторов, файрволов, или балансировщиков.
  • Измерения сетевой задержки: Отслеживание времени отклика для выявления проблем в сети.
  • Диагностики потери пакетов: Обнаружение нестабильности сетевого соединения.

Технические детали и пример API

Pingera позволяет детально настроить ICMP-проверку, контролируя количество отправляемых пакетов (probe_count), интервал и таймаут для каждого запроса. Ключевой элемент — это условие (assertion) по максимальной потере пакетов, которое позволяет пометить проверку как неуспешную, даже если хост доступен, но сеть нестабильна.
Пример: Высокочастотная ICMP-проверка с контролем потери пакетов
Для детального анализа сети можно отправлять больше пакетов с меньшим интервалом, устанавливая порог потери, например, в 25%.

Создать регулярную проверку ICMP (API)

curl -X POST -H "Authorization: API_TOKEN" -d
'{
"type": "icmp",
"host": "example.com",
"parameters": {"probe_count": 20, "probe_interval": 0.1, "assertions": {"max_packet_loss": 25}},
"name": "new ICMP check"
}'
https://api.pingera.ru/v1/checks

Создать регулярную проверку ICMP (CLI)

pngr checks create --name 'icmp-from-pngr' --host 8.8.8.8 --parameters '{"probe_count": 20, "probe_interval": 0.1, "assertions": {"max_packet_loss": 25}}' --type icmp

Выполнить проверку ICMP (API)

curl -X POST -H "Authorization: API_TOKEN" -d
'{
"type": "icmp",
"host": "example.com",
"parameters": {"probe_count": 20, "probe_interval": 0.1, "assertions": {"max_packet_loss": 25}},
}'
https://api.pingera.ru/v1/checks/execute

Получите результат в /v1/checks/jobs/{job_id}

Выполнить проверку ICMP (CLI)

pngr checks run custom --host 8.8.8.8 --parameters '{"probe_count": 20, "probe_interval": 0.1, "assertions": {"max_packet_loss": 25}}' --type icmp
Читайте больше в документации.

TCP: Глубокая проверка сервисов по порту

TCP (Transport Control Protocol) — основа интернета, протокол, на котором работает большинство ключевых сервисов: HTTP, SMTP, SSH, FTP и многие другие.
С TCP-проверками от Pingera вы можете не только убедиться в успешном тройном рукопожатии (установке соединения), но и сымитировать взаимодействие с сервисом: отправить данные в сокет и валидировать ответ.
Когда использовать TCP-проверки?
TCP-проверки выходят за рамки HTTP и помогают оценить доступность критически важных, но невидимых для обычных веб-проверок, сервисов:
  • Почтовые серверы (SMTP/POP3/IMAP): Проверка, что сервер принимает соединения и отвечает на базовые команды, например, HELO для SMTP.
  • SSH-серверы (порт 22): Контроль доступности для удаленного подключения.
  • Кастомные TCP-сервисы: Любое ваше приложение, которое слушает TCP-порт. Можно отправить специальный запрос для проверки статуса.
  • Базы данных: Хотя прямой доступ к БД извне не рекомендуется, TCP-проверка может подтвердить доступность балансировщика перед кластером.

Технические детали и пример API

Ключевые параметры TCP-проверки — это хост и порт. Для продвинутого мониторинга можно настроить отправку текста в сокет после установки соединения.
Пример: Проверка доступности SMTP-сервера

Создать регулярную проверку TCP/SMTP (API)

curl -X POST -H "Authorization: API_TOKEN" -d
'{
"type": "tcp",
"host": "smtp.example.com",
"port": 467,
"parameters": {"send_text": "EHLO client.example.com", "search_text": "Hello"},
"name": "new TCP check"
}'
https://api.pingera.ru/v1/checks

Создать регулярную проверку TCP/SMTP (CLI)

pngr checks create --name 'smtp-check' --host smtp.example.com --port 467 --parameters '{"send_text": "EHLO client.example.com", "search_text": "Hello"}' --type tcp

Выполнить проверку TCP/SMTP (API)

Выполниить проверку и получить job ID в ответ:

curl -X POST -H "Authorization: API_TOKEN" -d
'{
"type": "tcp",
"host": "smtp.example.com",
"port": 467,
"parameters": {"send_text": "EHLO client.example.com", "search_text": "Hello"},
}'
https://api.pingera.ru/v1/checks/execute

Получите результат в /v1/checks/jobs/{job_id}

Выполнить проверку TCP/SMTP (CLI)

Выполнить проверку с pngr и сразу получить результат:

pngr checks run custom --host smtp.example.com --port 467 --parameters '{"send_text": "EHLO client.example.com", "search_text": "Hello"}' --type tcp
Читайте больше в документации.

DNS: Валидация доменных имен

DNS (Domain Name System) — критически важный компонент, поскольку проблемы с ним часто приводят к полной недоступности сервисов.
DNS-проверки позволяют отслеживать корректность работы DNS-сервера и валидировать DNS-записи. Вы можете проверять не только базовые A/AAAA записи, но и MX, TXT, CNAME, NS и другие.
Когда использовать DNS-проверки?
  • Валидация записей: Контроль соответствия DNS-ответов ожидаемым значениям после миграции или изменения конфигурации.
  • Мониторинг MX-записей: Убедитесь, что почтовые серверы корректно настроены для приема почты.
  • Проверка TXT-записей: Контроль записей для SPF, DKIM, DMARC, которые влияют на безопасность и доставляемость email.
  • Проверка авторитетных NS-серверов: Контроль корректности делегирования домена.

Технические детали и пример API

Pingera поддерживает два ключевых режима валидации ожидаемых ответов:
  1. contains_all (по умолчанию): Все ожидаемые записи должны присутствовать в ответе, но дополнительные записи допускаются.
  2. exact: Ответ должен содержать строго указанные записи, без дополнительных. Идеально подходит для критических записей, которые не должны меняться.

Создать регулярную проверку DNS (API)

curl -X POST -H "Authorization: API_TOKEN" -d
'{
"type": "dns",
"host": "example.com",
"timeout": 5,
"parameters": {
"record_type": "A",
"expected_answers": ["93.184.216.34"]
},
"name": "new DNS A-record check"
}'
https://api.pingera.ru/v1/checks

Создать регулярную проверку DNS (CLI)

pngr checks create --name 'dns-check-a-record' --host example.com --timeout 5 --parameters '{"record_type": "A", "expected_answers": ["93.184.216.34"]}' --type dns

Выполнить проверку DNS (API)

Выполниить проверку и получить job ID в ответ:

curl -X POST -H "Authorization: API_TOKEN" -d
'{
"type": "dns",
"host": "example.com",
"parameters": {
"record_type": "A",
"expected_answers": ["93.184.216.34"]
}
}'
https://api.pingera.ru/v1/checks/execute

Получите результат в /v1/checks/jobs/{job_id}

Выполнить проверку DNS (CLI)

pngr checks run custom --host example.com --parameters '{"record_type": "A", "expected_answers": ["93.184.216.34"]}' --type dns
Читайте больше в документации.

Заключение

ICMP, TCP и DNS-проверки — это фундаментальный набор инструментов для проактивного мониторинга инфраструктуры. Они позволяют выявлять проблемы на самых низких уровнях сетевого стека, до того как они затронут веб-приложения или конечных пользователей.
Интеграция этих проверок в ваши CI/CD пайплайны через API или CLI Pingera позволяет автоматизировать контроль и обеспечить надежность вашего сервиса 24/7.
Готовы обеспечить полный контроль над своим периметром? Создайте свою первую инфраструктурную проверку на app.pingera.ru!