INTEGRITY Документация

Мониторинг

Cloudflare Tunnel предоставляет журналы, метрики и инструменты диагностики, которые помогают отслеживать состояние туннеля и устранять неполадки.

Работоспособность туннеля

Проверить статус подключения туннеля можно в Панель управления Cloudflare ↗ перейдя в Сеть > Tunnels, либо выполнив cloudflared tunnel list.

Перейдите в Tunnels ↗
Статус Значение Рекомендуемое действие
Исправно Туннель активен и обслуживает трафик через четыре подключения к глобальной сети Cloudflare. Действие не требуется. Ваш туннель работает корректно.
Неактивен Туннель создан (через API или панель управления), но cloudflared connector ни разу не запускался для установления подключения. Установите и запустите cloudflared на вашем исходном сервере, чтобы подключить туннель к Cloudflare. Команду установки можно найти в панели управления Cloudflare в разделе Сеть > Tunnels : выберите свой туннель, затем на Обзор вкладке выберите Добавьте реплику. Для настройки через API см. Установите и запустите туннель.
Down Ранее туннель был подключён, но сейчас отключён, потому что cloudflared процесс остановлен. 1. Убедитесь, что cloudflared служба или процесс активно выполняется на вашем сервере.
2. Проверьте возможные проблемы на стороне сервера: например, компьютер выключен, произошёл сбой приложения или недавно изменилась сеть.
Degraded cloudflared connector работает, и туннель обслуживает трафик, но как минимум одно отдельное подключение завершилось сбоем. Дальнейшее ухудшение доступность туннеля может привести к тому, что туннель отключится и перестанет обслуживать трафик. 1. Просмотрите свой cloudflared журналы для сбоев подключения или сообщений об ошибках.
2. Проверьте правила локальной сети и брандмауэра и убедитесь, что они не блокируют подключения к IP-адреса и порты Cloudflare Tunnel.

Уведомления

Администраторы могут получать оповещения при изменении состояния работоспособности или статуса развертывания туннелей. Уведомления можно отправлять по электронной почте, через webhook или через сторонние сервисы.

Чтобы настроить уведомления туннеля, см. Создать уведомление.

Tunnel Creation or Deletion Event

Для кого это предназначено?

Клиенты, которые хотят получать уведомление о создании или удалении Cloudflare Tunnel в своём аккаунте.

Другие параметры / фильтры

Нет.

Входит в

Все планы Cloudflare Zero Trust.

Что делать при получении такого уведомления?

Действие не требуется.

Tunnel Health Alert

Для кого это предназначено?

Клиенты, которые хотят получать уведомления об изменении статуса работоспособности своих Cloudflare Tunnel.

Другие параметры / фильтры

Нет.

Входит в

Все планы Cloudflare Zero Trust.

Что делать при получении такого уведомления?

Отслеживайте состояние туннеля с течением времени и рассмотрите возможность развертывания cloudflared реплик или балансировщиков нагрузки.

Дополнительная информация

См. Статус туннеля и просмотрите список возможных статусов туннеля (Healthy, Inactive, Down и Degraded).

Журналы

Журналы туннеля фиксируют всю активность между cloudflared и глобальной сетью Cloudflare, и вся активность между cloudflared и вашим origin-сервером.

Серверные журналы

Если у вас есть доступ к исходному серверу, вы можете использовать --loglevel флаг чтобы включить логирование при запуске туннеля. По умолчанию cloudflared выводит журналы в stdout и не сохраняет их на сервере. При необходимости вы можете использовать --logfile флаг чтобы записывать журналы в файл.

Чтобы включить журналы, Запустите туннель с помощью --loglevel info и --logfile <PATH> флаги. Например,

cloudflared tunnel --loglevel info --logfile cloudflared.log run <UUID>

Удалённая потоковая передача журналов

Журналы работающего туннеля можно получать в режиме реального времени без SSH-доступа к серверу.

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

  1. На локальном компьютере пройдите аутентификацию cloudflared в ваш аккаунт Cloudflare:

    cloudflared tunnel login
  2. Запустите cloudflared tail для конкретного туннеля:

    cloudflared tail <UUID>

    Чтобы увидеть более структурированное представление JSON-сообщения, можно передать вывод через конвейер в такие инструменты, как jq ↗:

    cloudflared tail --output=json <UUID> | jq .
  1. Если вы используете несколько реплики, вы можете указать, с какой реплики получать поток журналов:
    cloudflared tail --connector-id <REPLICA ID> <UUID>
    Чтобы найти ID реплики, перейдите в Сеть > Tunnels и выберите ваш туннель. Все активные реплики отображаются в Connectors на странице обзора туннеля. Идентификатором реплики служит ID Connector.

Параметры фильтрации логов

Вы можете фильтровать логи по типу события (--event), уровень события (--level), или частота выборки (-sampling) чтобы уменьшить объём журналов, передаваемых с источника. Это помогает снизить влияние на производительность источника, особенно если источник обычно работает под высокой нагрузкой. Например:

cloudflared tail --level debug <UUID>
Флаг Описание Допустимые значения Значение по умолчанию
--event Фильтруйте по типу события или запроса. cloudflared, http, tcp, udp Все события
--level Возвращать журналы этого уровня и выше. Работает независимо от --loglevel параметр на сервере. debug, info, warn, error, fatal debug
--sampling Отберите часть от общего числа журналов. Число от 0.0 к 1.0 1.0

Чтобы транслировать журналы туннеля из панели управления:

  1. В панели управления Cloudflare перейдите в Сеть > Tunnels и выберите свой туннель.

    Перейдите в Tunnels ↗
  2. Перейдите в Live logs на вкладке.

  3. Выберите Live чтобы начать трансляцию.

Просмотр журналов реплики

Если вы используете несколько cloudflared экземпляры для одного и того же туннеля (также известного как реплики), журналы со всех подключённых реплик передаются автоматически и группируются по имени хоста, что упрощает определение того, какая хост-машина создала ту или иную запись журнала.

Чтобы отфильтровать поток по определённым репликам, выберите Фильтр значок и разверните Реплики раздел. Также можно отфильтровать по Уровень журнала и Тип события.

Метрики

Метрики туннеля показывают пропускную способность и использование ресурсов Cloudflare Tunnel с течением времени. Когда вы запускаете туннель, cloudflared запустит конечную точку метрик Prometheus: HTTP-сервер, который предоставляет метрики в Prometheus ↗ формате. Вы можете использовать набор инструментов Prometheus на удалённой машине для сбора метрик из cloudflared сервер.

Адрес сервера метрик по умолчанию

В средах без контейнеризации cloudflared запускает сервер метрик на 127.0.0.1:<PORT>/metrics, где <PORT> является первым доступным портом в диапазоне 20241 к 20245. Если все порты недоступны, cloudflared привязывается к случайному порту. В контейнеризированных средах (Docker, Kubernetes) адрес по умолчанию: 0.0.0.0:<PORT>/metrics.

Чтобы определить порт по умолчанию, проверьте журналы туннеля примерно во время запуска туннеля. Например:

2024-12-19T21:17:58Z INF Starting metrics server on 127.0.0.1:20241/metrics

Настройка пользовательского адреса

Чтобы отдавать метрики по пользовательскому IP-адресу и порту, выполните следующие действия на cloudflared хост:

  1. Запустите туннель с помощью --metrics флаг. Например,

    cloudflared tunnel --metrics 127.0.0.1:60123 run my-tunnel
  2. Убедитесь, что сервер метрик запущен: перейдите в http://localhost:60123/metrics. Это будет работать только в том случае, если вы настроили localhost IP-адрес (127.0.0.1 или 0.0.0.0).

Теперь метрики можно экспортировать в Prometheus и Grafana для визуализации и запросов к данным. См. Руководство по Grafana с инструкциями по началу работы с этими инструментами.

метрики cloudflared

Название Описание Тип Метки
build_info Информация о сборке и версии. GAUGE goversion, revision, type, version
cloudflared_config_local_config_pushes Количество локальных отправок конфигурации в Cloudflare. COUNTER
cloudflared_config_local_config_pushes_errors Количество ошибок при локальной отправке конфигурации. COUNTER
cloudflared_orchestration_config_version Версия конфигурации. GAUGE
cloudflared_tcp_active_sessions Количество одновременных TCP-сеансов, проксируемых к любому источнику. GAUGE
cloudflared_tcp_total_sessions Общее количество TCP-сессий, проксированных на любой origin. COUNTER
cloudflared_tunnel_active_streams Общее количество активных потоков. GAUGE
cloudflared_tunnel_concurrent_requests_per_tunnel Количество одновременных запросов, проксируемых через каждый туннель. GAUGE
cloudflared_tunnel_ha_connections Количество активных подключений HA. GAUGE
cloudflared_tunnel_request_errors Количество ошибок при проксировании к источнику. COUNTER
cloudflared_tunnel_server_locations К чему подключен каждый туннель. 1 означает текущее местоположение, 0 означает предыдущие местоположения. GAUGE connection_id, edge_location
cloudflared_tunnel_timer_retries Количество неподтвержденных heartbeat-сообщений. GAUGE
cloudflared_tunnel_total_requests Количество запросов, проксированных через все туннели. COUNTER
cloudflared_tunnel_tunnel_authenticate_success Количество успешных событий аутентификации туннеля. COUNTER
cloudflared_tunnel_tunnel_register_success Количество успешных регистраций туннеля. COUNTER rpcName
cloudflared_udp_active_sessions Количество одновременных UDP-сеансов, проксируемых к любому источнику. GAUGE
cloudflared_udp_total_sessions Общее количество UDP-сессий, проксированных на любой origin. COUNTER
coredns_panics_total Количество паник. COUNTER
quic_client_closed_connections Количество закрытых подключений. COUNTER
quic_client_latest_rtt Последнее измеренное время приёма-передачи (RTT) для соединения. GAUGE conn_index
quic_client_lost_packets Количество пакетов, потерянных в рамках подключения. COUNTER conn_index, reason
quic_client_min_rtt Наименьшее значение RTT, измеренное для соединения, в мс. GAUGE conn_index
quic_client_packet_too_big_dropped Количество пакетов, полученных от источника, которые оказались слишком большими для отправки в Cloudflare и поэтому были отброшены. COUNTER
quic_client_smoothed_rtt Сглаженное значение RTT, рассчитанное для соединения, в мс. GAUGE conn_index
quic_client_total_connections Количество инициированных подключений. Для всех метрик QUIC клиентом считается сторона, инициирующая подключение. COUNTER

Метрики Prometheus

Название Описание Тип Метки
promhttp_metric_handler_requests_in_flight Текущее количество обслуживаемых скрейпов. GAUGE
promhttp_metric_handler_requests_total Общее количество scrape-запросов по коду состояния HTTP. COUNTER code

Метрики среды выполнения Go

Название Описание Тип Метки
go_gc_duration_seconds Сводка по длительности пауз циклов сборки мусора. СВОДКА
go_goroutines Количество горутин (goroutines), существующих в данный момент. GAUGE
go_info Информация о среде Go. GAUGE version
go_memstats_alloc_bytes Количество выделенных и всё ещё используемых байт. GAUGE
go_memstats_alloc_bytes_total Общее количество выделенных байт, даже если они впоследствии были освобождены. COUNTER
go_memstats_buck_hash_sys_bytes Количество байт, используемых хеш-таблицей блоков профилирования. GAUGE
go_memstats_frees_total Общее количество операций free. COUNTER
go_memstats_gc_sys_bytes Количество байт, используемых для системных метаданных сборки мусора. GAUGE
go_memstats_heap_alloc_bytes Количество байт кучи, выделенных и всё ещё используемых. GAUGE
go_memstats_heap_idle_bytes Количество байт кучи, ожидающих использования. GAUGE
go_memstats_heap_inuse_bytes Количество используемых байт кучи. GAUGE
go_memstats_heap_objects Количество выделенных объектов. GAUGE
go_memstats_heap_released_bytes Количество байт кучи, возвращённых операционной системе. GAUGE
go_memstats_heap_sys_bytes Количество байт кучи, полученных от системы. GAUGE
go_memstats_last_gc_time_seconds Количество секунд, прошедших с 1970 года до последней сборки мусора. GAUGE
go_memstats_lookups_total Общее количество поисков указателей. COUNTER
go_memstats_mallocs_total Общее количество операций malloc. COUNTER
go_memstats_mcache_inuse_bytes Количество байт, используемых структурами mcache. GAUGE
go_memstats_mcache_sys_bytes Количество байт, полученных от системы для структур mcache. GAUGE
go_memstats_mspan_inuse_bytes Количество байт, используемых структурами mspan. GAUGE
go_memstats_mspan_sys_bytes Количество байт, полученных от системы для структур mspan. GAUGE
go_memstats_next_gc_bytes Количество байт кучи, при достижении которого произойдёт следующая сборка мусора. GAUGE
go_memstats_other_sys_bytes Количество байт, используемых для прочих системных выделений памяти. GAUGE
go_memstats_stack_inuse_bytes Количество байт, используемых аллокатором стека. GAUGE

Диагностические журналы

Cloudflare Tunnel формирует диагностические отчёты, которые собирают данные с одного cloudflared экземпляр, запущенный на локальном компьютере. Для этого требуется cloudflared версии 2024.12.2 или более поздней.

Сформировать диагностику

  1. (Только для Linux) Чтобы включить сетевую диагностику в журналы, разрешите cloudflared пользователю создавать сокеты RAW и PACKET без прав root:

    sudo setcap cap_net_raw+ep /usr/bin/traceroute && sudo setcap cap_net_raw+ep /usr/bin/traceroute

    Если вы не зададите cap_net_raw, данные traceroute будут недоступны.

  2. Получите диагностические журналы:

    cloudflared tunnel diag

    Если несколько экземпляров cloudflared работают на одном узле, укажите IP-адрес и порт сервера метрик для экземпляра, который вы хотите диагностировать. Например:

    cloudflared tunnel diag --metrics 127.0.0.1:20241

Эта команда выведет статус каждой диагностической задачи и поместит cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip файл в рабочем каталоге.

Диагностика Docker

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

  1. Определите порт сервера метрик для cloudflared экземпляр, работающий в Docker.

  2. Убедитесь, что контейнер развернут с включенной переадресацией портов. Функция диагностики будет запрашивать информацию у экземпляра Docker через локальный порт 20241, поэтому следует перенаправить порт 20241 к порту контейнера, полученному на шаге 1:

    docker run -d -p 20241:<metrics_port> docker.io/cloudflare/cloudflared tunnel ...
  3. Убедитесь, что адрес сервера метрик доступен из среды хоста Docker:

    curl localhost:20241/diag/tunnel

    Эта команда должна вернуть JSON:

    {
      "tunnelID": "ef96b330-a7f5-4bce-a00e-827ce5be077f",
      "connectorID": "d236670a-9f74-422f-adf1-030f5c5f0523",
      "connections": [
        { "isConnected": true, "protocol": 1, "edgeAddress": "198.41.192.167"},
        {"isConnected": true, "protocol": 1, "edgeAddress": "198.41.200.113", "index": 1},
        {"isConnected": true, "protocol": 1, "edgeAddress": "198.41.192.47", "index": 2},
        {"isConnected": true, "protocol": 1, "edgeAddress": "198.41.200.73", "index": 3}
      ],
      "icmp_sources": ["192.168.1.243", "fe80::c59:bd4a:e815:ed6"]
    }
  4. Запустите диагностику, используя ID Docker-контейнера:

    cloudflared tunnel diag --diag-container-id=<containerID>

    Как вариант, можно указать имя контейнера вместо его ID:

    cloudflared tunnel diag --diag-container-id=<containerName>

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

Эта команда выведет статус каждой диагностической задачи и поместит cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip файл в рабочем каталоге.

Диагностика Kubernetes

Функция диагностики запросит данные из сервер метрик туннеля с использованием портов 20241 к 20245. Вам потребуется использовать переадресацию портов, чтобы разрешить локальной cloudflared экземпляр для подключения к серверу метрик на одном из этих портов.

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

  2. Включить переадресацию портов:

    kubectl port-forward <pod> <diagnostic_port>:<metrics_port>
    • <pod>: Название пода, на котором запущен туннель
    • <diagnostic_port> это любой локальный порт в диапазоне 20241 к 20245.
    • <metrics_port> является портом пода Kubernetes для cloudflared экземпляр, который нужно диагностировать (получен на шаге 1).

    Например, если вы задали для адреса сервера метрик значение 0.0.0.0:12345:

    kubectl port-forward cloudflared-6d4897585b-r8kfz 20244:12345

    Подключения, установленные к локальному порту 20244 перенаправляются на порт 12345 пода, в котором запущен туннель.

  3. Запустите диагностику:

    cloudflared tunnel diag --diag-pod-id=<podID>

    Если в поде выполняется несколько приложений или служб и cloudflared не первый в поде, необходимо указать ID или имя контейнера:

    cloudflared tunnel diag --diag-pod-id=<podID> --diag-container-id=<containerName>

Эта команда выведет статус каждой диагностической задачи и поместит cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip файл в рабочем каталоге.

Содержимое диагностического файла

cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip архив содержит перечисленные ниже файлы. Данные в файле относятся либо к cloudflared экземпляра, который диагностируется (diagnosee) или экземпляр, вызвавший диагностику (diagnoser). Например, если ваш туннель работает в контейнере Docker, diagnosee является экземпляром Docker, а diagnoser является экземпляром хоста.

Имя файла Описание Экземпляр
cli-configuration.json Параметры запуска туннеля используемый при запуске туннеля diagnosee
cloudflared_logs.txt Файл журнала туннеля1 diagnosee
configuration.json Параметры конфигурации туннеля diagnosee
goroutine.pprof профиль горутин доступен благодаря pprof diagnosee
heap.pprof профиль кучи доступен благодаря pprof diagnosee
metrics.txt Снимок Метрики туннеля на момент диагностики diagnosee
network.txt JSON-трассировки к глобальной сети Cloudflare через IPv4 и IPv6 diagnoser
raw-network.txt Необработанные трассировки маршрута до глобальной сети Cloudflare через IPv4 и IPv6 diagnoser
systeminformation.json Информация об операционной системе и использовании ресурсов diagnosee
task-result.json Результат каждой диагностической задачи diagnoser
tunnelstate.json Подключения туннеля на момент диагностики diagnosee

Сноски

  1. Если файл журнала пуст, возможно, потребуется задать --loglevel к debug при запуске туннеля. --loglevel параметр требуется только в том случае, если вы запустили туннель из CLI с помощью cloudflared tunnel run команду. Это не требуется, если туннель работает как служба Linux/macOS или запущен в Docker/Kubernetes. ↩