Debian Syslog在游戏服务器上的应用
一、典型场景与价值
二、部署与网络拓扑
*.* @192.0.2.10:514
然后重启:sudo systemctl restart rsyslog。[Game Server 1..N] --(UDP/TCP/TLS:514)--> [Syslog Server] --> [ELK/Graylog/归档]
以上步骤与注意点在 Debian 环境中通用,UDP 示例与 rsyslog 的 TCP/TLS 能力均有官方实践支撑。
三、游戏服日志分类与路由示例
# 系统级
auth,authpriv.* /var/log/auth.log
*.err;auth,authpriv.* /var/log/syslog
# 游戏服自定义设施(示例:local0=登录服,local1=匹配服,local2=大厅服)
local0.* /var/log/game/login.log
local1.* /var/log/game/match.log
local2.* /var/log/game/hall.log
# 第三方组件
daemon.* /var/log/daemon.log
kern.* /var/log/kern.log
lpr.* /var/log/lpr.log
mail.* /var/log/mail.log
user.* /var/log/user.log
cron.* /var/log/cron.log
说明:游戏进程需配置为使用对应设施(如 local0-local7)与合适级别(如 info、warn、err)。if $fromhost-ip == '192.168.10.23' then /var/log/game/shard-01.log
& stop
module(load="imfile")
input(type="imfile"
File="/var/log/game/engine.log"
Tag="game-engine"
StateFile="engine-state"
Severity="info"
Facility="local3")
local3.* /var/log/game/engine-rsyslog.log
以上规则写法与设施/级别分流、imfile 采集均为 rsyslog 的常用模式。
四、告警与可视化
if $msg contains 'ERROR' then /var/spool/rsyslog/alerts/error.log
& stop
action(type="omprog"
Binary="/usr/local/bin/send_alert.sh")
脚本需可执行,建议接入限流与去重,避免告警风暴。tail -f /var/log/game/*.log、grep "ERROR" /var/log/game/*.log 快速排查;配合 journalctl -u <服务名> 查看服务日志。五、性能与安全最佳实践