利用Logstash实现GrayLog日志转发到第三方日志平台
之前有介绍GrayLog两个平台之间如何级联
利用GrayLog的output功能实现简单的GrayLog分布式级联
但需要将GrayLog接入的设备日志全部转发到第三方日志这种场景如何解决?
结合下面的文章找到了解决方法
https://blog.csdn.net/weixin_43334786/article/details/108859134 https://blog.csdn.net/a150791038/article/details/124346888
解决方案简单架构如下图所示
(图片点击放大查看)
解决方案具体实现步骤
1、提前下载logstash rpm安装包和logstash-output-syslog插件包
https://mirrors.cloud.tencent.com/elasticstack/7.x/yum/7.10.2/logstash-7.10.2-x86_64.rpm https://github.com/logstash-plugins/logstash-output-syslog
2、安装logstash并安装logstash-output-syslog插件
找一台CentOS7的服务器安装logstash
并安装logstash-output-syslog插件以及logstash-input-gelf(自带,无需单独下载插件)
rpm -ivh logstash-7.10.2-x86_64.rpm unzip logstash-output-syslog.zip cd /usr/share/logstash/ cp -rf /root/logstash-output-syslog ./ vim Gemfile 最后一行加入如下内容 gem "logstash-output-syslog", :path => "/usr/share/logstash/logstash-output-syslog" /usr/share/logstash/bin/logstash-plugin install logstash-output-syslog
(图片点击放大查看)
(图片点击放大查看)
(图片点击放大查看)
(图片点击放大查看)
这个install logstash-input-gelf不要忘了安装 /usr/share/logstash/bin/logstash-plugin install logstash-input-gelf /usr/share/logstash/bin/logstash-plugin list 检查logstash-output-syslog是否有了
(图片点击放大查看)
(图片点击放大查看)
修改logstash.conf配置文件
cd /etc/logstash/ mv logstash-sample.conf conf.d/logstash.conf cd conf.d/ vi logstash.conf # Sample Logstash configuration for creating a simple # Beats -> Logstash -> Elasticsearch pipeline. input { gelf { host => "192.168.31.175" port => "12201" } } output { syslog { host => "192.168.31.230" port => "22201" } }
(图片点击放大查看)
systemctl enable logstash.service systemctl start logstash.service tail -f /var/log/logstash/logstash-plain.log
(图片点击放大查看)
3、原GrayLog日志平台配置output
(图片点击放大查看)
(图片点击放大查看)
(图片点击放大查看)
4、第三方日志平台确认是否收到日志
触发设备日志,在第三方日志平台上确认是否logstash转发过来的日志
(图片点击放大查看)
如上图,第三方日志平台已经成功收到日志
(说明:我这里用GrayLog平台模拟第三方日志平台)
5、Tips
- 1、有尝试用Nxlog-CE来实现Input GELF格式转换成Output Syslog
https://docs.nxlog.co/ce/current/index.html#xm_gelf
通过测试发现此路不通
原因:CE版本只支持gelf的output类型,不支持gelf的input类型
(图片点击放大查看)
(图片点击放大查看)
(图片点击放大查看)
- 2、注意各日志平台的系统时间是否一致
建议系统时间先用NTP服务器进行校时