将从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过滤器需要手动更新模板。
注意,如果有自定义模板更改,务必保持和合并这些更改。
查看已有的模板:
|
curl-XGET localhost:9200/_template/logstash
|
在logstash配置文件中添加下面的配置并重启:
|
output{
elasticsearch{
template_overwrite=>true
}
}
|
有点的字段:elasticsearch2.0不允许字段名含有.字符。一些插件包括logstash-filter-metrics和 logstash-filter-elapsed已经更新弥补这一更改。这些插件更新对于logstash2.0可用。要升级这些插件可执行下面命令:
|
bin/plugin update<plugin_name>
|
多行过滤器:如果要在logstash配置文件中使用多行过滤器并升级到2.0,将会得到一个错误。确保filter_workers明确设置为1。如果要改变该值需通过命令行参数更改,如下所示:
实操
- 关闭logstash以及输入的管道。
|
# /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
|
这节会将logstash-forwarder迁移到Filebeat上了,后续不再启动logstash-forwarder了。
2. 升级logstash,添加yum源参见前文。
3. 检查配置文件
我的配置文件是以《ELK部署指南》中的配置文件为原型的。
|
# /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/01-lumberjack-input.conf
Configuration OK
# /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/10-active.conf
Configuration OK
# /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/11-nginx.conf
Configuration OK
# /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/99-lumberjack-output.conf
Error:The setting`host`inplugin`elasticsearch`isobsolete andisno longer available.Please usethe'hosts'setting instead.You can specify multiple entries separated by comma in'host:port'format.Ifyou have any questions about this,you are invited tovisit https://discuss.elastic.co/c/logstash and ask.
|
更改配置文件
|
# 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的定义。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# vim 11-nginx.conf
filter{
if[type]=="nginx"{
grok{
match=>{"message"=>"%{IPORHOST:clientip} - %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:method} %{NOTSPACE:request}(?: %{URIPROTO:proto}/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:status} (?:%{NUMBER:upstime}|-) %{NUMBER:reqtime} (?:%{NUMBER:size}|-) %{QS:referrer} %{QS:agent} %{QS:xforwardedfor} %{QS:reqbody} %{WORD:scheme} (?:%{IPV4:upstream}(:%{POSINT:port})?|-)"}
add_field=>["received_at","%{@timestamp}"]
add_field=>["received_from","%{host}"]
}
date{
match=>["timestamp","dd/MMM/YYYY:HH:mm:ss Z"]
}
geoip{
source=>"clientip"
add_tag=>["geoip"]
fields=>["country_name","country_code2","region_name","city_name","real_region_name","latitude","longitude"]
remove_field=>["[geoip][longitude]","[geoip][latitude]"]
}
useragent{
source=>"agent"
target=>"browser"
}
}
}
|
对类型nginx的filter。
logstash-forwarder的配置文件
|
# vi /etc/logstash-forwarder.conf
"files":[
{
"paths":["/data/logs/www.ttlsa.com/active/*.log"],
"fields":{"type":"active"}
},
{
"paths":["/data/logs/www.ttlsa.com/nginx/*-access.log"],
"fields":{"type":"nginx"}
}
]
|
改成Filebeat的配置文件:
|
# vim /etc/filebeat/filebeat.yml
filebeat:
prospectors:
-
paths:
-/data/logs/www.ttlsa.com/nginx/*-access.log
document_type:nginx //隐射为type:nginx
-
paths:
-/data/logs/www.ttlsa.com/active/*.log
document_type:active
|
此处document_type选项控制输出type字段,用于elasticsearch输出以确定文档类型。对于以elasticsearch输出,该值用于设置输出文档的type字段。
4. 检查配置文件是否正确
|
# /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. 启动服务
|
# /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)
需更改下面的配置:
|
# 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).
转自:http://www.ttlsa.com/elk/elk-upgrade-logstash-to-2-and-logstash-forwarder-to-filebeat/
辛苦了
Specify -w for full OutOfMemoryError stack trace
需更改下面的配置:
|
# vim /etc/sysconfig/logstash
LS_HEAP_SIZE="1024m"
|
相关推荐
Logstash 转发器====================描述这是一个 Ansible 角色,用于将“logstash-forwarder”部署到您想要为您的 logstash 服务器收集日志的任何机器上。 这将与 ELK 或 Logstash 环境一起使用。行动安装 ...
Logstash 是一个强大的开源数据收集、处理和转发引擎,它属于 Elastic Stack(以前称为 ELK Stack,包括 Elasticsearch、Logstash 和 Kibana)的一部分。在Windows环境下,Logstash 提供了方便的数据采集和预处理...
Filebeat作为数据forwarder,定期读取指定文件,一旦发现新数据,就将其发送到Logstash、Elasticsearch或其他后端系统。Filebeat运行时占用资源少,适合长期运行在服务器上,以持续监控和转发日志数据。 【Kafka】 ...
Logstash-Forwarder是Elastic Stack(以前称为ELK Stack)的一部分,这个组合还包括Elasticsearch(数据存储和搜索)、Kibana(数据可视化)和Beats(轻量级数据发送者)。这些工具共同构成了一个强大的日志管理和...
Logstash 转发器 Dockerfile 日志转发器 0.3.1 注意:首先访问这个 repo 并学习如何运行整个 ELK 堆栈: : 克隆回购: git clone https://github.com/denibertovic/logstash-forwarder-dockerfile确保使用用于从上面...
7. **版本管理**:在 `docker-logstash-forwarder-master` 文件中,可能包含了不同版本的 Docker-logstash-forwarder,选择合适的版本取决于你的 Docker 环境和 Logstash 版本兼容性。 总之,Docker-logstash-...
带docker-compose的ELK堆栈Elasticsearch。 Logstash。 基巴纳Nginx。... openssl req -x509 -batch -nodes -newkey rsa:2048 \-keyout logstash/conf/logstash-forwarder.key \-out logstash/conf/logstash-f
openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt 从集线器拉: docker pull denibertovic/logstash 首先我们需要确保 Elasticsearch 正在运行 ...
根据提供的文件信息,我们可以整理出一系列关于如何搭建ELK(Elasticsearch, Logstash, Kibana)堆栈以及Filebeat日志管理系统的详细步骤与关键知识点。 ### 一、安装Elasticsearch #### 1. 环境准备 - **目标...
在压缩包文件"ansible-role-logstash-forwarder-master"中,可能包含了该角色的所有源代码、默认配置、任务列表、变量文件和模板等。如果需要迁移至新的解决方案,可以参考这些文件理解原有的配置逻辑,然后用相同的...
Logstash是一款开源的日志处理引擎,属于ELK Stack(Elasticsearch, Logstash, Kibana)的重要组成部分,主要用于实现日志数据的收集、处理和转发。本书《The Logstash Book》是由James Turnbull所著,专注于...
ELK stack是一套流行的开源日志分析解决方案,其名称由 Elasticsearch、Logstash 和 Kibana 三个软件的...通过本指南,你可以了解到ELK stack在海量日志分析中的作用,以及如何搭建和使用这一强大的日志处理解决方案。
4. **Logstash Forwarder (Client端)**:用于通过特定的网络协议发送日志数据到 Logstash Server。 - 特点:轻量级、可配置性强。 - 用途:在各个客户端上部署,负责将本地日志数据发送至 Logstash Server。 ####...
Beats是ELK 协议栈的新成员,一个轻量级开源数据搜集器架构,基于 Logstash-Forwarder 源代码开发,是对它的替代。beats 就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储...
ELK 堆栈 (elasticsearch-logstash-kibana) dockerized怎么跑安装 docker-compose: : 克隆这个存储库和 cd elk-stack-docker 制作logstash(logstash-forwarder)证书:制作证书运行 docker-compose up 访问访问 ...
此外,ELK Stack中文指南还涵盖了扩展方案,包括通过redis和kafka传输、logstash-forwarder、rsyslog、nxlog、heka、fluent、Message::Passing等多样的数据传输方式。对于源码解析,指南中提供了pipelinelogstash-...
配置将logstash cert 写成docker docker/fs/etc/ssl/logstash-forwarder.crt并在server.js 的'tlsOptions' 对象中设置'host' 字段的值(注意logstash 对certs 和主机非常挑剔值必须与用于该框的证书的 CN 匹配)。...
为Filebeat或Logstash-forwarder生成SSL证书 如果防火墙处于活动状态,则添加iptables或firewalld规则 将Elasticsearch堆大小调整为内存的一半,最大为32G 使用SSL和Filebeat for Logstash部署ELK客户端(默认)