Сервис для отправки сообщений в федеральную СМЭВ3
Pipiline status
Предназначение
Отправка и получение сообщений в СМЭВ3
Переменные окружения
Переменные для конфигурирования подключения к RabbitMQ: MQ_HOST, MQ_PORT, CA_CERT, CLIENT_CERT, CLIENT_KEY
Переменные для конфигурирования подключения к БД: DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER, DATABASE_PASS.
Название | Описание | ||
---|---|---|---|
SMEV_KEY | Ключ СМЭВ3 | ||
SMEV_CERT | Сертификат СМЭВ3 | ||
NODE_ID | Параметр node_id для сообщения СМЭВ3 | ||
SMEV_GET_FILTER | Фильтры для GetResponse. Формат: "ns1|name1;ns2|name2" | ||
SMEV_SIGN_ALGORITHM | Алгоритм подписи (gost2001,gost12_256,gost12_512) | ||
SMEV_DGST_ALGORITHM | Алгоритм хеширования (gost2001,gost12_256,gost12_512) | ||
SMEV_SKIP_SIGN_CHECK | Пропуск проверки подписи СМЭВ3 (true,false) | ||
ELASTIC_HOST | ip для подключения к ElasticSearch | ||
ELASTIC_PORT | port для подключения к ElasticSearch | ||
SMEV_ACK_UNKNOWN | подтверждать ли сообщения с неизвестным smev_message_id(true,false) | ||
SMEV_SAVE_UNKNOWN_LOGS | логировать ли сообщения с неизвестным smev_message_id(true,false) | ||
SERVICE_USE_PRODUCTION | Отвечает за наличие признака TestMsg в сообщениях СМЭВ. НЕ СВЯЗАН С ПЕРЕКЛЮЧЕНИЕМ ТЕСТОВОГО/ПРОДУКТОВОГО КОНТУРА СМЭВ |
||
SMEV_ENDPOINT | Переключает адрес подключения к СМЭВ3. Именно этот параметр переключает тестовый/продуктовый контур СМЭВ3. Допустимые значения: <ul><li>http://smev3-n0.test.gosuslugi.ru:7500/ws?wsdl</li><li>http://172.20.3.12:7500/ws?wsdl - может иметь другое значение</li></ul> |
||
CRYPTO_PROVIDER | Способ подписания (cryptopro | signer | openssl) |
CRYPTOPRO_KPS | Имя сертификата для поиска для режима КриптоПРО | ||
CRYPTOPRO_PIN | Пин доступа к токену для режима КриптоПРО | ||
SIGNER_URL | Адрес сервиса подписания для режима signer | ||
SIGNER_SRV_CERT | Сертификат сервиса подписания | ||
SIGNER_CLIENT_CERT | Сертификат для подключения к сервису подписания | ||
SIGNER_CLIENT_KEY | Ключ для подключения к сервису подписания |
Пример json запроса
Для проверки настройки сервиса можно отправить в консоли MQ следующий запрос:
Заголовки:
json
{
"type": "Smev3Request",
"ticket": "TICKET_UNIQ_ID",
"reply_to": "test",
"consumer": "test",
"user_id": "test"
}
Тело:
```json
{
"envelope": "<tns:ESIADataVerifyRequest xmlns:tns="urn://mincomsvyaz/esia/uprid/1.4.0" xmlns:ns2="urn://mincomsvyaz/esia/commons/rg_sevices_types/1.4.0">
</tns:ESIADataVerifyRequest>" } ```
Телеметрия
При настроенном адресе ElasticSearch сервис шлет телеметрию в следующем виде:
json
{
"_index": "aggredator_YYYY-MM-DD",
"_source": {
"event": "service.request.status",
"event_id": "02a35e2c9998e4018062",
"started": "2019-04-08T14:07:32.140+03:00",
"finished": "2019-04-08T14:07:32.140+03:00",
"duration": 0.000029052,
"data": {
"from": 102,
"to": 200,
"text": "",
"id": 3289,
"ticket": "78dd8b37-59ee-11e9-b38d-309c23099aca",
"service": "test",
"processing_code": "7b825678-59ee-11e9-978c-0242ac13000a",
"request_to_smev_at": "2019-04-08T11:07:22.000Z",
"response_to_smev_at": "2019-04-08T11:07:28.000Z",
"response_from_smev_at": "2019-04-08T11:07:31.951Z",
"smev_duration": 6,
"total_duration": 9.951
},
"certs": {
"smev_cert_not_after": "2020-03-28T15:42:54.000Z",
"service_cert_not_after": "2020-03-21T15:49:33.000Z",
"mq_ca_cert_not_after": "2020-03-21T15:49:31.000Z",
"cn": "smev3"
},
"service": {
"app": "smev3",
"service": "smev3",
"aggredator": "unknown"
},
"system": {
"cpu": "x86_64",
"os": "linux",
"hostname": "9ee52afc2d9b"
},
"@timestamp": "2019-04-08T14:07:32.141+03:00"
}
}
Тип события передается в поле event
Название | Описание |
---|---|
smev3.request.send | Отправка HTTP сообщения в СМЭВ3 при постановке запроса |
smev3.request.parse | Разбор ответа от СМЭВ3 при постановке запроса |
smev3.result.get | Отправка HTTP сообщения в СМЭВ3 при проверке входной очереди |
smev3.result.parse | Разбор ответа от СМЭВ3 при проверке входной очереди |
smev3.result.unregistered | Появления сообщения с неизвестным идентификатором |
smev3.result.result | Появление ответа на ранее отправленный запрос |
service.request.status | Изменение статуса запроса(100->102->200) и тайминги конкретного запроса |
dispatcher.request | Служебное. Получение входного сообщения от MQ |
dispatcher.result_rejected | Служебное. Ошибка отпарвки сообщения в MQ |
dispatcher.exception | Служебное. Ошибка при обработке сообщения от MQ |
Метрики сервиса:
json
{
"_index": "aggredator_2019-04-08",
"_source": {
"gauges": true,
"event": "gauge",
"queues": {
"pending": 343,
"wait_request": 0,
"wait_response": 343
},
"certs": {
"smev_cert_not_after": "2020-03-28T15:42:54.000Z",
"service_cert_not_after": "2020-03-21T15:49:33.000Z",
"mq_ca_cert_not_after": "2020-03-21T15:49:31.000Z",
"cn": "smev3"
},
"service": {
"app": "smev3",
"service": "smev3",
"aggredator": "unknown"
},
"system": {
"cpu": "x86_64",
"os": "linux",
"hostname": "9ee52afc2d9b"
},
"@timestamp": "2019-04-08T14:51:47.825+03:00"
}
}
Название | Описание |
---|---|
queues.pending | общее число входящих запросов, требующих обработки в СМЭВ3(сумма wait_request + wait_response) |
queues.wait_request | число запросов еще не отпарвленных в СМЭВ3 |
queues.wait_response | число запросов уже отправленных в СМЭВ3, но ожидающих ответа |