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:
+35
-19
@@ -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`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user