diff --git a/services/monitor.py b/services/monitor.py new file mode 100644 index 00000000..e90cbcbb --- /dev/null +++ b/services/monitor.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +""" +AITBC Monitor Service +""" + +import time +import logging +import json +from pathlib import Path +import psutil + +def main(): + logging.basicConfig(level=logging.INFO) + logger = logging.getLogger('aitbc-monitor') + + while True: + try: + # System stats + cpu_percent = psutil.cpu_percent() + memory_percent = psutil.virtual_memory().percent + logger.info(f'System: CPU {cpu_percent}%, Memory {memory_percent}%') + + # Blockchain stats + blockchain_file = Path('/var/lib/aitbc/data/blockchain/aitbc/blockchain.json') + if blockchain_file.exists(): + with open(blockchain_file, 'r') as f: + data = json.load(f) + logger.info(f'Blockchain: {len(data.get("blocks", []))} blocks') + + # Marketplace stats + marketplace_dir = Path('/var/lib/aitbc/data/marketplace') + if marketplace_dir.exists(): + listings_file = marketplace_dir / 'gpu_listings.json' + if listings_file.exists(): + with open(listings_file, 'r') as f: + listings = json.load(f) + logger.info(f'Marketplace: {len(listings)} GPU listings') + + time.sleep(30) + except Exception as e: + logger.error(f'Monitoring error: {e}') + time.sleep(60) + +if __name__ == "__main__": + main() diff --git a/systemd/aitbc-agent-coordinator.service b/systemd/aitbc-agent-coordinator.service index 1fe7e843..f2502ca7 100644 --- a/systemd/aitbc-agent-coordinator.service +++ b/systemd/aitbc-agent-coordinator.service @@ -32,7 +32,7 @@ SyslogIdentifier=aitbc-agent-coordinator NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/var/lib/aitbc/data/agent-coordinator /var/log/aitbc/production/agent-coordinator +ReadWritePaths=/var/lib/aitbc/data/agent-coordinator /var/log/aitbc/agent-coordinator # Production performance LimitNOFILE=65536 diff --git a/systemd/aitbc-gpu.service b/systemd/aitbc-gpu.service index 892bebe6..2702593e 100644 --- a/systemd/aitbc-gpu.service +++ b/systemd/aitbc-gpu.service @@ -1,6 +1,7 @@ [Unit] -Description=AITBC Production GPU Marketplace Service -After=network.target aitbc-marketplace.service +Description=AITBC Marketplace Service +After=network.target postgresql.service redis.service +Wants=postgresql.service redis.service [Service] Type=simple @@ -9,11 +10,10 @@ Group=root WorkingDirectory=/opt/aitbc Environment=PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin Environment=NODE_ID=aitbc -Environment=GPU_MARKETPLACE_PORT=8003 Environment=PYTHONPATH=/opt/aitbc/services EnvironmentFile=/etc/aitbc/production.env -# Production execution +# Marketplace execution ExecStart=/opt/aitbc/venv/bin/python /opt/aitbc/services/gpu_marketplace_launcher.py ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed @@ -28,19 +28,19 @@ StartLimitIntervalSec=60 # Production logging StandardOutput=journal StandardError=journal -SyslogIdentifier=aitbc-gpu-marketplace-production +SyslogIdentifier=aitbc-marketplace # Production security NoNewPrivileges=true ProtectSystem=strict ProtectHome=true -ReadWritePaths=/var/lib/aitbc/data/marketplace /var/log/aitbc/production/marketplace +ReadWritePaths=/var/lib/aitbc/data/marketplace /var/log/aitbc/marketplace # Production performance LimitNOFILE=65536 LimitNPROC=4096 MemoryMax=2G -CPUQuota=75% +CPUQuota=50% [Install] WantedBy=multi-user.target diff --git a/systemd/aitbc-monitor.service b/systemd/aitbc-monitor.service new file mode 100644 index 00000000..e6d8478c --- /dev/null +++ b/systemd/aitbc-monitor.service @@ -0,0 +1,40 @@ +[Unit] +Description=AITBC Monitor Service +After=network.target + +[Service] +Type=simple +User=root +Group=root +WorkingDirectory=/opt/aitbc +Environment=PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin +EnvironmentFile=/etc/aitbc/production.env + +# Monitor execution +ExecStart=/opt/aitbc/venv/bin/python /opt/aitbc/services/monitor.py + +# Production reliability +Restart=always +RestartSec=5 +StartLimitBurst=5 +StartLimitIntervalSec=60 + +# Production logging +StandardOutput=journal +StandardError=journal +SyslogIdentifier=aitbc-monitor + +# Production security +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/var/lib/aitbc/data /var/log/aitbc + +# Production performance +LimitNOFILE=65536 +LimitNPROC=4096 +MemoryMax=512M +CPUQuota=25% + +[Install] +WantedBy=multi-user.target