ELK logstash 部署指南与版本变化(20th)
<p>logstash是ELK重要组成部分,日志进一步的处理差不多都需要经过logstash来完成的,除非自己开发beats将数据处理好直接写入到elasticsearch中。</p><p><img title="ELK logstash 部署指南与版本变化(20th)" class="alignnone wp-image-10804" src="https://zhuji.jb51.net/uploads/img/20230519/dbe4dd52a2e39f618f02d616fb53b8cf.jpg" width="670" height="367"></p>
<h3>APT源</h3>
<p></p><pre class="brush:bash;toolbar:false"># wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# echo "deb http://packages.elastic.co/logstash/2.1/debian stable main" | sudo tee -a /etc/apt/sources.list
# <span class="pln">sudo apt</span><span class="pun">-</span><span class="pln">get update </span><span class="pun">&&</span><span class="pln"> sudo apt</span><span class="pun">-</span><span class="pln">get install logstash</span></pre><p></p>
<h3>YUM源</h3>
<p></p><pre class="brush:bash;toolbar:false"># rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
# vim /etc/yum.repos.d/logstash.repo
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
# yum install logstash</pre><p>注意: 在安装logstash之前必须先要安装java。java的安装请参考之前的文章。</p>
<h3>新版本改变</h3>
<p>logstash2.0版本的一些改变与以前的版本不兼容。《ELK部署指南》一文中是使用logstash1.5版本的。现在我都将使用logstash2.1版本。</p>
<p>logstash2.0版本开始,logstash的默认输出是elasticsearch HTTP。要使用节点或者传输协议,下载安装 logstash-output-elasticsearch_java插件。logstash的elasticsearch HTTP输出现在支持嗅探。</p>
<p>配置选的改变</p>
<p>elasticsearch输出插件的配置改变如下:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">host配置项改变成hosts,允许指定多个主机和相关端口,如es1.ttlsa.com:9200。</li>
<li class="listitem">新的选项 <code class="literal">bind_host</code>, <code class="literal">bind_port</code>, <code class="literal">cluster</code>, <code class="literal">embedded</code>, <code class="literal">embedded_http_port</code>, <code class="literal">port</code>,<code class="literal">sniffing_delay。</code>
</li>
<li class="listitem"> <code class="literal">max_inflight_requests</code> 配置项已移除。</li>
<li class="listitem">由于hosts选项允许指定主机端口,因此port选项移除了。</li>
<li class="listitem"> <code class="literal">node_name 和 </code> <code class="literal">protocol</code> 选项已经移到 <code class="literal">elasticsearch_java</code> 插件。</li>
</ul>
</div>
<p>以下配置选项已从该版本中删除:</p>
<div class="itemizedlist">
<ul class="itemizedlist" type="disc">
<li class="listitem">input 插件配置设置: <code class="literal">debug</code>, <code class="literal">format</code>, <code class="literal">charset</code>, <code class="literal">message_format</code>
</li>
<li class="listitem">output 插件配置设置: <code class="literal">type</code>, <code class="literal">tags</code>, <code class="literal">exclude_tags</code>.</li>
<li class="listitem">filter 插件配置设置:<code class="literal">type</code>, <code class="literal">tags</code>, <code class="literal">exclude_tags</code>.</li>
</ul>
</div>
<p>如果logstash配置文件有这些配置项,将是无效的并且logstash无法启动。</p>
<p>kafka输出配置改变:</p>
<p>logstash2.0包含了新版本的kafka输出插件。具体参考文档。</p>
<p>指标过滤器改变:</p>
<p>以前版本的指标过滤器插件使用有点的字段名称。从2.0版本开始,elasticsearch不允许字段名有点号。这样的改变是为了该插件使用子字段名代替点号。注意,这些改变使版本3.0.0指标过滤器插件不兼容以前版本。</p>
<p>filter_workers默认改变:</p>
<p>从logstash2.0版本开始,filter_workers值不是CPU核数的一般,而是1了。该变化增强了并行过滤器执行资源密集型的过滤操作。当然还是可以通过-w来人工指定该值。</p> 感谢楼主分享!Logstash确实是ELK架构里承上启下的关键一环。最近我也在折腾版本升级,发现从老版本跳到新主线后,配置文件语法和插件生态变化挺明显的。特别是现在官方更推荐用系统包管理器或者容器化部署,APT源虽然省事,但得注意GPG签名和版本依赖的兼容性。
给大家提个醒:升级前一定要用logstash -f /path/to/conf --config.test_and_exit
先跑一遍语法检查,能避开不少启动报错的坑。另外filter链太长的话,记得拆开或者用pipeline路由优化下性能。
干货满满,已加入收藏夹!有在搞多pipeline并发或者grok正则调优的兄弟吗?欢迎一起交流踩坑经验~—— 路过打酱油的运维
頁:
[1]