EOS服务器启动:主机端口配置与日志级别设置
概述
EOS(Energy Optimization System)是一个功能强大的能源优化系统,专注于光伏系统、电池存储、负载管理、热泵和电动汽车的模拟与优化。本文将深入探讨EOS服务器的启动流程,重点讲解主机端口配置和日志级别设置的详细方法,帮助用户快速部署和调试EOS系统。
服务器架构概览
EOS采用双服务器架构:
- EOS主服务器:默认端口8503,提供核心REST API服务
- EOSdash服务器:默认端口8504,提供Web仪表板界面
启动方式详解
1. 从源码启动
Linux/macOS系统
# 创建虚拟环境
python -m venv .venv
# 安装依赖
.venv/bin/pip install -r requirements.txt
.venv/bin/pip install -e .
# 启动EOS服务器
.venv/bin/python src/akkudoktoreos/server/eos.py
Windows系统
python -m venv .venv
.venv\Scripts\Activate
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\pip install -e .
.venv\Scripts\python src/akkudoktoreos/server/eos.py
2. Docker容器启动
# 使用docker-compose一键启动
docker compose up
# 后台运行
docker compose up -d
主机端口配置
默认端口设置
| 服务类型 | 默认端口 | 功能描述 |
|---|---|---|
| EOS主服务器 | 8503 | REST API接口服务 |
| EOSdash仪表板 | 8504 | Web可视化界面 |
自定义端口配置
EOS支持通过多种方式配置主机和端口:
方法一:命令行参数
# 自定义主机和端口启动
python src/akkudoktoreos/server/eos.py --host 0.0.0.0 --port 8080
# 完整参数示例
python src/akkudoktoreos/server/eos.py \
--host 192.168.1.100 \
--port 8503 \
--log-level INFO \
--access-log true
方法二:环境变量配置
# 设置EOS配置目录
export EOS_DIR=/opt/eos/config
export EOS_CONFIG_DIR=/opt/eos/config
# 设置服务器主机和端口
export EOS_SERVER__HOST=0.0.0.0
export EOS_SERVER__PORT=8503
export EOS_SERVER__EOSDASH_PORT=8504
方法三:配置文件修改
编辑 EOS.config.json 文件:
{
"server": {
"host": "0.0.0.0",
"port": 8503,
"eosdash_host": "0.0.0.0",
"eosdash_port": 8504,
"startup_eosdash": true
}
}
端口验证函数
EOS内置端口验证机制,确保端口配置的正确性:
def is_valid_ip_or_hostname(value: str) -> bool:
"""验证IP地址或主机名的有效性"""
try:
ipaddress.ip_address(value)
return True
except ValueError:
pass
# 主机名验证正则表达式
hostname_regex = re.compile(
r"^(?=.{1,253}$)(?!-)[A-Z\d-]{1,63}(?<!-)"
r"(?:\.(?!-)[A-Z\d-]{1,63}(?<!-))*\.?$",
re.IGNORECASE,
)
return bool(hostname_regex.fullmatch(value))
日志级别配置
支持的日志级别
EOS支持以下6种标准日志级别:
| 日志级别 | 描述 | 适用场景 |
|---|---|---|
| TRACE | 追踪级别 | 最详细的调试信息 |
| DEBUG | 调试级别 | 开发调试阶段 |
| INFO | 信息级别 | 正常运行信息 |
| WARNING | 警告级别 | 潜在问题警告 |
| ERROR | 错误级别 | 错误信息记录 |
| CRITICAL | 严重级别 | 系统严重错误 |
日志配置方法
1. 命令行参数配置
# 设置控制台日志级别
python src/akkudoktoreos/server/eos.py --log-level DEBUG
# 分别设置控制台和文件日志级别
export EOS_LOGGING__CONSOLE_LEVEL=INFO
export EOS_LOGGING__FILE_LEVEL=DEBUG
2. 配置文件设置
在 EOS.config.json 中配置:
{
"logging": {
"console_level": "INFO",
"file_level": "DEBUG",
"file_path": "/var/log/eos/eos.log"
}
}
3. 运行时动态调整
通过REST API动态调整日志级别:
# 获取当前配置
curl -X GET http://localhost:8503/v1/config
# 更新日志配置
curl -X PUT http://localhost:8503/v1/config/logging \
-H "Content-Type: application/json" \
-d '{"console_level": "DEBUG", "file_level": "INFO"}'
日志文件管理
EOS自动管理日志文件,提供以下功能:
支持基于以下条件的日志过滤:
- 时间范围过滤(ISO时间格式)
- 日志级别过滤
- 关键词搜索
- 正则表达式匹配
常见配置场景
场景一:生产环境部署
# 生产环境推荐配置
export EOS_SERVER__HOST=0.0.0.0
export EOS_SERVER__PORT=8503
export EOS_LOGGING__CONSOLE_LEVEL=WARNING
export EOS_LOGGING__FILE_LEVEL=INFO
export EOS_DIR=/opt/eos/data
场景二:开发调试环境
# 开发环境详细日志
export EOS_SERVER__HOST=127.0.0.1
export EOS_SERVER__PORT=8503
export EOS_LOGGING__CONSOLE_LEVEL=DEBUG
export EOS_LOGGING__FILE_LEVEL=TRACE
场景三:多实例部署
# 实例1
export EOS_SERVER__PORT=8503
export EOS_SERVER__EOSDASH_PORT=8504
# 实例2(避免端口冲突)
export EOS_SERVER__PORT=8505
export EOS_SERVER__EOSDASH_PORT=8506
故障排除指南
端口冲突处理
当出现端口冲突时,EOS会提供详细的错误信息:
# 检查端口占用情况
netstat -tuln | grep 8503
lsof -i :8503
# 使用EOS内置端口检查
python -c "
from akkudoktoreos.server.server import wait_for_port_free
wait_for_port_free(8503, timeout=10, waiting_app_name='EOS')
"
日志调试技巧
- 实时日志监控:
tail -f /path/to/eos.log
- 按级别过滤日志:
grep "ERROR" /path/to/eos.log
- 时间范围查询:
# 查询最近1小时的错误日志
awk -v d1="$(date -d '1 hour ago' +'%Y-%m-%dT%H:%M:%S')" \
-v d2="$(date +'%Y-%m-%dT%H:%M:%S')" \
'$0 > d1 && $0 < d2 && /ERROR/' /path/to/eos.log
最佳实践建议
- 生产环境:使用
WARNING级别减少日志量,确保系统性能 - 开发环境:使用
DEBUG级别获取详细调试信息 - 日志轮转:配置logrotate定期清理历史日志文件
- 监控告警:对
ERROR和CRITICAL级别日志设置告警 - 安全考虑:避免将敏感信息记录在日志中
通过合理的端口配置和日志级别设置,可以确保EOS系统稳定运行的同时,提供足够的调试信息用于问题排查和性能优化。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



