← Назад к вопросам

Как системный аналитик может проверить сетевую доступность эндпоинта?

2.0 Middle🔥 251 комментариев
#API и интеграции

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как системный аналитик может проверить сетевую доступность эндпоинта?

Проверка сетевой доступности — критическая часть диагностики и мониторинга приложений. Существует множество инструментов и подходов для определения, доступен ли эндпоинт.

1. Утилиты командной строки

ping

Проверяет доступность хоста на уровне ICMP:

ping google.com
# PING google.com (142.251.46.14): 56 data bytes
# 64 bytes from 142.251.46.14: icmp_seq=0 ttl=119 time=15.234 ms

Что проверяет: базовая доступность хоста Ограничения: не тестирует конкретный порт или HTTP

telnet

Проверяет доступность конкретного портa:

telnet api.example.com 443
# Connected to api.example.com
# Escape character is .^].

Плюсы: простая, показывает, открыт ли порт Минусы: устаревшая, не работает с HTTPS

curl

Проверяет HTTP эндпоинт и читает ответ:

curl -v https://api.example.com/health
# Получаем статус код, headers, body

# Полезные флаги:
curl -w "@curl-format.txt" -o /dev/null -s https://api.example.com  # timing
curl -I https://api.example.com  # HEAD request (только headers)
curl -m 5 https://api.example.com  # timeout 5 сек

Подходит: тестирование API, debug запросов

wget

Аналог curl, более простой:

wget -q --spider https://api.example.com  # проверить без сохранения
# $? == 0 → успех
wget -O /dev/null --quiet https://api.example.com

nc (netcat)

Проверяет портa и соединения:

nc -zv api.example.com 443
# dns [443] open

nc -zv -w 2 api.example.com 443  # timeout 2 сек

Универсальна: работает с любыми портами

nmap

Продвинутое сканирование портов:

nmap -p 443 api.example.com
# 443/tcp open  https

nmap -p 80,443,8080 api.example.com  # несколько портов
nmap -p- api.example.com  # все порты

Применение: диагностика firewall правил

traceroute / mtr

Трассировка маршрута до хоста:

traceroute api.example.com
# Показывает каждый hop от тебя до хоста

mtr api.example.com  # interactive, real-time

Для чего: выявить, где разорвано соединение

2. HTTP-специфичные инструменты

httpie

Удобный интерфейс к HTTP:

http GET https://api.example.com/health Authorization:"Bearer token"
# Цветной вывод, красивый JSON

postman / insomnia

GUI инструменты для тестирования API:

  • Сохранение запросов
  • Environment переменные
  • Automation
  • Beautiful UI

Online инструменты

3. Мониторинг и health checks

Сердце приложения — /health эндпоинт

GET /api/v1/health
Response 200:
{
  "status": "healthy",
  "timestamp": "2025-03-28T10:30:00Z",
  "uptime": 3600,
  "dependencies": {
    "database": "ok",
    "cache": "ok",
    "external_api": "degraded"
  }
}

Лучшая практика: health check должен проверять:

  • Доступность БД
  • Доступность кэша
  • Доступность external сервисов

Промышленные решения

  • Prometheus + Grafana — мониторинг метрик
  • Datadog — полный observability
  • New Relic — performance monitoring
  • Uptimerobot — простой мониторинг uptime

4. Сетевая диагностика

DNS resolution

nslookup api.example.com
# Name: api.example.com
# Address: 93.184.216.34

dig api.example.com
# Полная информация о DNS

TCP соединение

strace -e connect curl https://api.example.com
# Видим все системные вызовы connect()

Firewall и маршрутизация

# Linux
ss -tlnp | grep LISTEN  # какие порты слушают
iptables -L  # firewall правила
ip route show  # таблица маршрутов

# macOS
netstat -tlnp

5. Логирование и мониторинг

Логи приложения

# Смотрим ошибки соединения
grep -i "connection refused\|timeout\|refused" /var/log/app.log

Сетевые логи

# Linux
sudo tcpdump -i eth0 -A "tcp port 443"
# Capture всех пакетов на порт 443

Практический алгоритм диагностики

Шаг 1 — базовая доступность:

ping api.example.com

Шаг 2 — проверка портa:

nc -zv api.example.com 443

Шаг 3 — HTTP статус:

curl -I https://api.example.com/health

Шаг 4 — полный запрос:

curl -v https://api.example.com/health

Шаг 5 — трассировка маршрута:

traceroute api.example.com

Шаг 6 — проверка DNS:

nslookup api.example.com

Автоматизация проверок

#!/bin/bash
ENDPOINT="https://api.example.com/health"
RETRY=3
TIMEOUT=5

for i in $(seq 1 $RETRY); do
  if curl -m $TIMEOUT -f $ENDPOINT > /dev/null 2>&1; then
    echo "✓ Endpoint доступен"
    exit 0
  fi
  echo "✗ Попытка $i не удалась, жду 5 сек..."
  sleep 5
done

echo "✗ Endpoint недоступен"
exit 1

Чеклист System Analyst

  • Ping доступен ли хост
  • Открыт ли нужный порт
  • Получаем HTTP 200 (или нужный код)
  • Response время приемлемое
  • DNS разрешается корректно
  • Firewall правила позволяют доступ
  • Сертификат SSL валиден (для HTTPS)
  • Rate limiting не срабатывает
  • Health check показывает зависимости
  • Логи показывают причину, если ошибка

Эти инструменты дают полную картину доступности и помогают быстро выявить проблемы в сети.