1、ATD支持多种给kafka推送日志的方式
针对Redhat、Centos支持如下方式(按推荐顺序排列):
(1)通过kafkacat给kafka推送日志
(2)通过filebeat给kafka推送日志
(3)通过rsyslog给kafka推送日志
(4)通过logstash给kafka推送日志
针对Ubuntu支持如下方式:
(1)通过filebeat给kafka推送日志
针对Windows系统支持如下方式:
(1)通过nxlog给kafka推送日志
2、注意:您需要将日志推送到kafka相应的TopicName中,但是,请勿将不同格式的域名日志推到同一个TopicName下,否则ATD将无法完成日志解析。
对于通过kafkacat给kafka推送日志,ATD提供两种方式,一种是:一键推送;另一种是:手动推送。
ATD提供了一键推送日志的脚本,在进行一键推送操作时,第一步是:获取脚本, 第二步是:运行脚本。
1、获取脚本
获取脚本的执行命令为:
wget http://bsc-juhe:6WY07AXDsI=@mirrors.juhe.baishancloud.com/repo/push_log.sh -O ./push_log.sh
2、修改脚本中对kafka topic的指定
执行以下命令:
sed -i 's/juhe-log/juhe-test/g' push_log.sh
说明:
其中juhe-test是变量,是日志格式对应的TopicName。
3、运行脚本
运行脚本的执行命令格式为:
bash pushlog.sh {ATD机器ip1,ATD机器ip2,...} {ATD机器hostname1,ATD机器hostname2,...} {日志服务器将要传送的日志1,日志服务器将要传送的日志2,...}
说明:
1、在执行脚本之前,需要获取三个变量参数:ATD机器ip,ATD机器hostname,日志服务器将要传送的日志;
2、“日志服务器将要传送的日志”为将要推送给ATD进行分析的日志,这个日志的格式必须和该kafka topic的日志格式一致;
3、如果有多个ip、hostname和日志文件,可以在相应的参数位置以 , 分隔;
4、多个ip和hostname的情况时,先后顺序要一一对应;
5、所有操作均在webserver或日志服务器上进行;
该日志格式的一键推送脚本执行命令(示例)为:
bash push_log.sh 123.59.102.46,123.59.102.47 bgp-beijing-123-59-102-46,bgp-beijing-123-59-102-47 /var/log/nginx/*.log,/etc/log/*.log
如下方法适用于centos6/7和redhat6/7系统。
注意: 请勿将不同格式的域名日志推到同一个Topic下,否则ATD将无法完成日志解析且不能进行威胁分析
centos/redhat 6/7使用如下yum源:
# vim /etc/yum.repos.d/bsc-juhe.repo
[bsc-juhe]
name=juhe
baseurl=http://bsc-juhe:6WY07AXDsI=@mirrors.juhe.baishancloud.com/repo/bsc/el$releasever/$basearch/
gpgcheck=0
enabled=1
绑定kafka server,例如我们用ambari安装了1台kafka server,对应的主机名和ip如下,那么就需要在nginx server上绑定这些hosts,在/etc/hosts文件中追加:
# vim /etc/hosts
10.199.204.94 bjs0-vq6-v
# yum install bsc-kafkacat
验证kafka client和server端通信是否正常, 输出有相关topic信息:
# /usr/local/bsc/kafkacat/bin/kafkacat -L -b bjs0-vq6-v:6667
安装supervisor,用supervisor管理kafkacat进程:
# yum install supervisor
添加supervisor配置文件 /etc/supervisord.d/kafkacat.ini
(其中/data/nginx_logs/xhw.json.log为web服务器的日志文件,需要您手动指定):
[program:kafkacat]
command=sh -c "tail -F -q /data/nginx_logs/xhw.json.log|/usr/local/bsc/kafkacat/bin/kafkacat -b bjs0-vq6-v:6667 -t juhe-log;sleep 10"
autostart = true
startsecs = 5
autorestart=true
user=root
killasgroup=true
stopasgroup=true
备注:CentOS 6和CentOS7的操作方式略有不同,以下提供这两种版本的操作方式。 查看CentOS版本的方式为:# cat /etc/redhat-release
启动supervisor:
# /etc/init.d/supervisord start #CentOs 6版本
# systemctl start supervisord #CentOs 7版本
# /etc/init.d/supervisord status #CentOs 6版本
# supervisorctl #CentOS 7版本
结果如下:
kafkacat RUNNING pid 17176, uptime 4 days, 16:30:51
#CentOS 6与CentOs 7下结果一致
(1)确认是否有新产生的日志进入到kafka中: 登陆到ATD部署机器192.168.0.89,消费对应kafka的topic数据,如果日志源有新日志产生且推送日志流程正常,使用如下命令能看到日志:
# /usr/hdp/2.6.2.0-205/kafka/bin/kafka-console-consumer.sh --bootstrap-server $(hostname):6667 --topic juhe-1710116uSh
(2)如果(1)步骤中没有消费到日志,则自查如下:
查看推送日志的机器到kafka机器的网络是否连通:
# telnet 192.168.0.89 6667
(3)supervisor启动失败:
在/etc/supervisord.conf
文件中查看是否有以下内容,如果没有,请添加。
[include]
files = supervisord.d/*.ini
安装拦截器文档:
(1)安装拦截器文档(适于Redhat/Centos):https://github.com/yunjuhe/atd/blob/master/%E5%AE%89%E8%A3%85%E6%8B%A6%E6%88%AA%E5%99%A8%E6%96%87%E6%A1%A3%EF%BC%88%E9%80%82%E4%BA%8ERedhat%26Centos).md
(2)安装拦截器文档(适于Ubuntu):https://github.com/yunjuhe/atd/blob/master/%E5%AE%89%E8%A3%85%E6%8B%A6%E6%88%AA%E5%99%A8%E6%96%87%E6%A1%A3%EF%BC%88%E9%80%82%E4%BA%8EUbuntu).md