Перейти к содержимому

pfSense

Файрвол pfSense через пакет community REST API (pfSense-pkg-RESTAPI, версия 2): шлюзы, которые недоступны, теряют пакеты или отвечают медленно, включённые интерфейсы без линка, включённые службы, которые остановились, и CPU, память, диск и температура.

DumbMonit отправляет ключ API в заголовке X-API-Key. Ключ несёт ровно те права, что у пользователя pfSense, которому он принадлежит: пользователь dumbmonit ниже обладает только правами GET пяти страниц, которые читает DumbMonit, так что ключ может их читать и ничего не менять. Каждую минуту DumbMonit параллельно читает /api/v2/status/system, /api/v2/status/gateways, /api/v2/status/interfaces, /api/v2/status/services и /api/v2/system/version, и, если дано право, /api/v2/system/restapi/version.

Все метрики с префиксом dumbmonit_pfsense_.

МетрикаМеткиЗначение
cpu_usage_percent, memory_used_percent, swap_used_percent, disk_used_percent, mbuf_used_percentКак показывает панель, в процентах. Показатель CPU — собственная оценка pfSense по средней загрузке.
temperature_celsiusКогда pfSense может прочитать датчик.
load_averageperiod: 1m, 5m, 15mСредняя загрузка.
cpu_countЯдра процессора.
version_infoversionЗначение 1: версия pfSense, 2.7.2-RELEASE.
gateway_upgateway0, когда pfSense отмечает шлюз как недоступный, иначе 1.
gateway_status_infogateway, statusЗначение 1: собственное слово pfSense (none, когда всё в порядке, down, loss, delay).
gateway_loss_percentgatewayПотери пакетов до адреса монитора.
gateway_delay_milliseconds, gateway_stddev_millisecondsgatewayВремя приёма-передачи до адреса монитора и его отклонение; отсутствует, пока шлюз недоступен.
gateways, gateways_downСчётчики.
interface_enabled, interface_upinterface, descrВключён в конфигурации; линк активен.
interface_downinterface, descr1, когда интерфейс включён и не имеет линка. Отключённый интерфейс никогда не считается недоступным.
interface_bytes_in_total, interface_bytes_out_total, interface_errors_in_total, interface_errors_out_totalinterface, descrСчётчики.
interfaces_downСчётчик.
service_running, service_enabledservice, descriptionКак показывает Status > Services.
service_stoppedservice, description1, когда служба включена и не работает.
services_stoppedСчётчик.
restapi_update_availableС правом /api/v2/system/restapi/version: 1, когда у пакета REST API есть более новый релиз.
restapi_version_infoversion, latestЗначение 1: установленный и последний релиз пакета.

pfSense не сообщает через этот API, доступно ли обновление самого pfSense: единственный маршрут, касающийся системных обновлений (/api/v2/system/update), запускает его. DumbMonit сообщает только об обновлениях самого пакета.

Применяемые встроенные правила:

  • Шлюз pfSense не работает: шлюз отмечен как недоступный уже три минуты (Warning).
  • Шлюз pfSense теряет пакеты: более 10 % потерь за десять минут, на шлюзе, который ещё не недоступен (Advisory).
  • Медленный шлюз pfSense: время приёма-передачи выше 500 мс в течение пятнадцати минут (Advisory). Поднимите порог для спутниковой линии.
  • Интерфейс pfSense без линка: включённый интерфейс без линка уже пять минут (Advisory).
  • Служба pfSense остановлена: включённая служба не работает уже пять минут (Advisory).
  • Диск pfSense почти заполнен: более 90 % в течение тридцати минут (Advisory).

Панель Firewall сообщает, что не так, в одном предложении, показывает CPU, память, диск и температуру, затем перечисляет каждый шлюз с его задержкой и потерями, интерфейсы без линка, остановленные службы, и доступное обновление пакета REST API.

Создание ключа REST API только для чтения для DumbMonit

Заголовок раздела «Создание ключа REST API только для чтения для DumbMonit»
  1. Установите пакет community REST API (pfSense-pkg-RESTAPI, версия 2) из Diagnostics > Command Prompt или оболочки SSH, с файлом со страницы релизов проекта, соответствующим вашей версии pfSense (2.7.2 ниже). Затем, в System > REST API > Settings, отметьте и BasicAuth, и Key среди методов аутентификации.

    pkg-static add https://github.com/pfrest/pfSense-pkg-RESTAPI/releases/latest/download/pfSense-2.7.2-pkg-RESTAPI.pkg
  2. В System > User Manager добавьте пользователя с именем dumbmonit с длинным случайным паролем. В Effective Privileges добавьте только эти права REST API: /api/v2/status/system GET, /api/v2/status/gateways GET, /api/v2/status/interfaces GET, /api/v2/status/services GET, /api/v2/system/version GET, плюс /api/v2/system/restapi/version GET, чтобы узнавать об обновлениях самого пакета. Только для следующего шага добавьте также /api/v2/auth/key POST.

  3. Создайте ключ как dumbmonit, с любой машины, достигающей pfSense: ключ несёт ровно права этого пользователя. Скопируйте значение ключа из ответа, затем снова удалите право /api/v2/auth/key POST.

    curl -k -u dumbmonit -X POST -H 'Content-Type: application/json' -d '{"descr":"DumbMonit"}' https://pfsense.lan/api/v2/auth/key
  4. В DumbMonit введите адрес pfSense, например «pfsense.lan», и вставьте ключ как API key. pfSense поставляется с самоподписанным сертификатом: отметьте Accept an unverifiable certificate, если вы его не заменили.

Учётные данныеПоля
Ключ REST APIКлюч, созданный для dumbmonit на шаге 3, отправляется как X-API-Key.

Адрес: имя хоста или IP pfSense, host:port, или URL. Опции:

  • Protocol (https) и Port (443): те, что у webConfigurator, задаются в System > Advanced > Admin Access.
  • Accept an unverifiable certificate: собственный сертификат pfSense самоподписан.
  • Timeout per request (15 с).

«pfSense refused the API key (401)»: ключ неверен, либо Key не отмечен среди методов аутентификации в System > REST API > Settings.

«pfSense accepted the API key but refused … (403)»: пользователю dumbmonit не хватает права для этой страницы; сообщение называет его.

«… not found: is the REST API package installed?»: пакет отсутствует, обычно после обновления pfSense, которое его удаляет. Переустановите его, как на шаге 1.