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