Подсчёт активных VPN площадок FTD: какое число вы имеете в виду?
Настроенные партнёры, сеансы IKE, ассоциации безопасности и наблюдаемые туннели — это четыре разных подсчёта. Выберите единицу и плоскость управления до написания кода.
Прежде чем писать задачу Ansible, ответьте на более простой вопрос: что именно считается? Настроенный партнёр, сеанс IKE, ассоциация безопасности IPsec и запись наблюдаемого состояния туннеля — это четыре разные единицы, а перегенерация ключей или несколько защищённых сетей заставляют их суммы расходиться. Если панель и playbook расходятся, обычно они считают разные вещи, а не один из них ошибается.
Четыре вещи, которые люди называют активными
Настроенный партнёр — это объект топологии: он существует потому, что кто-то его определил. Сеанс IKE — это связь плоскости управления, которая может быть поднята, пока трафик не идёт. SA IPsec — это ассоциация плоскости данных для конкретной пары селекторов, и один туннель может нести несколько. Наблюдаемое состояние туннеля — это собственный операционный вердикт платформы, обычно ближайший к тому, что оператор имеет в виду, говоря, что туннель поднят.
Только последнее — разумная основа для операционного подсчёта. Первое — это инвентарь конфигурации, и сообщать его как активное — так панель показывает зелёный для партнёра, который не работает со вторника. Решите, какая единица нужна потребителю числа, затем назовите метрику этой единицей в её собственном имени.
Первое решение: какая плоскость управления?
Если устройством управляет FDM, релевантная поверхность — FTD REST API. Если им управляет FMC, этот API не является взаимозаменяемой заменой, и объекты живут за собственным API FMC. Подтвердите это, прежде чем написать хотя бы один запрос, потому что неверная плоскость возвращает правдоподобную ошибку, которая выглядит как проблема с правами.
Для парка ответ также определяет, где находится подсчёт: на устройство через FDM или на домен через FMC. Это разные области, и они дают разные числа для одного и того же парка.
Второе решение: какой ресурс отвечает?
Для примера, привязанного к версии, справочник объектов FMC 7.3 API документирует ресурсы GET по пути health:
/api/fmc_config/v1/domain/{domainUUID}/health/tunnelstatuses
/api/fmc_config/v1/domain/{domainUUID}/health/tunnelsummariesРесурс состояния туннеля поддерживает фильтры устройства и состояния, включая TUNNEL_UP. Это даёт вам реальный операционный ресурс для проверки в этой версии, а не догадку об имени поля.
Подтвердите доступность, права, параметры запроса и схему ответа в API Explorer развёрнутого FMC, прежде чем реализовывать парсер. Документация одной версии — это отправная точка, а не контракт для той, которую вы запускаете.
Напишите контракт подсчёта
Сформулируйте метрику одним предложением: уникальные операционные записи туннелей для одного предполагаемого устройства и домена, чьё заявленное состояние — TUNNEL_UP. Затем опишите, как представлены резервные устройства и несколько записей для одной логической площадки, потому что эти два случая решают, совпадает ли ваше число с числом на совещании.
Не меняйте тихо единицу с записи туннеля на удалённую площадку. Если бизнесу нужны площадки, явно сопоставьте записи с площадками и опубликуйте это сопоставление. Подсчёт, который тихо переопределяет себя, хуже отсутствия подсчёта, потому что никто не может сказать, когда он изменился.
Относитесь к ресурсу сводки как к удобству только после того, как подтвердите, что он суммирует. Он может агрегировать именно то, что вам нужно, или отвечать на тонко иной вопрос. Прочитайте его схему один раз, запишите различие и используйте ресурс состояния, если сводку нельзя объяснить. Сводка, которую вы не понимаете, — это число, которое вы не сможете защитить на разборе.
Пусть рабочий процесс сохраняет неопределённость
Используйте утверждённый HTTPS API, проверяйте сертификат, держите токены вне вывода задачи и получайте область с помощью поддерживаемых версией фильтра и постраничного вывода. Затем проверьте схему, прежде чем что-либо вычислять.
fetch intended domain/device runtime records
validate response, completeness and freshness
deduplicate by the documented tunnel identity
count records matching the approved up-state definition
report count with scope, timestamp and metric unitЭто псевдокод рабочего процесса, а не протестированный playbook. Берите фактические имена полей из установленного API вместо того, чтобы придумывать ключ JSON с именем active.
Главное правило — поведение при сбое: ошибка авторизации, неподдерживаемый ресурс, устаревшая выборка или неполный набор страниц должны давать unknown или error, никогда не успешный ноль. Ноль, который означает «я не смог спросить», — самый дорогой вид ошибки.
Проверьте по собственному представлению платформы
Сравните первый результат с представлением мониторинга VPN этой версии для того же устройства и момента. Когда они различаются, выясните, какую единицу использует каждый, прежде чем менять playbook.
Сохраняйте несекретный контекст для каждого запуска: область, отметку времени, единицу метрики и число записей. справочник объектов FMC 7.3 API — источник путей ресурсов выше, а API Explorer в вашем собственном развёртывании — источник всего остального.