docs: add 172.16.8.150 monitoring server and KSP-Steel/monitoring to knowledge base

- Added server-150 root credentials and Vault lookup examples
- Documented Zabbix 7.0, Grafana, Prometheus, Loki, Portainer and Alert Bridge
- Added monitoring ports, targets and Synology NFS backup workflow
- Updated topology map and disaster recovery runbooks
This commit is contained in:
Shelyagin Roman
2026-09-28 15:57:30 +05:00
parent b46a9c1dd2
commit 2a683fda47
9 changed files with 97 additions and 42 deletions
+1
View File
@@ -0,0 +1 @@
*.metadata.json
+35 -19
View File
@@ -37,7 +37,7 @@
## 🗺️ Архитектурная карта и взаимосвязи проектов
Инфраструктура состоит из 4 взаимосвязанных блоков:
Инфраструктура состоит из взаимосвязанных блоков:
```mermaid
graph TD
@@ -45,12 +45,17 @@ graph TD
Web -->|"Интеграция ящиков (?mailbox=)"| MG["MailGuard SOC (172.16.8.151)"]
Web -->|"Телеметрия & AD"| DC["Active Directory (172.16.8.9 / 19)"]
Mon["Сервер Мониторинга (172.16.8.150)"] -->|"Zabbix / Prometheus"| Web
Mon -->|"Телеметрия"| MG
Mon -->|"Метрики узлов"| KVM["Гипервизоры KVM (172.16.15.1/3/4)"]
Mon -->|"Алерты Webhook"| Syno["Synology NFS (172.16.11.133)"]
TG["Telegram Чат (KSP INFO)"] --> Bot["ChatOps Bot (172.16.8.8)"]
Bot -->|"Триггер шаблонов"| Sem["Ansible Semaphore (172.16.8.8:3000)"]
Sem -->|"Запуск плейбуков"| Playbooks["Ansible Core (172.16.8.8)"]
Playbooks -->|"Динамический запрос паролей"| Vault["HashiCorp Vault (172.16.8.8:8200)"]
Playbooks -->|"Аудит & Бэкапы"| KVM["Гипервизоры KVM (172.16.15.1)"]
Playbooks -->|"Аудит & Бэкапы"| KVM
Playbooks -->|"Дампы mysqldump"| DB["Кластер MySQL (192.168.220.x)"]
Playbooks -->|"Аудит безопасности"| DC
```
@@ -68,7 +73,7 @@ export VAULT_TOKEN="<ВАШ_РООТ_ТОКЕН_VAULT>"
```
### Шаг 2: Извлечение мастер-ключа SSH (Рекомендуется для беспарольного доступа)
В Vault хранится закрытый ключ Ed25519, публичная часть которого прописана в `/root/.ssh/authorized_keys` на серверах:
В Vault хранится закрытый ключ Ed25519, публичная часть которого прописана в `/root/.ssh/authorized_keys` на всех серверах:
```bash
# Получить закрытый ключ SSH и настроить окружение:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
@@ -76,9 +81,10 @@ curl -s -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_ADDR/v1/servers/data/master-ssh
| python3 -c "import sys, json; print(json.load(sys.stdin)['data']['data']['private_key'])" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
# Подключение к любому серверу по SSH без запроса пароля:
ssh root@172.16.8.8 # Сервер автоматизации и Gitea
# Подключение к серверам по SSH без запроса пароля:
ssh root@172.16.8.8 # Сервер автоматизации, Gitea, Vault
ssh root@172.16.8.151 # Почтовый архив MailGuard
ssh root@172.16.8.150 # Сервер мониторинга (Zabbix/Grafana/Prometheus)
```
### Шаг 3: Получение root-паролей серверов из Vault
@@ -92,50 +98,60 @@ curl -s -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_ADDR/v1/servers/data/server-8-8
curl -s -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_ADDR/v1/servers/data/server-151" \
| python3 -c "import sys, json; print(json.load(sys.stdin)['data']['data']['password'])"
# 3. KVM гипервизор vm-host01 (172.16.15.1):
# 3. Сервер 172.16.8.150 (Zabbix, Grafana, Prometheus, Portainer):
curl -s -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_ADDR/v1/servers/data/server-150" \
| python3 -c "import sys, json; print(json.load(sys.stdin)['data']['data']['password'])"
# 4. KVM гипервизор vm-host01 (172.16.15.1):
curl -s -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_ADDR/v1/servers/data/vm-host01" \
| python3 -c "import sys, json; print(json.load(sys.stdin)['data']['data']['password'])"
# 4. Серверы баз данных MySQL:
# 5. Серверы баз данных MySQL:
curl -s -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_ADDR/v1/servers/data/mysql-main" \
| python3 -c "import sys, json; d=json.load(sys.stdin)['data']['data']; print('SSH:', d['ssh_password'], 'DB:', d['db_password'])"
```
---
## 📂 Справочник проектов и расположение на серверах
### 1. `KSP-Steel/Infosystem` (Портал предприятия)
- **Сервер**: `172.16.8.75` (Proxmox LXC, папка `/opt/infosystem`)
- **Стек**: Vue 3 (Composition API, TypeScript, Tailwind CSS, Pinia, Lucide icons), FastAPI (Python 3.11), MySQL (порт 3307), Nginx.
- **Особенности**:
- `v2/frontend`: Современный SPA-интерфейс предприятия.
- Поддержка быстрого перехода в почтовый архив MailGuard: вызов `resolveMailboxEmail()`, который транслирует внутренние адреса леса домена (`@network.bkv-pvl.kz`) в реальные внешние ящики (`@ksp-steel.kz`), отображая визуально правильный email сотрудника.
- Поддержка быстрого перехода в почтовый архив MailGuard: вызов `resolveMailboxEmail()`.
### 2. `KSP-Steel/mailguard` (Почтовый архив ИБ)
- **Сервер**: `172.16.8.151` (папка `/opt/mailguard`)
- **Стек**: Python 3 worker/ingestion, Meilisearch (полнотекстовый поиск), PostgreSQL, Nginx, Docker.
- **Особенности**:
- Индексирует 700 000+ входящих и исходящих писем завода.
- Deep-link механизм: переход по `#mailboxes?mailbox=<email>` автоматически подставляет email в поле поиска, раскрывает буквенную ветку сотрудника в алфавитном дереве и открывает досье переписки справа.
- Deep-link механизм: переход по `#mailboxes?mailbox=<email>` автоматически фильтрует дерево и открывает переписку.
### 3. `KSP-Steel/ansible` (Автоматизация и ChatOps)
### 3. `KSP-Steel/monitoring` (Центральный мониторинг и телеметрия)
- **Сервер**: `172.16.8.150` (репозиторий в `/opt/monitoring-repo`, боевые папки `/opt/zabbix-docker`, `/opt/monitor`, `/opt/loki`)
- **Стек**: Zabbix 7.0 (PostgreSQL 16), Prometheus, Grafana, Grafana Loki, Portainer CE, Alert Bridge.
- **Особенности**:
- Zabbix Web на порту 80, Grafana на 3000, Prometheus на 9090, Portainer на 8000/9443.
- Микросервис `grafana-alert-bridge` (порт 9095) принимает алерты от Grafana по вебхуку и складывает журнал в Synology NAS (`/mnt/synology_infosec/log/01_grafana_errors/server-errors.log`).
- Автоматический скрипт резервного копирования: `/opt/monitoring-repo/scripts/backup_monitoring.sh` (в cron каждую ночь в 03:30).
### 4. `KSP-Steel/ansible` (Автоматизация и ChatOps)
- **Сервер**: `172.16.8.8` (папка `/opt/ansible/playbooks`)
- **Стек**: Ansible Core 2.15+, Semaphore UI (порт 3000), Python Telegram Bot (`semaphore-bot.service`).
- **Особенности**:
- Плейбуки для аудита безопасности AD (`ad_security_and_health.yaml`), создания учетных записей (`ad_exim_user_onboarding.yaml`), сброса паролей (`ad_user_password_reset.yaml`), мониторинга гипервизора (`vm-host01_health_check.yaml`), дампов MySQL (`mysql_audit_and_dump.yaml`).
- Все учетные данные подтягиваются на лету из Vault через lookup-плагин:
`{{ lookup('community.hashi_vault.hashi_vault', 'secret=servers/data/...:password') }}`
- Плейбуки для аудита безопасности AD, онбординга сотрудников, сброса паролей, мониторинга гипервизоров, дампов MySQL.
- Все секреты запрашиваются динамически из Vault через `community.hashi_vault.hashi_vault`.
### 4. `KSP-Steel/hashicorp-vault` (Хранилище секретов)
### 5. `KSP-Steel/hashicorp-vault` (Хранилище секретов)
- **Сервер**: `172.16.8.8` (папка `/opt/infra`)
- **Стек**: HashiCorp Vault (`hashicorp/vault:latest`), Gitea, PostgreSQL, Docker Compose.
- **Стек**: HashiCorp Vault, Gitea, PostgreSQL, Docker Compose.
- **Особенности**:
- Точка входа: `http://172.16.8.8:8200`
- Распечатка (Unseal): `/opt/infra/scripts/unseal_vault.sh`
- Резервное копирование: `/opt/infra/scripts/backup_vault.sh`
- Движок `servers/` (KV v2):
- `servers/data/vm-host01` — пароль гипервизора
- `servers/data/mysql-main` — пароли основных MySQL
- `servers/data/mysql-special` — пароли спец-серверов MySQL
- Движок `servers/` (KV v2): `server-8-8`, `server-151`, `server-150`, `vm-host01`, `mysql-main`, `mysql-special`, `master-ssh-key`.
---
-4
View File
@@ -1,4 +0,0 @@
{
"summary": "AI Agent Operational Playbook and Safety Protocol",
"updatedAt": "2026-09-28T10:42:09.419989309Z"
}
+33
View File
@@ -84,3 +84,36 @@ docker compose down
docker compose up -d --build
```
Проверка работоспособности: `curl -I http://127.0.0.1:8090/`
---
## 5. Стек мониторинга и телеметрии (`172.16.8.150`)
### Сценарий А: Перезапуск компонентов
На сервере подготовлен скрипт управления:
```bash
ssh root@172.16.8.150 "/opt/monitoring-repo/scripts/restart_services.sh all"
# Либо по отдельности:
/opt/monitoring-repo/scripts/restart_services.sh zabbix
/opt/monitoring-repo/scripts/restart_services.sh prometheus
/opt/monitoring-repo/scripts/restart_services.sh grafana
/opt/monitoring-repo/scripts/restart_services.sh bridge
/opt/monitoring-repo/scripts/restart_services.sh loki
```
### Сценарий Б: Восстановление из бэкапов на Synology
Все бэкапы сохраняются на NAS Synology в `/mnt/synology_infosec/backups/monitoring/<TIMESTAMP>/`.
1. **Восстановление БД Zabbix (PostgreSQL)**:
```bash
gunzip < /mnt/synology_infosec/backups/monitoring/<DATE>/zabbix_db_<DATE>.sql.gz \
| docker exec -i zabbix-postgres psql -U zabbix zabbix
```
2. **Восстановление конфигураций (Prometheus, Grafana, Alert Bridge, Loki)**:
```bash
tar -xzf /mnt/synology_infosec/backups/monitoring/<DATE>/monitoring_configs_<DATE>.tar.gz -C /opt/
```
3. **Ручной запуск бэкапа**:
```bash
/opt/monitoring-repo/scripts/backup_monitoring.sh
```
-4
View File
@@ -1,4 +0,0 @@
{
"summary": "Disaster Recovery and Backup Procedures",
"updatedAt": "2026-09-28T10:44:14.990392137Z"
}
+21 -5
View File
@@ -9,22 +9,35 @@
| ПОДСЕТЬ УПРАВЛЕНИЯ И СЕРВИСОВ: 172.16.8.0/24 |
| - 172.16.8.8 : InfosystemLocal (Gitea, HashiCorp Vault, Semaphore, ChatOps Bot)|
| - 172.16.8.75 : infosystem-2 (Инфосистема 2.0, FastAPI, Vue 3, PerCo, MySQL) |
| - 172.16.8.150 : monitor-server (Zabbix 7.0, Grafana, Prometheus, Loki, Portainer)|
| - 172.16.8.151 : mailguard (Почтовый архив SOC MailGuard, Exim, Meilisearch) |
| - 172.16.8.9 : dc1 (Основной контроллер домена Active Directory, DNS, Kerberos)|
| - 172.16.8.19 : dc2 (Резервный контроллер домена Active Directory, DNS) |
| - 172.16.8.19 : dc2 (Резервный контроллер домена Active Directory, DNS, WMI) |
| - 172.16.8.37 : db-corp-web (MySQL сервер корпоративных веб-сервисов) |
| - 172.16.8.25 : db-it-ops (MySQL сервер ИТ-мониторинга и регламентов) |
| - 172.16.8.43 : infosystem-legacy (Устаревший хост Инфосистемы) |
| - 172.16.8.40 : local-web (Локальный веб-сервер) |
| - 172.16.8.23 : wiki-doc (Корпоративная база знаний Wiki/Docs) |
| - 172.16.8.4 : exim-local (Локальный почтовый узел Exim) |
+-----------------------------------------------------------------------------------+
|
+-----------------------------------------------------------------------------------+
| ПОДСЕТЬ СЕРВЕРОВ ВИРТУАЛИЗАЦИИ: 172.16.15.0/24 |
| - 172.16.15.1 : vm-host01 (KVM/QEMU хост виртуализации, libvirt, ZFS storage) |
| - 172.16.15.3 : VM_Host03 (KVM гипервизор, smartctl мониторинг хранилища) |
| - 172.16.15.4 : vm-host04 (KVM гипервизор производственных систем) |
+-----------------------------------------------------------------------------------+
|
+-----------------------------------------------------------------------------------+
| ИЗОЛИРОВАННАЯ ПОДСЕТЬ DMZ / CLOUD: 192.168.220.0/24 |
| - 192.168.220.3 : exim-corp (Внешний корпоративный почтовый шлюз Exim) |
| - 192.168.220.103 : db-dmz-mail-ftp (MySQL почтового шлюза и передачи файлов) |
| - 192.168.220.22 : db-cloud-dns (MySQL DNS и внешних облачных сервисов) |
+-----------------------------------------------------------------------------------+
|
+-----------------------------------------------------------------------------------+
| СЕТЕВОЕ ХРАНИЛИЩЕ БЭКАПОВ И АРХИВОВ: 172.16.11.0/24 |
| - 172.16.11.133: Synology NAS (/volume4/INFOSEC -> /mnt/synology_infosec) |
+-----------------------------------------------------------------------------------+
```
@@ -35,13 +48,16 @@
| Имя хоста | IP-адрес | Роль / Назначение | ОС / Стек | Порты | Путь к секрету в HashiCorp Vault |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **InfosystemLocal** | `172.16.8.8` | Gitea, HashiCorp Vault, Semaphore, Telegram Bot | Debian 12 (Linux 6.17 PVE) | `22` (SSH)<br>`80` (Gitea)<br>`8200` (Vault)<br>`3000` (Semaphore) | `servers/data/server-8-8` |
| **monitor-server** | `172.16.8.150` | Центральный сервер мониторинга и телеметрии | Ubuntu 25.04 (Docker) | `22` (SSH)<br>`80` (Zabbix)<br>`3000` (Grafana)<br>`3100` (Loki)<br>`8000/9443` (Portainer)<br>`9090` (Prometheus)<br>`9095` (Alert Bridge)<br>`10051` (Zabbix Core) | `servers/data/server-150` |
| **mailguard** | `172.16.8.151` | Архив корпоративной почты ИБ | Debian 12 (Docker) | `22` (SSH)<br>`80` (Web UI)<br>`2525` (Ingestion) | `servers/data/server-151` |
| **infosystem-2** | `172.16.8.75` | Портал предприятия Инфосистема 2.0 | Proxmox LXC (Docker) | `22` (SSH)<br>`8090` (Web)<br>`8091` (API)<br>`3307` (MySQL) | `servers/data/server-75` |
| **vm-host01** | `172.16.15.1` | Физический гипервизор KVM | Linux KVM / QEMU | `22` (SSH) | `servers/data/vm-host01` |
| **vm-host01** | `172.16.15.1` | Физический гипервизор KVM | Linux KVM / QEMU | `22` (SSH), `9100` (Node Exp) | `servers/data/vm-host01` |
| **VM_Host03** | `172.16.15.3` | Физический гипервизор KVM | Linux KVM / QEMU | `22` (SSH), `9100`, `9633` (Smartctl) | `servers/data/vm-host03` |
| **vm-host04** | `172.16.15.4` | Физический гипервизор KVM | Linux KVM / QEMU | `22` (SSH), `9100` (Node Exp) | `servers/data/vm-host04` |
| **dc1** | `172.16.8.9` | Primary Domain Controller AD | Windows Server | `53, 88, 389, 445, 5985` (WinRM) | — (WinRM NTLM) |
| **dc2** | `172.16.8.19` | Secondary Domain Controller AD | Windows Server | `53, 88, 389, 445, 5985` (WinRM) | — (WinRM NTLM) |
| **dc2** | `172.16.8.19` | Secondary Domain Controller AD | Windows Server | `53, 88, 389, 445, 5985` (WinRM), `9182` | — (WinRM NTLM) |
| **db-dmz-mail-ftp**| `192.168.220.103`| База данных почты и FTP | Linux / MySQL 8 | `22` (SSH), `3306` (MySQL) | `servers/data/mysql-main` |
| **db-corp-web** | `172.16.8.37` | База данных корпоративных сайтов | Linux / MySQL 8 | `22` (SSH), `3306` (MySQL) | `servers/data/mysql-main` |
| **db-corp-web** | `172.16.8.37` | База данных корпоративных сайтов | Linux / MySQL 8 | `22` (SSH), `3306` (MySQL), `9104` | `servers/data/mysql-main` |
| **db-cloud-dns** | `192.168.220.22` | База данных Cloud DNS | Linux / MySQL 8 | `22` (SSH), `3306` (MySQL) | `servers/data/mysql-special` |
| **db-it-ops** | `172.16.8.25` | База данных ИТ-операций | Linux / MySQL 8 | `22` (SSH), `3306` (MySQL) | `servers/data/mysql-special` |
@@ -56,4 +72,4 @@
```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF0rW5m6mvAg+Q9nDXCN6+H8i3w/QjyWLbGSJC3L+/Bw shelyagin_ra@KPP019011
```
Этот ключ прописан в `/root/.ssh/authorized_keys` на серверах инфраструктуры.
Этот ключ прописан в `/root/.ssh/authorized_keys` на всех ключевых серверах инфраструктуры (`172.16.8.8`, `172.16.8.151`, `172.16.8.150`).
-4
View File
@@ -1,4 +0,0 @@
{
"summary": "Network Topology & Server Infrastructure Map",
"updatedAt": "2026-09-28T10:44:08.877757233Z"
}
+7 -2
View File
@@ -16,7 +16,7 @@
Полный реестр физических и виртуальных серверов, IP-адресов, открытых портов, ролей и операционных систем (`172.16.8.x`, `172.16.15.x`, `192.168.220.x`).
3. 🛡️ [**Аварийное восстановление и регламент бэкапов (`DISASTER_RECOVERY.md`)**](./DISASTER_RECOVERY.md)
Инструкции по восстановлению каждого сервиса при сбоях (распечатка Vault, базы данных, образы KVM, почтовый архив).
Инструкции по восстановлению каждого сервиса при сбоях (распечатка Vault, базы данных, образы KVM, почтовый архив, мониторинг Zabbix/Grafana).
---
@@ -26,6 +26,7 @@
| :--- | :--- | :--- | :--- |
| [**`KSP-Steel/Infosystem`**](http://172.16.8.8/KSP-Steel/Infosystem) | Vue 3, Tailwind, FastAPI, MySQL, Docker | `172.16.8.75` | Главный корпоративный портал предприятия, телеметрия проходных PerCo, интеграция со штатом 1С и Active Directory, дашборды. |
| [**`KSP-Steel/mailguard`**](http://172.16.8.8/KSP-Steel/mailguard) | Python 3, Meilisearch, PostgreSQL, Nginx, Docker | `172.16.8.151` | Платформа службы безопасности (SOC): полнотекстовый архив писем Exchange/Exim (700k+ сообщений), DLP-фильтрация, аудит рисков. |
| [**`KSP-Steel/monitoring`**](http://172.16.8.8/KSP-Steel/monitoring) | Zabbix 7.0, Grafana, Prometheus, Loki, Portainer | `172.16.8.150` | Централизованный стек мониторинга и телеметрии завода: метрики серверов, дашборды, сбор логов, алерты на Synology. |
| [**`KSP-Steel/ansible`**](http://172.16.8.8/KSP-Steel/ansible) | Ansible Core, Semaphore, Python Telegram Bot, WinRM | `172.16.8.8` | Плейбуки регламентных процедур (аудит безопасности AD, онбординг, бэкапы KVM и MySQL, сброс паролей, ChatOps в Telegram). |
| [**`KSP-Steel/hashicorp-vault`**](http://172.16.8.8/KSP-Steel/hashicorp-vault) | HashiCorp Vault, Gitea, PostgreSQL, Docker Compose | `172.16.8.8` | Центральное зашифрованное хранилище учетных данных и паролей серверов. Интегрировано с Ansible через lookup-плагин. |
| [**`admin_ksp/Instruction`**](http://172.16.8.8/admin_ksp/Instruction) | Markdown, Mermaid | `172.16.8.8` | Настоящая центральная база знаний и инструкция для AI-агентов. |
@@ -36,6 +37,10 @@
* **Git-сервер (Gitea)**: `http://172.16.8.8/`
* **Хранилище секретов (Vault UI)**: `http://172.16.8.8:8200/ui`
* **Мониторинг Zabbix Web**: `http://172.16.8.150/`
* **Дашборды Grafana**: `http://172.16.8.150:3000/`
* **Метрики Prometheus**: `http://172.16.8.150:9090/`
* **Панель контейнеров Portainer**: `https://172.16.8.150:9443/` (HTTP: `:8000`)
* **Панель оркестрации задач (Semaphore UI)**: `http://172.16.8.8:3000/`
* **Почтовый архив ИБ (MailGuard)**: `http://172.16.8.151/`
* **Портал предприятия (Инфосистема 2.0)**: `http://172.16.8.75:8090/` (или доменное имя)
* **Портал предприятия (Инфосистема 2.0)**: `http://172.16.8.75:8090/`
-4
View File
@@ -1,4 +0,0 @@
{
"summary": "Master Knowledge Base & AI Agent Guide README",
"updatedAt": "2026-09-28T10:41:57.720655921Z"
}