ELK logstash升级到2.0以及logstash-forwarder迁移到Filebeat(21st)

网友投稿 725 2023-02-12

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

ELK logstash升级到2.0以及logstash-forwarder迁移到Filebeat(21st)

将从logstash1.5版本升级到2.1版本,以及将《ELK部署指南》中使用的logstash-forwarder转移到Filebeat上。

升级步骤

停止logstash以及发送到logstash的所有管道。更新apt或yum源或者下载新版包。安装新版的logstash。测试logstash配置文件是否正确。启动logstash以及第一步停止的管道。

升级logstash和elasticsearch到2.0

升级前请先看看版本的改变信息。

下面是elasticsearch升级到2.0后,需要执行的:

Mapping改变:用户自定义的模板变化,因此在默认情况下,logstash升级将抛弃这些模板。即时没有一个自定义的模板,默认情况下logstash不会覆盖已存在的模板。

已经有一个已知的问题就是使用GeoIP过滤器需要手动更新模板。

注意,如果有自定义模板更改,务必保持和合并这些更改。

查看已有的模板:

1
curl-XGET localhost:9200/_template/logstash

在logstash配置文件中添加下面的配置并重启:

1
2
3
4
5
output{
elasticsearch{
template_overwrite=>true
}
}

有点的字段:elasticsearch2.0不允许字段名含有.字符。一些插件包括logstash-filter-metrics和 logstash-filter-elapsed已经更新弥补这一更改。这些插件更新对于logstash2.0可用。要升级这些插件可执行下面命令:

1
bin/plugin update<plugin_name>

多行过滤器:如果要在logstash配置文件中使用多行过滤器并升级到2.0,将会得到一个错误。确保filter_workers明确设置为1。如果要改变该值需通过命令行参数更改,如下所示:

1
bin/logstash`-w1`

实操

关闭logstash以及输入的管道。

1
2
3
4
5
# /etc/init.d/topbeat stop
# /etc/init.d/packetbeat stop
# /etc/init.d/filebeat stop
# /etc/init.d/logstash-forwarder stop
# /etc/init.d/logstash stop

2. 升级logstash,添加yum源参见前文。

1
# yum update logstash

3. 检查配置文件

我的配置文件是以《ELK部署指南》中的配置文件为原型的。

更改配置文件

1
2
3
4
5
6
7
8
# mv 01-lumberjack-input.conf 01-beats-input.conf
input{
beats{
port=>5044
host=>"10.1.19.18"
type=>"logs"
}
}

这个是把有关logstash-forwarder使用的lumberjack删除了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# mv 99-lumberjack-output.conf 99-beats-output.conf  
# vim 99-beats-output.conf
output{
if"_grokparsefailure"in[tags]{
file{path=>"/var/log/logstash/grokparsefailure-%{[type]}-%{+YYYY.MM.dd}.log"}
}
elasticsearch{
hosts=>["10.162.19.184:9200"]
sniffing=>true
manage_template=>false
template_overwrite=>true
index=>"%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type=>"%{[@metadata][type]}"
}
#stdout { codec =>rubydebug }
}

以上是output的定义。

对类型nginx的filter。

logstash-forwarder的配置文件

改成Filebeat的配置文件:

此处document_type选项控制输出type字段,用于elasticsearch输出以确定文档类型。对于以elasticsearch输出,该值用于设置输出文档的type字段。

4. 检查配置文件是否正确

1
2
3
4
5
6
# /opt/logstash/bin/logstash -t -f /etc/logstash/conf.d/01-beats-input.conf
Configuration OK
# /opt/logstash/bin/logstash -t -f /etc/logstash/conf.d/11-nginx.conf
Configuration OK
# /opt/logstash/bin/logstash -t -f /etc/logstash/conf.d/30-beats-output.conf
Configuration OK

5. 启动服务

1
2
3
4
# /etc/init.d/topbeat stop
# /etc/init.d/packetbeat stop
# /etc/init.d/filebeat stop
# /etc/init.d/logstash stop

以上便是升级的过程,以及将logstash-forwarder迁移到Filebeat上了。

为了避免出现下面的问题:

sun/misc/URLClassPath.java:1003:in `getResource': java.lang.InternalError: java.io.FileNotFoundException: /alidata/server/java/jre/lib/ext/localedata.jar (Too many open files)

需更改下面的配置:

1
2
# vim /etc/sysconfig/logstash  
LS_OPEN_FILES=65535

Error: Your application used more memory than the safety cap of 500M.

Specify -J-Xmx####m to increase it (#### = cap size in MB).

Specify -w for full OutOfMemoryError stack trace

需更改下面的配置:

1
2
# vim /etc/sysconfig/logstash
LS_HEAP_SIZE="1024m"
上一篇:ELK logstash 结构(22nd)
下一篇:ELK logstash 部署指南与版本变化(20th)
相关文章

 发表评论

评论列表