Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分析功能的搜索引擎,能够扩展至数以百计的节点实时处理PB级别的数据。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Elasticsearch集群采用主从模式,通过获取Logstash客户端收集来的日志信息同步到Elasticsearch集群节点中,再由Kibana的Web界面获取到日志信息进行搜索查询工作,当Elasticsearch主节点挂掉之后,Elasticsearch从节点的数据仍就正常,需要变更Kibana的elasticsearch.url参数去指定Elasticsearch节点IP,保证ELK日志系统的正常运行。

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的“存储库”中。而当下最常用的存储库就是Elasticsearch。需要在所有需要搜集日志的客户端中安装Logstash或者Filebeat等日志搜集工具,对Logstash配置文件进行修改,指定input上下文,即搜集的日志路径(最好为绝对路径)。output上下文,指定Logstash从input搜集到的日志内容输出到哪里保存,一般指向Elasticsearch的主节点IP地址。

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。


ELK日志系统配置:

三台CentOS7.3虚拟机

node-2 192.168.175.130 Elasticsearch

node-3 192.168.175.131 Logstash

node-4 192.168.175.132 Kibana


源代码包:

wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.4/elasticsearch-2.3.4.tar.gz

wget https://download.elastic.co/logstash/logstash/logstash-2.3.4.tar.gz
wget https://download.elasticsearch.org/kibana/kibana/kibana-4.5.3-linux-x64.tar.gz

分别在对应的虚拟机中下载。

①ELK需要在Java环境中部署,最好是在Java8以上。


②关闭所有虚拟机的防火墙

#iptables -F

#setenforce 0


③安装Elasticsearch

#tar -xf elasticsearch-2.3.4.tar.gz -C /usr/local

#mv /usr/local/elasticsearch-2.3.4 /usr/local/elasticsearch

#cd /usr/local/elasticsearch/config

#vim elasticsearch.yml

elasticsearch配置如上

cluster.name:集群名称,若有多个elasticsearch节点,则每个节点都需要相同集群节点名称。

node.name:节点名称,集群节点名称。

node.master:指定该节点是否为主节点。

node.data:指定该节点是否为均衡器节点,true为数据节点,存储日志数据,false为均衡器节点。

path.data:存储日志数据的路径。

path.logs:elasticsearch节点的日志路径。

network.host:该主机IP。

http.port:集群中Kibana以及Logstash的访问端口,9300位Elasticsearch节点中交流的端口。

bootstrap.memory_lock:锁定堆内存。

http.cors.enabled:如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。

http.cors.allow-orign:如果 http.cors.enabled 的值为true,那么该属性会指定允许 REST 请求来自何处。

discovery.zen.ping.unicast.hosts:elasticsearch集群节点的IP地址。


注意事项:

① 需要创建一个elasticsearch用户,并授权给Elasticsearch集群中的path.data,path.logs数据与日志路径

② max file descriptors [4096] for elasticsearch process is too low,increase to at least [65536](报错信息)

需要修改/etc/security/limits.conf


③ max virtual memory areas vm.max_map_count [65530] is too low,increase to at least [262144](报错信息)

需要修改内核参数vm.max_map_count=655360

#sysctl -w vm.max_map_count=65536

也可以直接写入到/etc/sysctl.conf(永久)

④运行elasticsearch的时候不能以root身份运行,需要以创建的elasticsearch用户的身份运行。

运行elasticsearch



④安装Logstash

#tar -xf logstash-2.3.4.tar.gz -C /usr/local

#mv /usr/local/logstash-2.3.4 /usr/local/logstash

#cd /usr/local/logstash

修改配置文件,使Logstash能够收集当前虚拟机的日志信息(需要指定),并输出到elasticsearch master主机。

input上下文表示拉取本机/var/log/test.log中的日志

output上下文表示将Logstash拉渠道的日志内容放到elasticsearch集群中,指定IP及端口,设置索引可以在Kibana上添加索引进行查询。


启动Logstash


⑤安装Kibana

#tar -xf kibana-4.5.3-linux-x64.tar.gz -C /usr/local

#cd /usr/local/kibana

配置如下:

启动Kibana


在本机访问http://192.168.175.132:5601

可以在Kibana的虚拟机上安装Nginx进行反代,将所有数据反代给192.168.175.132的5601端口

实现结果:

搜索在Logstash中指定的索引作为在Kibana的日志分类


给/var/log/test.log传入数据

#cat /var/log/boot.log >> /var/log/test.log

这时候在Kibana中的discover刷新一下即可查看到对应的日志信息。

CentOS7.3下ELK日志分析系统集群搭建的更多相关文章

  1. ios – 如何在swift3中增加String.Index?

    在swift2.3中运算符用于string.index增加例如.一世我改为swift3代码发生了“一元运算符”不能应用于’@valueString.Index’类型的操作数(又名’@lvalueString.CharacterView.Index’)“在swift3中我改写了例如.i=1但是这段代码无法解决.请帮我.解决方法String.Index是String.CharacterView.Ind

  2. ios – CoreData有序关系 – 使用NSFetchRequest批量取消

    或者,是否存在批量不支持的API,它不是私有的?解决方法目前我有一个解决方案,但不是一个干净的解决方案:我希望按照有序关系中的20个小组进行批量修改.所以,每次我索引一个索引,它的索引除以20,我为接下来的20使用新的NSFetchRequest,并通过调用公共字段名称来解除它们.

  3. XCode 5远程调试OS X应用程序

    我正在使用XCode5.0.2在OSX10.9上开发一个应用程序并获得了一个我无法在这台开发机器上重现的错误报告.但是,我有一个10.7虚拟机出现崩溃,所以我想调试那里没有在这个VM中安装XCode.我搜索了有关远程调试的信息,但我没有得到有用的答案.我甚至担心它根本不受支持.但无论如何我还是要问一下.或者,除了执行完整的XCode安装等之外,还有哪些其他选项来调试这样的问题?

  4. ios – Swift中的PageViewController当前页面索引

    我想获取一个pageViewController的当前索引,我不知道我如何获取可见页索引.解决方法您可以使用didFinishAnimating,并将标签设置为查看控制器.尝试这个

  5. ios – OpenGL – 为什么GL_ELEMENT_ARRAY_BUFFER的索引?

    我目前是OpenGLES2.0领域的新手,希望尽可能地了解绑定,缓冲区,着色器等.截至目前,我只是想了解GL_ELEMENT_ARRAY_BUFFER和GL_ARRAY_BUFFER之间的差异,以及何时使用每个注释的预设.我目前的理解使我相信GL_ELEMENT_ARRAY_BUFFER是专门用于所述三角形的索引,而另一个则是其他的.有人可以详细说明为什么,如果这是正确的?GL_ELEMENT_A

  6. 如何恢复索引功能? (Xcode中)

    我的一个项目刚刚开始干扰索引过程.索引过程在中途冻结,然后突然停止,导致SourceKitService崩溃.我根本无法找到错误的代码;因为似乎没有!)–但它无法被索引.最初,我以为它是一个Xcode7.2的问题,所以升级到最新的beta(7.3);但是问题依然存在.我无法恢复到我的旧代码,因为太多的工作将被撤销,我无法发现特定的文件.崩溃报告是here.为了澄清,Xcode本身不会崩溃,只有索引过程.关于如何解决这个问题的任何想法?

  7. ios – Swift:通过索引移动数组中的元素

    给定n个元素的阵列,即vararray=[1,2,3,4,5]我可以写一个扩展到Array,所以我可以修改数组来实现这个输出:[2,5,1]:有没有办法实现这样的功能,可以通过任何索引(正或负)来移动数组.我可以用if-else子句强制执行这个功能,但是我正在寻找的是功能实现.算法很简单:>按提供的索引将数组拆分成两个>将第一个数组追加到第二个数组的末尾有没有什么办法实现它的功能风格?

  8. ios – 从imageview点击手势获取索引或标签值

    这是来自应用商店的图像,只要我们搜索任何应用程序.我也想添加相同的scrollview概念,它显示当前图像与上一个和下一个图像的小预览.我可以在Samplecode的帮助下做出这个观点.但是当用户点击任何图像时,没有找到任何解决方案来获取索引或标签值.所以我可以打开每个图像的详细页面.如果有人有这个想法,请帮助我.提前致谢.解决方法将手势识别器添加到必要的图像视图中:然后在手势处理程序中访问附加到的视图手势识别器:

  9. ios – 不能下标'[NSObject:AnyObject]类型的值?具有“String”类型的索引

    意味着一个可选的类型,这意味着你试图在本质上是一个枚举上调用一个下标.当你尝试这样做时,没有下标声明,所以系统阻塞.通过添加?我们在说,如果可能,打开这个值,然后调用下标.这样一来,系统就会推测出下面的声明类型[NSObject:AnyObject],一切都可以.你也可以使用!强制解开,但如果苹果没有,这将会崩溃.写另一种可能的方式是:这样,苹果不再是可选的,它将始终具有下标语法.不需要解开包装

  10. iOS DeepLinking中是否需要Google App Indexing SDK?

    我想在我的网页和iOS应用中使用GoogleAppIndexing.我确实支持使用ApplesSearch的UniversalLinks(或Googlelingo中的深层链接)并相应地设置我的网页.从Googlesdocumentation开始,我无法确定是否真的需要添加GoogleAppIndexingSDK.SDK没有给我任何必需的功能,我宁愿跳过它–但谷歌是否依靠SDK才能做到这一点?我没有

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部