采集Syslog汇聚服务器日志到LTS
背景信息
Syslog是网络上各种设备将日志收集到日志服务器的一种数据协议,它几乎被所有的网络设备支持,并且能够记录多种事件类型的日志消息,支持syslog的设备常见的有路由器、交换机、打印机等,甚至unix-like的服务器也可以支持产生syslog消息,用以记录用户的登录、防火墙事件、apache或者nginx access日志等。
Syslog主要是基于RFC5424和RFC3164定义相关格式规范,RFC3164协议是2001年发布的,RFC5424协议是2009年发布的升级版本。因为新版兼容旧版,且新版本解决了很多问题,因此推荐使用RFC5424协议。更多信息请参见RFC5424和RFC3164。
本文介绍通过Syslog协议将日志上传到日志服务的操作步骤。您需要购买ECS作为Syslog汇聚服务器,Linux服务器默认自带Rsyslog,目前华为云主机默认未配置接收远程Syslog写入,需要手动开启。
方案概述
- 你可以购买Linux云主机,配置为Syslog汇聚服务器,用于接收其他设备发送的日志数据;Syslog服务器默认接收日志大小为1024字节,超过会截断。
- 单台Syslog服务器处理日志能力为10MB/s,如果您的日志量较大,或者希望可靠性更高,可以购买多台ECS配置为Syslog服务器,并配置ELB负载均衡分发流量。
- 您需要在Syslog服务器上安装ICAgent,并配置日志采集规则,就可以将日志采集到LTS。
资源规划
购买两台ECS机器,一台ECS作为Syslog汇聚服务器,另一台用为业务ECS模拟客户系统或者设备发送日志。
购买弹性云服务器
- 登录管理控制台,选择“计算 > 弹性云服务器 ECS”。
- 购买一台弹性云服务器作为Syslog汇聚服务器。
推荐CentOS 6.5 64bit及其以上版本的镜像, 推荐规格为2vCPUs | 4GB。
- 使用root用户登录Syslog服务器,安装ICAgent。
- syslog服务器安全组出方向打开TCP协议的30200、30201、8149、8923、8102等端口,入方向需打开UDP的514端口作为syslog服务器默认监听端口。
- 在云日志服务 LTS管理控制台
- 在云日志服务管理控制台,左侧导航栏选择“主机管理 > 主机”,进入“主机”页面。
- 单击“安装ICAgent”, 安装系统选择“Linux”,主机类型选择“区域内主机”,“安装方式”选择“获取AK/SK凭证”,单击“复制命令”复制ICAgent安装命令,并手动替换AK/SK。
- 使用root用户登录syslog服务器,执行ICAgent安装命令进行安装,当显示“ICAgent install success”时,表示安装成功。安装成功后,在云日志服务左侧导航栏中选择“主机管理 > 主机”,查看该服务器中ICAgent的状态。
- 打开RSyslog服务器监听接收功能。
目前华为云主机rsyslog服务器默认未配置接收远程syslog写入,需要手动开启。
- 已登录云主机。
- 修改rsyslog配置文件。
vi /etc/rsyslog.conf
- 配置文件中添加以下内容,开启tcp udp远程接收。
Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514
- 保存后重启rsyslog服务器,单击云服务器“更多 > 重启”。
- 执行以下任意一条命令显示正常代表服务运行正常。
执行“service rsyslog status”命令检查rsyslog运行状态为running。
图2 检查rsyslog运行状态
执行“systemctl status rsyslog”命令检查rsyslog运行状态为running。
图3 rsyslog运行状态
执行“netstat -anp | grep 514”命令查看是否打开监听。
图4 查看是否打开监听
- 配置采集syslog日志。
- 登录业务ecs验证。
当您的业务系统或者设备输出日志后,即可在LTS界面查看。登录业务ecs使用logger -n x.x.x.x -P 514 testremotelog命令发送syslog至汇聚服务器,x.x.x.x为syslog服务器ip(公网ip/私有ip)地址,testremotelog为发送日志内容,可以自定义。
执行成功后,配置的日志组日志流里可以查看到该条日志。
或登录syslog汇聚服务器,查看/var/log/messages中是否存在testremotelog日志。
tail -f /var/log/messages
图5 查看是否存在testremotelog日志
- 通过多台syslog服务器和elb实现负载均衡。
目前采集单台syslog服务器处理日志能力为10MB/s,如果客户日志业务量较大,可以使用多台syslog服务器和elb实现扩容和负载均衡。
- 创建syslog汇聚服务器和安装ICAgent。
- 请参考实现单个Web应用的负载均衡创建负载均衡器。
- 分别为TCP/UDP的端口和514端口添加监听器,请参考添加TCP监听器。
- 为后端添加服务器组,请参考后端服务器组。