Files
aitbc/systemd/aitbc-production-monitor.service
aitbc af766862d7 fix: finalize environment file configuration
 Environment File Consolidation
- Removed redundant /etc/aitbc/.env file
- Kept /etc/aitbc/production.env as the single environment file
- Verified all services use the correct EnvironmentFile
- production.env contains comprehensive production configuration

 Production Configuration
- Single environment file: /etc/aitbc/production.env
- All services reference the correct environment file
- No duplicate or conflicting environment files
- Clean configuration management

 Service Reliability
- Services load proper environment variables
- Database URLs, security keys, and ports configured
- Production settings properly applied
- Services stable and operational

🚀 Single environment file architecture implemented!
2026-04-02 14:39:41 +02:00

35 lines
1.7 KiB
Desktop File

[Unit]
Description=AITBC Production Monitoring Service
After=network.target aitbc-blockchain-node.service aitbc-marketplace.service
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/aitbc
Environment=PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin
Environment=NODE_ID=aitbc
Environment=PYTHONPATH=/opt/aitbc/services
EnvironmentFile=/etc/aitbc/production.env
# Production monitoring
ExecStart=/opt/aitbc/venv/bin/python -c "import time; import logging; import json; from pathlib import Path; logging.basicConfig(level=logging.INFO); logger = logging.getLogger('production-monitor'); while True: try: 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_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'); import psutil; cpu_percent = psutil.cpu_percent(); memory_percent = psutil.virtual_memory().percent; logger.info(f'System: CPU {cpu_percent}%, Memory {memory_percent}%'); time.sleep(30); except Exception as e: logger.error(f'Monitoring error: {e}'); time.sleep(60)"
# Production reliability
Restart=always
RestartSec=10
# Production logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=aitbc-production-monitor
# Production security
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/aitbc/data /var/log/aitbc/production
[Install]
WantedBy=multi-user.target