Узел отчетности: Устранение чувствительности к регистру имени сборщика данных после ServerDR
Summary: После повторного развертывания узла отчетности и выполнения аварийного восстановления сервера (Server Disaster Recovery, ServerDR) новые данные не синхронизируются, так как имя сборщика данных чувствительно к регистру. База данных хранила «data-collector@report» (в нижнем регистре), в то время как имя хоста узла имеет верхний регистр. В журнале отображается java.net.ConnectException: Не удалось подключиться к localhost/127.0.0.1:18455. Устраните проблему, повторно развернув файл с именем хоста в том же регистре, что и исходное имя, и повторно запустите ServerDR. Или обновите data_collector_name в PostgreSQL (collected_system таблица) до правильного регистра и перезапустите службу сборщика данных. ...
Symptoms
Обнаруженные проблемы после сообщения о повторном развертывании узла и ServerDR.
Были выявлены следующие симптомы:
- Новые данные, собранные после выполнения ServerDR, не отображаются ни в каких отчетах.
- В обозревателе отчетов отображаются только данные за прошлые периоды.
- Журналы службы сборщика данных содержат сообщение о сбое подключения.
- Запрос к базе данных показывает имя сборщика данных, хранящееся в нижнем/верхнем регистре (например,
data-collector@report). - Текущее имя хоста узла, передающего отчеты, имеет другой регистр (в верхнем или нижнем регистре), чем имя, записанное в базе данных.
Соответствующие записи журнала из /var/log/reporting/logs/data-collector/data-collector.log :
2026-02-10T06:45:00.006Z INFO [] [DataCollectionQuartzScheduler_Worker-1] [c.e.b.d.c.s.DataCollectionJob.execute(17)] - Start to perform data collection.
2026-02-10T06:45:00.007Z INFO [] [DataCollectionQuartzScheduler_Worker-1] [c.e.b.d.c.s.d.c.DataCollectionService.doCollect(93)] - Query systems by data collector data-collector@REPORT.
2026-02-10T06:45:00.113Z ERROR [] [DataCollectionQuartzScheduler_Worker-1] [c.e.b.d.c.a.CollectedSystemApiServiceImpl.findAllByDataCollectorName(227)] - Error finding all by data collector name: data-collector@gcntnb05
java.net.ConnectException: Failed to connect to localhost/127.0.0.1:18455
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:297)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:207)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)
Команда, используемая для проверки записей сборщика в базе данных:
psql postgresql://reporting:Password123\!@127.0.0.1:9003/collected_business_data -c "select * from public.collected_system"
Cause
Несоответствие имени сборщика данных с учетом регистра
Проблема возникает из-за того, что data_collector_name Хранение в базе данных узла Reporting чувствительно к регистру. После повторного развертывания узла, передающего отчеты, его имя хоста отображается в верхнем регистре, а исходное имя хоста, записанное во время ServerDR, — в нижнем регистре. Это несоответствие не позволяет службе сборщика данных найти правильную запись, что приводит к сбоям синхронизации данных.
- Запись в базе данных для
data_collector_nameсохраняется в нижнем регистре (например,data-collector@report ). - Текущее имя хоста узла отчетов имеет верхний регистр, но предыдущее имя хоста ServerDR имеет нижний регистр (например,
REPORT). - Поскольку при сравнении имен учитывается регистр, сервис не может сопоставить сохраненное имя с текущим именем хоста.
Результирующая ошибка подключения
2026-02-10T06:45:00.113Z ERROR [] [DataCollectionQuartzScheduler_Worker-1] [c.e.b.d.c.a.CollectedSystemApiServiceImpl.findAllByDataCollectorName(227)] - Error finding all by data collector name: data-collector@REPORT
java.net.ConnectException: Failed to connect to localhost/127.0.0.1:18455
at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:297)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:207)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:226)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74)
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255)Resolution
Восстановление данных узла Reporting после ServerDR.
Вариант 1. Повторно разверните узел Reporting с правильным именем хоста.
Используйте этот метод, если вы предпочитаете чистое повторное развертывание.
- Убедитесь, что новое имя хоста узла отчетности совпадает с исходным именем хоста **точно**, включая регистр (например, REPORT vs report).
- Повторно разверните узел отчетности, используя правильное имя узла.
- Снова выполните ServerDR (аварийное восстановление сервера) на узле отчетности.
Вариант 2 – Обновление имени сборщика данных непосредственно в базе данных
Используйте этот метод, чтобы избежать полного повторного развертывания.
- Войдите в узел отчетности с соответствующими привилегиями.
- Проверьте текущие записи сборщика данных:
psql postgresql://reporting:[PASSWORD]@127.0.0.1:9003/collected_business_data -c "SELECT * FROM public.collected_system;"
- Найдите строку, содержащую старое имя хоста, и запишите значение ее адреса (например, 192.168.1.15).
- Чтобы соответствовать текущему регистру имени хоста, выполните следующие действия.
postgresql://reporting:[PASSWORD]@127.0.0.1:9003/collected_business_data -c "UPDATE public.collected_system SET data_collector_name='data-collector@[HOSTNAME]' WHERE address='[IP_ADDRESS]';"
Замените [HOSTNAME] точным именем узла отчетности (с учетом регистра), а [IP_ADDRESS] — адресом, указанным на шаге 2. - Перезапустите службу сборщика данных, чтобы применить изменение:
systemctl restart data-collector.service
Проверка
- Проверьте журнал сборщика данных на наличие успешных запросов:
cat /var/log/reporting/logs/data-collector/data-collector.log | grep -i "Start to perform data collection"
НетConnectExceptionДолжны появиться ошибки. - Подождите около часа, затем откройте браузер отчетов и убедитесь, что новые собранные данные отображаются вместе с данными за прошлые периоды.
data_collector_name Поле чувствительно к регистру. Несоответствие регистра имени хоста и записи в базе данных препятствует синхронизации данных.