jjzjj

ELK日志平台搭建

打代码的哈士奇 2024-04-07 原文

平时查看错误日志,都是登录到服务器,然后用命令进行查看,不是很好的定位问题,决定搭建一个ELK的日志查看平台。ELK是Elasticsearch、Logstash、Kibana三个的简称。Elasticsearch是一个分布式的实时搜索引擎,Logstash是一个日志的收集器,Kibana是在浏览器端用于展示的可视化工具。将他们三个结合起来,可以用于日志的可视化分析,大体功能如下图:

(一) 安装Elasticsearch

官网下载ES的安装包,这里我下载的是5.5.0的版本,然后进行解压安装:

  • unzip elasticsearch-5.5.0.zip
  • cd /elasticsearch-5.5.0
  • ./bin/elasticsearch -d (加上-d参数表示后台启动ES)

访问http://localhost:9200/,显示如下版本信息,说明安装成功

{
  "name" : "dv8zjAU",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "vmNdDKGoTBy2w-tlqd8jtA",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

(二) 安装Logstash

  • tar -zvxf logstash-5.5.1.tar.gz
  • cd logstash-5.5.1
  • touch simple.conf
  • vi simple.conf

在simple.conf加入以下配置信息,其中hosts是ES的安装地址和端口号。ES是通过9200提供HTTP的服务,ES节点间的TCP通信是通过9300端口

input {
  tcp {
    port => 4560
    codec => json_lines
  }
}

output {
  stdout {
    codec => rubydebug
    }
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logstash-test"
  }
}

使用刚刚的simple.conf配置文件启动Logstash

  • ./bin/logstash -f simple.conf

(三) 安装Kibana

解压Kibana

  • tar -zvxf kibana-5.5.0-linux-x86_64.tar.gz

修改kibana.yml,监听ES的地址

  • cd kibana-5.5.0-linux-x86_64/config
  • vi kibana.yml

加入以下配置信息

server.port: 5601
server.host: "0.0.0.0" #修改监听地址,不然只能本机访问
elasticsearch.url: "http://localhost:9200"

后台启动kibana

  • nohup ./bin/kibana &

访问http://localhost:5601,显示如下,说明安装kibana成功

(三) 将LogBack日志输入Logstash

pom.xml中添加Maven依赖

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.8</version>
</dependency>

在logback.xml添加配置,将项目日志输入到Logstash

<appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.2.102:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>

<root level="INFO">
    <appender-ref ref="STASH" />
    <appender-ref ref="STDOUT" />
    <appender-ref ref="ERROR" />
    <appender-ref ref="INFO" />
    <appender-ref ref="WARN" />
    <appender-ref ref="DEBUG" />
</root>

在项目启动打印日志,查看kibana控制台是否有日志输出

 public static void main(String[] args) {
        logger.info("服务启动");
        logger.error("服务错误");
        logger.warn("系统警告");
        logger.info("服务结束启动");
    }

在kibana查看日志,搜索"服务"关键字查看日志信息

此时kibana服务器端会看到日志的打印信息

有关ELK日志平台搭建的更多相关文章

  1. ruby - Sinatra 中的全局救援和日志记录异常 - 2

    如何在出现异常时指定全局救援,如果您将Sinatra用于API或应用程序,您将如何处理日志记录? 最佳答案 404可以在not_found方法的帮助下处理,例如:not_founddo'Sitedoesnotexist.'end500s可以通过调用带有block的错误方法来处理,例如:errordo"Applicationerror.Plstrylater."end错误的详细信息可以通过request.env中的sinatra.error访问,如下所示:errordo'Anerroroccured:'+request.env['si

  2. ruby-on-rails - 使用 Ruby 标准 Logger 每天只创建一个日志 - 2

    我正在使用ruby​​标准记录器,我想要每天轮换一次,所以在我的代码中我有:Logger.new("#{$ROOT_PATH}/log/errors.log",'daily')它运行完美,但它创建了两个文件errors.log.20130217和errors.log.20130217.1。如何强制它每天只创建一个文件? 最佳答案 您的代码对于长时间运行的应用程序是正确的。发生的事情是您在给定的一天多次运行代码。第一次运行时,Ruby会创建一个日志文件“errors.log”。当日期改变时,Ruby将文件重命名为“errors.log

  3. ruby - Cucumber/Savon 省略或删除日志输出 - 2

    在运行Cucumber测试时,我得到(除了测试结果)大量调试/日志相关的输出形式:D,[2013-03-06T12:21:38.911829#49031]DEBUG--:SOAPrequest:D,[2013-03-06T12:21:38.911919#49031]DEBUG--:Pragma:no-cache,SOAPAction:"",Content-Type:text/xml;charset=UTF-8,Content-Length:1592W,[2013-03-06T12:21:38.912360#49031]WARN--:HTTPIexecutesHTTPPOSTusingt

  4. ruby-on-rails - faraday如何设置日志级别 - 2

    我最近将我的http客户端切换到faraday,一切都按预期工作。我有以下代码来创建连接:@connection=Faraday.new(:url=>base_url)do|faraday|faraday.useCustim::Middlewarefaraday.request:url_encoded#form-encodePOSTparamsfaraday.request:jsonfaraday.response:json,:content_type=>/\bjson$/faraday.response:loggerfaraday.adapterFaraday.default_ada

  5. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  6. ruby - 如何更改 Sinatra 中的日志级别 - 2

    我正在使用此代码在我的Sinatra应用程序中启用日志记录:log_file=File.new('my_log_file.log',"a")$stdout.reopen(log_file)$stderr.reopen(log_file)$stdout.sync=true$stderr.sync=true实际的日志记录是使用:logger.debug("Startingcall.Params=#{params.inspect}")事实证明,只有INFO或更高级别的日志消息被记录,而DEBUG消息没有被记录。我正在寻找一种将日志级别设置为DEBUG的方法。 最佳

  7. ruby - 带有 grep 远程日志文件的 tail - 2

    我有这段代码来跟踪远程日志文件:defdo_tail(session,file)session.open_channeldo|channel|channel.on_datado|ch,data|puts"[#{file}]->#{data}"endchannel.exec"tail-f#{file}"endNet::SSH.start("host","user",:password=>"passwd")do|session|do_tailsession,"/path_to_log/file.log"session.loop我只想在file.log中检索带有ERROR字符串的行,我正在尝

  8. Ruby 守护进程日志轮换 - 2

    当我为Daemons(1.1.0)gem设置日志记录参数时,我将如何实现与此行类似的行为?logger=Logger.new('foo.log',10,1024000)守护进程选项:options={:ARGV=>['start'],:dir_mode=>:normal,:dir=>log_dir,:multiple=>false,:ontop=>false:mode=>:exec,:backtrace=>true,:log_output=>true} 最佳答案 不幸的是,Daemonsgem不使用Logger。它将STDOUT和S

  9. ruby-on-rails - 在 Rails 应用程序的前端获取实时日志 - 2

    在Rails3.x应用程序中,我正在使用net::ssh并向远程pc运行一些命令。我想向用户的浏览器显示实时日志。比如,如果两个命令在net中运行::ssh执行即echo"Hello",echo"Bye"被传递然后"Hello"应该在执行后立即显示在浏览器中。这是代码我在ruby​​onrails应用程序中使用ssh连接和运行命令Net::SSH.start(@servers['local'],@machine_name,:password=>@machine_pwd,:timeout=>30)do|ssh|ssh.open_channeldo|channel|channel.requ

  10. ruby - gem 应该在哪里存储日志文件? - 2

    我正在构建一个应该输出日志文件的ruby​​gem。将日志文件存储在哪里是一个好习惯?我正在从我正在构建的Rails网站中提取此功能,我可以在那里简单地登录到log/目录。 最佳答案 理想情况下,使路径可配置(.rc文件、交换机、rails/rack配置等)。如果它是一个Rack中间件,添加在构造函数的参数中指定它的可能性。如果没有提供日志路径,回退到检测日志目录。(我依稀记得它是Rails中的config.paths['log'],但如果可以的话,请确保config在你的gem中使用之前确实指向某些东西在Rails之外使用。)如果

随机推荐