Docker 环境下搭建 Syslog-ng 日志服务器

一、基础部署方式

Docker Compose 快速部署‌

创建配置文件目录并编写 docker-compose.yml:

version: '3'
services:
  syslog-ng:
    image: balabit/syslog-ng
    ports:
      - "514:514/udp"   # UDP 协议监听默认端口
      - "601:601"       # 支持 TCP 协议传输
    volumes:
      - /data/syslog/conf:/etc/syslog-ng  # 映射配置目录
      - /data/syslog/logs:/var/log/syslog-ng  # 持久化日志存储

通过 docker-compose up -d 启动服务,适用于生产环境‌。

Docker CLI 单命令运行‌

直接运行容器(适合测试环境):

docker run -d --name syslog-ng \
  -p 514:514/udp -p 601:601 \
  -v /data/syslog/conf:/etc/syslog-ng \
  -v /data/syslog/logs:/var/log/syslog-ng \
  balabit/syslog-ng:latest

此方式无需额外配置文件,快速验证功能‌。
二、高级网络配置(隔离环境)

若需为 Syslog-ng 分配独立 IP 或支持 IPv6,可通过 macvlan 网络驱动实现:

创建 macvlan 网络‌:

docker network create -d macvlan \
  --subnet=192.168.7.0/24 --gateway=192.168.7.1 \
  -o parent=eth0 docker-out

启动容器并绑定网络‌:
 

docker run --net=docker-out --ip=192.168.7.49 -d \
  -p 514:514/udp \
  -v /data/syslog/conf:/etc/syslog-ng \
  balabit/syslog-ng:latest

适用于多网卡或容器需直接暴露在物理网络的场景‌。
三、核心配置说明

配置文件管理‌

挂载宿主机目录 /data/syslog/conf 至容器内的 /etc/syslog-ng,便于动态修改配置‌。
示例配置(syslog-ng.conf):
 

@version: 3.27
source s_network {
  syslog(ip(0.0.0.0) port(514) transport("udp"));
};
destination d_logs {
  file("/var/log/syslog-ng/${HOST}/${YEAR}${MONTH}${DAY}.log");
};
log { source(s_network); destination(d_logs); };

按客户端 IP 和日期自动分类存储日志‌。

日志存储与清理‌

宿主机映射目录 /data/syslog/logs 存储所有日志文件,支持后续 ELK 或 Splunk 集成分析‌。
通过 logrotate 或 Syslog-ng 内置的 time-reap 参数实现日志滚动清理‌。
四、客户端日志发送示例

Linux 客户端配置‌

修改 /etc/rsyslog.conf,添加:

*.* @192.168.7.49:514  # 指向 Syslog-ng 服务器 IP 和端口

重启服务:systemctl restart rsyslog‌。

Java 应用日志转发‌

在 Log4j2 配置中添加 Syslog Appender:
 

<Syslog name="Syslog" host="192.168.7.49" port="514" protocol="UDP" />

确保依赖包含 log4j-core 和 log4j-api‌。
五、调试与监控
查看容器运行状态‌:

docker logs -f syslog-ng  # 实时监控容器日志

验证日志接收‌:
在客户端执行 logger "Test Message",检查宿主机 /data/syslog/logs 目录是否生成对应日志文件‌。
六、注意事项
权限问题‌:确保宿主机映射目录(如 /data/syslog)对容器用户(默认 root)有读写权限‌。
协议选择‌:UDP 性能高但无确认机制,关键业务建议使用 TCP 端口 601‌。
安全性‌:暴露 514/udp 端口时,需配置防火墙规则限制访问来源 IP‌。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值