# Рассинхронизация системного времени

Модуль интеграции Itgrix проверяет точность синхронизации системного времени и сообщает на странице статуса в админке о больших расхождениях на следующих серверах:

* сервер где установлен модуль интеграции Itgrix;
* сервер Asterisk;
* сервер CRM.

Сильные отклонения могут создавать проблемы при работе модуля интеграции:

* нарушение работы процедуры автоматического обновления токена авторизации в CRM;
* ошибки выполнения запросов;
* некорректные временные метки в CRM.

Админка отображает расхождение времени для каждого сервера в секундах относительно глобального корректного времени.

## Настройка синхронизации времени на сервере

Для устранения рассинхронизации системного времени рекомендуется настроить автоматическую синхронизацию времени на серверах при помощи служб синхронизации времени, таких как ntpd, chrony, timesyncd. Ниже приведены инструкции по настройке для распространённых операционных систем.

| Операционная система                   | Инструкция по настройке                                                                                                                          |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| Red Hat (CentOS/Sangoma/FreePBX/Rocky) | <https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-configuring_ntp_using_the_chrony_suite> |
| Debian                                 | <https://wiki.debian.org/NTP>                                                                                                                    |
| Ubuntu                                 | <https://documentation.ubuntu.com/server/how-to/networking/chrony-client/>                                                                       |

## Настройка проверки точности синхронизации времени

Проверка точности синхронизации времени выполняется регулярно по расписанию при помощи SNTP и HTTP запросов к серверам, предоставляющим точное время.

Параметры проверки можно изменить, добавив в файл конфигурации `/etc/itgrix_<crm>/config.json` блок `app.time_sync` с желаемыми параметрами. По умолчанию он отсутствует, что соответствует следующим значениям:

```json
{
    "app": {
        "time_sync": {
            "enabled": true,
            "check_interval_min": 360,
            "retry_interval_min": 30,
            "sntp_server_list": [
                "0.pool.ntp.org",
                "ru.pool.ntp.org",
                "time.google.com",
                "time.cloudflare.com"
            ],
            "sntp_samples": 5,
            "request_timeout_msec": 2000,
            "http_server_list": [
                "https://google.com",
                "https://example.com",
                "https://lk.bx24asterisk.ru"
            ]
        }
    }
}
```

Доступные настройки:

* `enabled` - позволяет полностью отключить проверку точности синхронизации времени;
* `check_interval_min` - интервал проверки точности синхронизации времени в минутах (по умолчанию 6 часов);
* `retry_interval_min` - интервал повторных попыток проверки при ошибках;
* `sntp_server_list` - список серверов времени для выполнения SNTP запросов (используется стандартный порт 123);
* `sntp_samples` - количество SNTP запросов на каждый сервер;
* `request_timeout_msec` - таймаут запросов в миллисекундах;
* `http_server_list` - список адресов для проверки синхронизации времени\
  по HTTP заголовку `Date`, используется когда SNTP запросы не проходят успешно.

Отсутствующие опции принимают значения по умолчанию, указанные выше.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.itgrix.ru/how-to-fix/time-sync.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
