集中管理服务日志
2017-11-23
日志服务部署
为了统一管理日志,也考虑到设备一旦出现问题会导致日志丢失,笔者将日志全部远程存储在专门的日志服务器集群中。
日志服务器集群本身结构很简单,如图1所示。我们将所使用的各类设备进行了分组,规则如下:
1.参照网络类型、设备型号。如用户接入网大量使用的某厂家OLT、用户接入网少量使用的其它厂家OLT、内部专网的RADIUS服务等。
2.不同类型设备的日志数量差别非常大。如接入网设备,其日志包含上下线信息、配置推送信息等。
经过数月的统计,仅某型号设备1台平均1天产生12万条日志,而这类设备全市纳入日志监控的数量超过300台,4个月的时间产生了43亿条数据,占用服务器843GB数据库硬盘空间。
3.不同的设备权重不同。可能一些设备1天仅仅产生几条日志,数量很少,但每条都非常重要必须实时观测到。日志数量和实时性的不同,对服务器的压力也相差甚大。
图1 日志服务器拓扑图
综上,网络、设备、时效和日志数量等各方面,我们给设备设计了不同的类型分组,如图1所示的A类型。
同一类型的设备使用一主一备两台日志服务器。同时定期删除debug、info等不重要的日志记录后,将日志迁移到归档服务器。用于日志分析的服务器,会同时读取归档和实时日志。
最后,为了日志的安全,我们将主备服务器放置在了不同的机柜上,同时备份服务器放在了不同地理位置(各县和区)的机房。各个专网之间也是物理隔离的。
平台安装
得益于大部分设备采用的syslog日志服务,我们选择了syslog-ng开源软件进行日志的中继,MySQL进行日志的保存。平台部署于centos6.8环境下,系统的安装不在赘述,系统配置为最小安装,仅开启SSHD服务。系统安装完毕后,需要注意如下几点事项:
第一,将系统中的全部软件升级到最新版本,防止已有软件漏洞。
第二,设置系统的PS1参数,即命令行中每行前面的提示内容。为用户名、用户路径、主机名设置不同的颜色,并添加实时时间。这看起来不起眼,但对于生产环境防止在错误的服务器上执行错误的命令很有帮助。
第三,关闭SELinux并开启NTP时间校对服务。作为日志服务器,没有准确的时间,那么日志就没有意义了。
第四,更改ulimit参数并配置系统防火墙,以便于提升系统IO性能并增强基本防护。
数据库部署
数据库我们选择了可免费使用的MySQL/MariaDB社区版本。数据库的安装不在赘述。安装完毕后,首先设置用户名密码,然后设置访问权限,以便于控制哪些终端可以访问数据库中的日志信息。笔者设置的策略如下:
grant select on *.*to readonly@'10.66.66.%'identified by '${MYSQL_ROOT_PASSWORD}'
grant select on *.*to readonly@'10.66.6.%'identified by '${MYSQL_ROOT_PASSWORD}'
通过IP网段和密码进行授权。
日志策略
当数据库部署完毕后,需要在上面的centos系统中配置syslog-ng软件,以便于让系统能够接受其他设备的日志,并转发到数据库中。
为了让大量的日志能够在写入数据库时就拆分开,有两种策略,一是按照日期拆分,二是按照设备IP或HOSTNAME拆分。
经过测试,HOSTNAME的获取会浪费大量的系统资源,IP虽然包含在日志中,但是数据库的表不能含有小数点。因此,我们选择日期进行拆分,每天生成一个数据表。为了做到数据表的自动生成,则需要在syslog中将create_dirs设置为yes。
服务器接收到的数据,笔者定义在source s_leniynet规则中,允许四种类型的数据进入服务器:UDP514、UDP1514、TCP514、TCP1514。 其 中514是syslog协议的默认数据包端口,另外还有一些设备未使用默认端口,在端口上加1000选择了1514端口,防止端口扫描。
服务器转发策略定义 在destination d_leniymysql规则中。数据表格式为table("logs_${R_YEAR}${R_MONTH}${R_DAY}"),通过前面提到的create_dirs自动创建。各个表中的数据项包含sourceip、host、r_isodate、s_isodate、facility、priority、level、program以及msg。
数据库中同时记录设备时间和服务器时间,以便针对不同情况进行针对性的分析。真实时间作为参照依据,设备时间用来定性分析。数据库由于数据量太大,我们将r_isodate和sourceip加入了索引。
最后,开启设备防火墙,只允许 3306、514、1514 端口的数据通过,SSH服务也关闭防止远程攻击。
结语
经过4个月的数据统计,我们收集到了大量的设备日志,并做到了针对某设备的连续分析和针对某时间段的跨设备分析。
集中式日志服务的成功应用,对IT系统日志数据的留存、查看、审计、分析和管理,提供了一个良好的平台。日志数量虽然庞大,但用的好了,就是保障网络的一大利器。