Устранение неполадок с лицензированием и findface-ntls

При устранении неполадок с лицензией и сервером findface-ntls (см. Лицензирование) первым шагом является получение информации о лицензии и статусе сервера. Это можно сделать, отправив API-запрос в findface-ntls. Действия по устранению неполадок предпринимаются с учетом содержания API-ответа.

Совет

По вопросам устранения неполадок обращайтесь к нашим специалистам по адресу support@ntechlab.com.

Примечание

Онлайн-лицензирование выполняется через Глобальный менеджер лицензий NtechLab license.ntechlab.com. Для онлайн-лицензирования необходимы стабильное интернет-соединение и DNS.

Получить информацию о лицензии

Для получения информации о лицензии FindFace и статусе findface-ntls, выполните в консоли сервера findface-ntls следующую команду:

curl http://localhost:3185/v1/licenses.json -s | jq

Ответ будет возвращен в формате JSON. Одним из наиболее значимых параметров в ответе является .licenses[].last_updated. Он показывает в секундах, как давно в последний раз проверялась локальная лицензия.

Интерпретируйте значение параметра .licenses[].last_updated следующим образом:

  • [0, 5] — все работает отлично.

  • (5, 30] — возможно имеются какие-то проблемы со связью, либо с локальным накопителем, где хранятся файлы лицензий.

  • (30; 120] — почти наверняка случилось что-то нехорошее. Вам следует проверить логи ntls для получения дополнительной информации.

  • (120; ∞) — не удается получить ответ от источника лицензирования в течение длительного времени. Необходимо вмешательство.

  • .licenses[].valid.valid == false: связь с источником лицензирования так и не была установлена.

Еще одно важное поле – .products. В нем описываются доступные функции («фичи») и ресурсы:

  • .products[].features: доступные функции («фичи»).

  • .products[].resources: доступные ограничения на ресурсы и использованное количество этих ресурсов.

  • .products[].extra: дополнительная информация о лицензии.

Ответ также содержит следующие параметры:

  • .time: текущее серверное время в формате временных меток Unix.

  • .licenses[].expire_date: дата истечения срока действия лицензии. Учитывайте в этом поле значение .time.

  • .licenses[].type: тип лицензии.

  • .licenses[].license_id: ID лицензии.

  • .licenses[].generated: время генерации лицензии.

  • .licenses[].source: путь к файлу лицензии.

  • .licenses[].products: какие функции («фичи») и ресурсы предоставляет каждая лицензия. В основном структура аналогична структуре .products, но здесь не передаются данные об использовании ресурсов.

  • .licenses[].valid.description: если .licenses[].valid.valid == false, то в этом поле указывается причина, по которой лицензия недействительна.

  • .services: массив сервисов FindFace Multi, подключенных к ntls.

Пример ответа

{
    "name": "NTLS",
    "time": 1709825691,
    "licenses": [
        {
            "expire_date": 1737208526,
            "generated": 1705586179,
            "last_updated": 2,
            "license_id": "018f4c50e6044f0aa618436ad9450ac0",
            "products": {
                "multi": {
                    "extra": {},
                    "features": {
                        "sec-external-vms": {
                            "value": true
                        },
                        "sec-genetec": {
                            "value": true
                        }
                    },
                    "resources": {}
                },
                "server": {
                    "extra": {},
                    "features": {
                        "body_bags": {
                            "value": true
                        },
                        "body_emben": {
                            "value": true
                        },
                        ...
                    },
                    "resources": {
                        "cameras": {
                            "value": 60
                        },
                        "extapi": {
                            "value": 256
                        },
                        "objects_tntapi": {
                            "value": 200000000
                        }
                    }
                }
            },
            "source": "/ntech/license/Test_license_018f4c50e6044f0aa618436ad9450ac0.lic",
            "type": "offline",
            "valid": {
                "description": "",
                "valid": true
            }
        },
        {
            "expire_date": 0,
            "generated": 1581946976,
            "last_updated": 1,
            "license_id": "017c40d9401742ce9eff8b48d93ded9a",
            "products": {},
            "source": "/ntech/license/ntech_license_017c40d9401742ce9eff8b48d93ded9a.lic",
            "type": "online",
            "valid": {
                "description": "License is not valid",
                "valid": false
            }
        }
    ],
    "products": {
        "multi": {
            "features": {
                "sec-external-vms": {
                    "value": true
                },
                "sec-genetec": {
                    "value": true
                }
            },
            "resources": {},
            "extra": {}
        },
        "server": {
            "features": {
                "body_bags": {
                    "value": true
                },
                "body_emben": {
                    "value": true
                },
                ...
            },
            "resources": {
                "cameras": {
                    "current": 11,
                    "value": 60
                },
                "extapi": {
                    "current": 1,
                    "value": 256
                },
                "objects_tntapi": {
                    "current": 12321,
                    "value": 200000000
                }
            },
            "extra": {}
        }
    },
    "services": [
        { "name": "video-worker-gpu", "ip": "10.255.233.12:48844" },
        { "name": "findface-extraction-api", "ip": "10.255.233.11:44182" },
        { "name": "FindFace-tarantool", "ip": "10.255.233.13:46444" }
    ]
}

Получить отчет

Чтобы получить отчет о счетчиках интервалов лицензий, выполните в консоли сервера findface-ntls команду ниже. Он обновляется раз в час.

curl http://localhost:3185/v1/usage-report.json -s | jq

Пример ответа

{
  "b2c4658412f44184a6e34a2a369ce58c": {
    "active_limits": {
      "counters": {
        "server": {
          "face_beard": {
            "available": 10000,
            "used": 3589
          }
        }
      },
      "since": "2024-07-17T17:00:00+00:00",
      "till": null
    },
    "by_interval": [
      {
        "counters": {
          "server": {
            "body_bags": {
              "used": 0
            }
          }
        },
        "since": "2024-06-30T17:00:00+00:00",
        "till": "2024-07-08T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "face_age": {
              "used": 77
            }
          }
        },
        "since": "2024-07-08T17:00:00+00:00",
        "till": "2024-07-17T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "face_beard": {
              "used": 3589
            }
          }
        },
        "since": "2024-07-17T17:00:00+00:00",
        "till": null
      }
    ]
  },
  "6b5392f68fa84861bb39ce86fa5e42f9": {
    "active_limits": {
      "counters": {
        "server": {
          "body_bags": {
            "available": 10000,
            "used": 1591
          },
          "face_age": {
            "available": 1500,
            "used": 28780
          },
          "face_beard": {
            "available": 5,
            "used": 30852
          },
          "face_emotions": {
            "available": 100,
            "used": 25082
          },
          "face_gender": {
            "available": 10000,
            "used": 1135
          },
          "face_hair": {
            "available": 50,
            "used": 0
          },
          "face_liveness": {
            "available": 10000,
            "used": 184
          }
        }
      },
      "since": "2024-09-18T17:00:00+00:00",
      "till": "2025-07-16T17:00:00+00:00"
    },
    "by_interval": [
      {
        "counters": {
          "server": {
            "body_action_base": {
              "used": 0
            },
            "car_categories": {
              "used": 0
            },
            "face_beard": {
              "used": 0
            }
          }
        },
        "since": "2024-04-24T17:00:00+00:00",
        "till": "2024-04-25T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "body_action_base": {
              "used": 0
            },
            "body_bags": {
              "used": 0
            },
            "car_categories": {
              "used": 0
            },
            "face_age": {
              "used": 0
            }
          }
        },
        "since": "2024-04-25T17:00:00+00:00",
        "till": "2024-04-26T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "car_description": {
              "used": 477785
            },
            "face_emotions": {
              "used": 1843574
            },
            "face_liveness": {
              "used": 0
            },
            "garbage_types": {
              "used": 0
            }
          }
        },
        "since": "2024-04-26T17:00:00+00:00",
        "till": "2024-09-18T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "body_bags": {
              "used": 1591
            },
            "face_age": {
              "used": 28780
            },
            "face_beard": {
              "used": 30852
            },
            "face_emotions": {
              "used": 25082
            },
            "face_gender": {
              "used": 1135
            },
            "face_hair": {
              "used": 0
            },
            "face_liveness": {
              "used": 184
            }
          }
        },
        "since": "2024-09-18T17:00:00+00:00",
        "till": "2025-07-16T17:00:00+00:00"
      },
      {
        "counters": {
          "server": {
            "all_attrs": {
              "used": 0
            },
            "body_action_car": {
              "used": 0
            },
            "body_bags": {
              "used": 0
            },
            "body_other_attrs": {
              "used": 0
            },
            "car_description": {
              "used": 0
            },
            "car_license_plate": {
              "used": 0
            },
            "car_license_plate_visibility": {
              "used": 0
            },
            "car_orientation": {
              "used": 0
            },
            "car_other_attrs": {
              "used": 0
            },
            "car_weight_types": {
              "used": 0
            },
            "face_age": {
              "used": 0
            },
            "face_beard": {
              "used": 0
            },
            "face_emotions": {
              "used": 0
            },
            "face_eyes_attrs": {
              "used": 0
            },
            "face_eyes_openness": {
              "used": 0
            },
            "face_gender": {
              "used": 0
            },
            "face_glasses": {
              "used": 0
            },
            "face_hair": {
              "used": 0
            },
            "face_headpose": {
              "used": 0
            },
            "face_highlight": {
              "used": 0
            },
            "face_liveness": {
              "used": 0
            },
            "face_mouth_attrs": {
              "used": 0
            },
            "garbage_types": {
              "used": 0
            }
          }
        },
        "since": "2025-07-16T17:00:00+00:00",
        "till": null
      }
    ]
  }
}