Мониторинг состояния ключей защиты Guardant через GCC🔗

Для мониторинга состояния ключей защиты Guardant можно использовать службу лицензирования Guardant Control Center (GCC). Эта служба устанавливается на тех хостах (компьютерах или виртуальных машинах), на которых запускаются серверные приложения Macroscop,

Веб-интерфейс GCC доступен по ссылке вида следующего вида:

http://<адрес_сервера>:3189/

где <адрес_сервера> — IP-адрес, доменное или стандартное имя хоста, на котором установлен ключ защиты Guardant.

Для инструментальной проверки доступности ключей защиты Guardant используйте не требующий авторизации GET-запрос к службе GCC следующего вида:

http://<адрес_сервера>:3189/v1.0/lm/dongles

Примеры запроса, выполняемого непосредственно с том хоста, который использует ключ защиты:

http://localhost:3189/v1.0/lm/dongles

или

http://127.0.0.1:3189/v1.0/lm/dongles

Важно

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

В ответ на запрос возвращается JSON-структура, содержащая список ключей, обнаруженных службой GCC, и параметры каждого ключа.

Пример информации по ключу (фрагмент ответа на запрос):

"dongleInfo": {
                "containerActivationTime": 0,
                "containerDeathTime": 0,
                "containerVersion": 0,
                "detachDeathTime": 0,
                "detachedFromDongleId": 0,
                "detachedFromHostName": "",
                "dongleId": 1150899322,
                "dongleMemorySize": 64512,
                "dongleModel": 2,
                "driverType": 2,
                "firmwareFeatures": 7,
                "firmwareState": 0,
                "firmwareVersion": 16778767,
                "hwMcuVersion": 8,
                "netResource": 4114,
                "publicCode": 2894719143,
                "typeFlags": 16826
            }

Параметр dongleId (ID ключа) указан в десятичном формате (например, 1150899322), тогда как в веб-интерфейсе GCC он отражается в шестнадцатеричном (например, 4499547A).

Проверять доступность ключа нужно по его наличию в списке. Если список пуст, значит для GCC на проверяемом хосте недоступен ни один ключ.

Также для мониторинга можно проверять следующие флаги, присутствующие в ответе на запрос:

"flags": {

            "bindHardware": false,
            "bindOs": false,
            "cancelDetachRequired": false,
            "driverless": true,
            "expired": false,
            "externalMicroSd": false,
            "hardwareMismatchedOrFileCorrupted": false,
            "inaccessible": true,
            "isCancelOnlineAllowed": false,
            "isDemoLicense": false,
            "isDetachAllowed": false,
            "isDetachable": false,
            "isDetached": false,
            "isRehostAllowed": false,
            "isTrial": false,
            "isTrialLicenseExpired": false,
            "isVtcEnabled": false,
            "isVtcRunning": false,
            "isVtcSupported": true,
            "lowBattery": false,
            "remote": false,
            "timerError": false
        }

Флаг inaccessible со значением true свидетельствует о том, что ключ недоступен. В частности, такая ситуация возникает, когда извлечён USB-ключ. В веб-интерфейсе это отображается следующим образом:

../../_images/inaccessible-lic-key.png

Пример мониторинга состояния ключей Guardant в Uptime Kuma🔗

Пример того, как можно настроить мониторинг в Uptime Kuma:

  1. Выбираем тип мониторинга — HTTP(s) - Json Query

  2. Проверяем, что ID ключа присутствует в списке и корректен:

    dongles[0].dongleInfo.dongleId
    
  3. Проверяем, что ключ доступен и не извлечён:

    dongles[0].flags.inaccessible == false
    
  4. Проверяем, что параметры хоста, на котором был установлен программный ключ, не изменены, и не повреждено хранилище программных ключей:

    dongles[0].flags.hardwareMismatchedOrFileCorrupted == false
    
  5. Проверяем, что срок использования ключа не истёк:

    dongles[0].flags.expired == false (ключ не протух)
    
  6. Проверяем, что не возникла специфичная проблем с внутренним таймером ключа:

    dongles[0].flags.timerError == false