• 浅谈ELK日志分析平台


    作者:珂珂
    链接:https://zhuanlan.zhihu.com/p/22104361
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    小编的话

    “技术干货”系列文章意在分享技术牛人的知识干货,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞!


    2016年7月20日,本期品高云公开课由叶春草带来“可视化案发现场——浅谈ELK日志分析平台”的分享。



    分享嘉宾




    叶春草现就职于品高云软件技术支持工程师。就职一年来,曾参与过广州地铁聆客、公司聆客、深圳公安局聆客的数据库迁移、升级及其他服务器的监控运维、日志分析系统搭建等,主要负责聆客相关运维。


    分享正文

    在谈ELK前,先来谈谈我们品高聆客和ELK之间的关系。


    BingoLink(品高聆客)是一款集“应用开发、整合接入、应用管理、安全保障、社交平台”于一体的MEAP平台。用BingoLink构建企业的移动化平台,满足企业在移动互联网年代移动应用开发、现有业务系统的整合接入、应用管理及运营、企业内部沟通协作等需求的实现。


    ELK在聆客中,发挥的作用和价值就在于
    1、可提高用户响应速度。通过ELK筛选出数据库慢查询日志,开发再对语句进行优化,则可提高数据库响应时间,进而提高用户响应时间。


    2、可提高聆客软件可用率。当有故障时,可用ELK快速查询所需要的日志,查看故障原因,缩短故障定位时间,进而提高可用率。


    3、可总结聆客网页的正常状态百分比。通过ELK筛选nginx状态码结果,绘制状态码扇形图,可清晰知道网页访问有多少是正常的。


    4、可定位聆客用户的地图分布。通过ELK抓取用户访问的公网IP,再绘制Tile map地图,则可在地图上清楚看来聆客在全国各地的分布,定位客户来源。


    5、可优化聆客系统。通过开发、运维定期查看ELK上的图表、周报,可发现隐藏问题(例如某个nginx路径访问持续过长、数据库有暂未影响功能的error等),进行排除,从而减少潜在的隐患,及优化系统。


    那么问题来了,ELK日志分析平台是什么?


    首先来看一下传统的日志查找方式:当有客户报障时,需要:

    1、登录服务器

    ssh ops@10.1.1.1 ssh ops@10.1.1.1

    ssh ops@10.1.1.1 …

    2、找到位置

    cd /apps/logs/nginx/; cd /apps/logs/mysql/;

    cd /apps/logs/docker; cd /apps/logs/java/; …… ……

    3、查看日志

    head tail grep wc awk count cut …… ……

    因此,传统的日志架构存在的以下若干缺点:

    1. 开发人员无权登录,经过运维周转费时费力

    2. 日志数据分散在多个系统,难以查找

    3. 日志数据量大,查询速度慢

    4. 一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据

    5. 数据不够实时

    6. ……

    一、日志架构的演变:

    传统的日志架构,需要运维人员强大的正则功底,对日志运用shell命令,例如cat tail grep awk sed等,对日志进行处理,再筛选出自己想要的结果或寻找关键字。

    有了ELK后,对运维和开发处理日志的要求降低,只需要在web界面上简单的操作,就可以找到自己想要的数据,并进行画图





    二、那么ELK名称怎么由来呢?

    首字母为该管理系统三个主要软件:Elasticsearch、Logstash、Kibana。这三个并非该管理系统的全部组成,而且还可以添加Redis,kafka,filebeat等软件

    它们各自的功能大概可以这样概述:

    E

    实时分析、实时检索、海量存储

    建立索引,以便日后快速查看、搜索、分析

    L

    数据流传输、日志结构化

    K

    分析统计、酷炫图表

    关于ELK的配置

    E配置:

    主要配置数据目录、日志目录、绑定IP和端口

    path.data: /apps/data/

    path.logs: /apps/logs/elasticsearch/

    network.host: 172.17.96.9

    http.port: 9200

    L配置:

    logstash的配置比较复杂,由三个部分组成:input,filter,output



    K配置:

    主要配置elasticsearch的地址,K的数据目录、日志目录、绑定IP和端口

    server.host: "172.17.96.8“

    server.port: 5601

    elasticsearch.url: ""

    pid.file: /apps/run/kibana/kibana.pid

    logging.dest: /apps/logs/kibana/kibana.log

    三、ELK启动

    service方式,当你的安装方式是rpm包或配置官方仓库时:

    1、service方式(rpm包,yum安装时)

    service $PROG start

    nohup+&在后台启动(源码安装时)

    2、nohup方式(源码包安装时)

    nohup $COMMAND &

    demontools(supervisord等启动进程的程序

    3、supervisord (源码包安装时)

    service supervisord start

    四、日志匹配

    1、过滤器:这里是选取几个过滤器进行讲解,更多的过滤器,可以在官网上继续学习

    date时间处理

    date时间格式

    date {

    match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]

    }

    2、grok正则捕获

    grok正则捕获

    grok{

    pattern => ["%{TIMESTAMP_ISO8601:Time} - %{IP:serverIP} %{BASE10NUM:port} %{BASE10NUM:relay:int}"]

    }

    grok {

    patterns_dir => ["/apps/conf/logstash/patterns"]

    match => {

    "message" => "%{MYSQLSLOW}"

    }

    3、mutate数据修改

    mutate数据修改

    mutate { convert => ["bytes","integer"] }

    mutate { convert => [“time","float"] }

    mutate { split => ["re_path", "/"] }

    4、rubby灵活处理

    ruby灵活处理

    ruby {

    init =>"@kname= ['re_path','re_args']"

    code =>"event.append(Hash[@kname.zip(event['request'].split('?'))])"

    }

    五、日志展示



    后续:
    1、监控方面:
    进程和端口存活(各个软件)
    磁盘空间(Elasticsearch的数据目录,logstash的日志目录等
    ……
    2、优化方面:
    Elasticsearch 中,JVM使用OS的max-open-files设置、索引调整、文件刷新时间等
    Logstash的日志部分无用段去除、filter worker数量等

  • 相关阅读:
    Codeforces 1132D
    Codeforces 670F
    Codeforces 670E
    Codeforces 670E
    Codeforces 670E
    Codeforces 670
    Codeforces 1138
    Codeforces 1114E
    力扣21.合并两个有序链表
    力扣538.把二叉树转换为累加树
  • 原文地址:https://www.cnblogs.com/onetwo/p/6282159.html
Copyright © 2020-2023  润新知