Linux is not Matrix——日志搜集平台ELK(I)

来源:互联网 发布:迅雷你的网络未连接 编辑:程序博客网 时间:2024/06/05 23:32

   又拖了一些日子,然而是为了准备一个大新闻,一般来说我准备的这些运维方面的软件都是有了这个需求,然后需要解决什么问题才会研究这方面的软件的,这次也是为了解决一个问题,日志。

   我们已经在代码中加入了log4j,在jboss或者tomcat的log文件夹中就能看到日志输出的信息了,一旦出了问题我们就可以找到日志,然后打开里面的内容去解决具体问题。

   然而,假设我们的系统是一个大型的分布式系统,如果出了问题很可能需要查询多个服务器的日志,甚至可能会查系统日志,安全日志,软硬件信息等等,这样的话效率一下就降低了很多,所以呢,也是找到了一个日志收集的这么个系统。

   开源实时日志收集系统ELK,ELK分别是三个东西,ElasticSearch,Logstash,Kiabana。

    Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。

    Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用。

    kibana 也是一个开源和免费的工具,他Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

  虽然说着这么复杂,其实总结起来就是,L负责搜集日志,E负责搜索,K负责页面显示。

  好了,我们的Logstash需要JDK,这个我就不写教程了,应该都会装的,我们去官网下载一波压缩包。

wget https://download.elastic.co/logstash/logstash/logstash-2.3.1.tar.gz
  下载之后解压。

tar zxvf ./logstash-2.3.1.tar.gz
  移动到新的文件夹。

mv ./logstash-2.3.1 ./logstash
  解压之后就可以启动试试了。不过这次启动我们先看看有什么效果,执行。

cd ./logstash./bin/logstash -e 'input { stdin { } } output { stdout {} }'
  执行完成之后,我们可以试着在命令行中输入信息,我们输入什么,logstash就会在屏幕上显示什么,并且写成一种特定的格式。比如我写一个helloworld,屏幕上就会显示这个。

{      "message" => "helloWorld",     "@version" => "1",   "@timestamp" => "2016-05-15T22:07:28.284Z",         "host" => "noc.vfast.com"}
  这种情况下就算可以了,但是呢,我们既然是搜集日志,我们就先配置一个系统的日志试试。我们添加一个搜集系统日志的配置文件,里面写这些内容
input {  file {    type =>"syslog"     path => ["/var/log/messages", "/var/log/syslog" ]  }  syslog {    type =>"syslog"    port =>"5544"  }}output {  stdout { codec=> rubydebug }  elasticsearch {hosts=> "127.0.0.1:9200" }}
  这里就是规定了日志的位置,然后类型,提交给ElasticSearch的地址等等,应该能看的出来。

  这样就算配置好一个Logstash了,不难看出logstash是怎么实现分布式搜集日志的,首先定义了文件的位置,然后读取文件并且输出成一种固定的格式,最后提交给远程的ElasticSearch的服务端,这样服务端接收数据之后就能进行全文索引了。

   今天就这样- -


0 0
原创粉丝点击