feat(memory): add memory threshold alerts (#5366)

* feat(memory): add memory threshold alerts

Add memory (RAM) threshold alerts following the same architecture as
CPU alerts: CheckMemJob with @every 1m cadence, memoryAlarmWanted gate,
tgMemory/smtpMemory per-subscriber settings (default 80%), EventBusCheckboxes
with inline threshold input, i18n for en-US/ru-RU with English defaults.

# Conflicts:
#	internal/web/translation/ar-EG.json
#	internal/web/translation/es-ES.json
#	internal/web/translation/fa-IR.json
#	internal/web/translation/id-ID.json
#	internal/web/translation/ja-JP.json
#	internal/web/translation/pt-BR.json
#	internal/web/translation/ru-RU.json
#	internal/web/translation/tr-TR.json
#	internal/web/translation/uk-UA.json
#	internal/web/translation/vi-VN.json
#	internal/web/translation/zh-CN.json
#	internal/web/translation/zh-TW.json

* fix: address code review findings for memory alerts

- Remove dead settingService field from CheckMemJob
- Fix cpuThreshold double-emoji in 12 locale files (code prepends 🔴)
- Align TgCpu/TgMemory fields in entity.go
- Add missing SetTgMemory function

* fix: restore settingService in CheckMemJob for consistency with CheckCpuJob
This commit is contained in:
Sentiago
2026-06-21 17:45:33 +02:00
committed by GitHub
parent 648fc69cb1
commit 891d3a8759
28 changed files with 267 additions and 39 deletions
+5 -3
View File
@@ -1309,6 +1309,7 @@
"smtpErrorRelay": "Сервер відхиляє надсилання з цієї адреси",
"smtpErrorEof": "З'єднання закрито сервером",
"smtpErrorUnknown": "Помилка SMTP: {{ .Error }}",
"eventMemoryHigh": "Високе використання пам'яті (%)",
"remarkTemplate": "Шаблон примітки",
"remarkTemplateDesc": "Якщо задано, це замінює модель примітки для кожного посилання підписки — напишіть власний формат із токенами змінних (використовуйте кнопку для їх вставлення). Залиште порожнім, щоб використовувати модель вище."
},
@@ -1865,7 +1866,7 @@
"idDesc": "Показати ваш Telegram ID"
},
"messages": {
"cpuThreshold": "🔴 Навантаження ЦП {{ .Percent }}% перевищує порогове значення {{ .Threshold }}%",
"cpuThreshold": "Навантаження ЦП {{ .Percent }}% перевищує порогове значення {{ .Threshold }}%",
"selectUserFailed": "❌ Помилка під час вибору користувача!",
"userSaved": "✅ Користувача Telegram збережено.",
"loginSuccess": "✅ Успішно ввійшли в панель\r\n",
@@ -1940,7 +1941,8 @@
"eventNodeUp": "Вузол {{ .Name }} ДОСТУПНИЙ",
"eventCPUHigh": "Високе навантаження на CPU",
"eventCPUHighDetail": "CPU: {{ .Detail }}",
"eventLoginFallback": "Невдала спроба входу з {{ .Source }}"
"eventLoginFallback": "Невдала спроба входу з {{ .Source }}",
"memoryThreshold": "Використання пам'яті {{ .Percent }}% перевищує порогове значення {{ .Threshold }}%"
},
"buttons": {
"closeKeyboard": "❌ Закрити клавіатуру",
@@ -2043,4 +2045,4 @@
"statusDown": "НЕДОСТУПНО",
"statusUp": "ДОСТУПНО"
}
}
}