9号彩票开户

关注微信  |  微博  |  腾讯微博  |  RSS订阅
读者QQ群③:168129342,投稿请发dashuju36@qq.com
我要投稿

搭建ELK日志分析平台

大数据

简介

ELK stack是实时日志处理领域开源的一套解决方案,最近这两年越来越火,大有一统江湖之势。ELK是一套解决方案而不是一款软件,三个字母分别是三个软件产品的缩写。
E代表Elasticsearch,负责日志的存储和检索;
L代表Logstash, 负责日志的收集,过滤和格式化;
K代表Kibana,负责日志的展示统计和数据可视化
先来看下elk主要的应用场景:

  • 查询程序日志: 线上程序难免会出现各种问题,为了排查出现的问题,开发需要登录到应用程序所在的机器,使用cat、awk、grep、sort 等工具查询具体的log信息。这样查询日志极其不方便,在机器数量多、日志文件大,开发没有权限登录服务器的情况下更麻烦。
  • 统计信息:我们经常需要统计下某个接口调用次数、平均响应时间、成功/失败比率等信息。

使用logstash能够解析不同服务器上的不同类型的日志,将这些信息格式化然后通过接口传递给elasticsearch集群,elasticsearch集群负责存储这些日志信息,并为这些日志信息建立索引提供查询接口给kibana。我们通过kibana页面就可以很方便的实时查询线上日志信息,还可以做各种统计,生成实时报表。

大数据

环境搭建

  • 安装java(java 8及以上版本)
    brew cash install java
  • 安装elasticsearch
    https://www.elastic.co/downloads/elasticsearch
  • 安装logstash
    https://www.elastic.co/downloads/logstash
  • 安装kibana
    https://www.elastic.co/downloads/kibana
  • supervisor
    推荐使用supervisor管理ELK。
    http://supervisord.org/installing.html

实战

本章节将演示如何用ELK来对Nginx访问日志进行解析,存储以及可视化。

默认的nginx日志输出格式为

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

//一条具体的日志信息
127.0.0.1 - - [21/May/2017:17:10:03 +0800] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" "-"

用Logstash 推送数据到 Elasticsearch

  • 我们首先需要在nginx所在的机器上部署logstash
  • 然后执行 logstash -f nginx_access_logstash.conf

nginx_access_logstash.conf文件的内容如下

input {
    file {
        path => ["/usr/local/logs/nginx/*.log"]
        type => "system"
        start_position => "beginning"
    }
}

filter {
  grok {
    match => {
      "message" => '%{IPORHOST:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:time}\] "%{WORD:request_action} %{DATA:request} HTTP/%{NUMBER:http_version}" %{NUMBER:response} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}"'
    }
  }

  date {
    match => [ "time", "dd/MMM/YYYY:HH:mm:ss Z" ]
    locale => en
  }

  geoip {
    source => "remote_ip"
    target => "geoip"
  }

  useragent {
    source => "agent"
    target => "user_agent"
  }
}

output {
  elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash-nginx-access-log"
        document_type => "logs"
        flush_size => 20000
        idle_flush_time => 10
        sniffing => true
        template_overwrite => true
    }
}

检查数据是否被Elasticsearch索引成功

在浏览器中运行 http://127.0.0.1:9200/logstash-nginx-access-log/logs/_search?q=*

在Kibana中查询相关日志

  • 打开http://localhost:5601/
  • Management面板中配置我们在elasticsearch中创建的索引logstash-nginx-access-log
  • 然后在discover面板中就可以查询到我们之前导入的日志了
  • 然后在visualize面板中可以做数据可视化报表

End.

转载请注明来自36大数据(36dsj.com):36大数据 » 搭建ELK日志分析平台

36大数据   除非特别注明,本站所有文章均不代表本站观点。报道中出现的商标属于其合法持有人。请遵守理性,宽容,换位思考的原则。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
友情链接:金福彩票  聚富彩票  万彩会彩票  幸运农场  北京赛车pk拾遗漏  

免责声明: 本站资料及图片来源互联网文章,本网不承担任何由内容信息所引起的争议和法律责任。所有作品版权归原创作者所有,与本站立场无关,如用户分享不慎侵犯了您的权益,请联系我们告知,我们将做删除处理!