基于 ELK + Filebeat 搭建日志中心
<h2>基于ELK+Filebeat搭建日志中心</h2> <p>本文是基于docker进行的容器化搭建ELK</p> <h2>当前环境</h2> <ol> <li>系统:centos7</li> <li>docker 1.12.1</li> </ol> <h2>介绍</h2> <h3>ElasticSearch</h3> <p>Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。</p> <h3>Logstash</h3> <p>Logstash 是一个具有实时渠道能力的数据收集引擎,主要用于日志的收集与解析,并将其存入 ElasticSearch中。</p> <h3>Kibana</h3> <p>Kibana 是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。</p> <h3>Filebeat</h3> <p>引入Filebeat作为日志搜集器,主要是为了解决Logstash开销大的问题。相比Logstash,Filebeat 所占系统的 CPU 和内存几乎可以忽略不计。</p> <h2>架构</h2> <h3>不引入Filebeat</h3> <p><img src="https://simg.open-open.com/show/9e1b16a82a82de238ba8efbee2ada191.png"></p> <h3>引入Filebeat</h3> <p><img src="https://simg.open-open.com/show/7e17cfa97e469529ba1c5387f4ce8e96.png"></p> <h2>部署</h2> <h3>启动ElasticSearch</h3> <pre> <code class="language-javascript">docker run -d -p 9200:9200 --name elasticsearch elasticsearch</code></pre> <h3>启动Logstash</h3> <pre> <code class="language-javascript"># 1. 新建配置文件logstash.conf input { beats { port => 5044 } } output { stdout { codec => rubydebug } elasticsearch { #填写实际情况elasticsearch的访问IP,因为是跨容器间的访问,使用内网、公网IP,不要填写127.0.0.1|localhost hosts => ["{$ELASTIC_IP}:9200"] } } # 2.启动容器,暴露并映射端口,挂载配置文件 docker run -d --expose 5044 -p 5044:5044 --name logstash -v "$PWD":/config-dir logstash -f /config-dir/logstash.conf</code></pre> <h3>启动Filebeat</h3> <p>下载地址: <a href="/misc/goto?guid=4959741382339162439" rel="nofollow,noindex">https://www.elastic.co/downloads/beats/filebeat</a></p> <pre> <code class="language-javascript"># 1.下载Filebeat压缩包 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.2.2-linux-x86_64.tar.gz # 2.解压文件 tar -xvf filebeat-5.2.2-linux-x86_64.tar.gz # 3.新建配置文件filebeat.yml filebeat: prospectors: - paths: - /tmp/test.log #日志文件地址 input_type: log #从文件中读取 tail_files: true #以文件末尾开始读取数据 output: logstash: hosts: ["{$LOGSTASH_IP}:5044"] #填写logstash的访问IP # 4.运行filebeat ./filebeat-5.2.2-linux-x86_64/filebeat -e -c filebeat.yml</code></pre> <h3>启动Kibana</h3> <pre> <code class="language-javascript">docker run -d --name kibana -e ELASTICSEARCH_URL=http://{$ELASTIC_IP}:9200 -p 5601:5601 kibana</code></pre> <h2>测试</h2> <ol> <li>模拟日志数据</li> </ol> <pre> <code class="language-javascript"># 1.创建日志文件 touch /tmp/test.log # 2.向日志文件中写入一条nginx访问日志 echo '127.0.0.1 - - [13/Mar/2017:22:57:14 +0800] "GET / HTTP/1.1" 200 3700 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-"' >> /tmp/test.log</code></pre> <ol> <li>访问 http://{$KIBANA_IP}:5601</li> </ol> <p style="text-align:center"><img src="https://simg.open-open.com/show/a308356e9f91eb864a3bcea1f6245365.png"> <img src="https://simg.open-open.com/show/e7ed2db7425ddddfb3ef36d5bc6d86ec.png"></p> <h2>总结</h2> <p>本文主要讲述了如何一步步搭建ELK的过程,以及Filebeat在其中所起的作用。</p> <p>这儿仅仅给大家做了一个演示,要在生产环境中部署时,还需使用数据卷进行数据持久化,容器内存问题也需考虑,elasticsearch与logstash都是相对吃内存的,如果不加以限制,很可能会拖垮你整个服务器。</p> <p>当然安全因素也是大家不能忽视的,如传输的安全性、端口权限的最小化暴露程度,防火墙设置等。</p> <h2>后续</h2> <ol> <li>logstash解析日志格式,如JAVA、nginx、nodejs等日志;</li> <li>elasticsearch的常用搜索语法;</li> <li>通过kibana制作可视化图表;</li> </ol> <p> </p> <p>来自:https://github.com/jasonGeng88/blog/blob/master/201703/elk.md</p> <p> </p>
本文由用户 674477230 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
转载本站原创文章,请注明出处,并保留原始链接、图片水印。
本站是一个以用户分享为主的开源技术平台,欢迎各类分享!