为什么做日志系统

通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。
这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。
总的来说有一下三点

  • .数据查找:通过检索日志信息,定位相应的 bug ,找出解决方案。
  • 服务诊断:通过对日志信息进行统计、分析,了解服务器的负荷和服务运行状态
  • 数据分析:可以做进一步的数据分析。

什么是ELK

  1. Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  2. Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
  3. Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志
 
image.png

作者:火龙果萨满
链接:https://www.jianshu.com/p/ac34ff713d38
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

1、elk 是什么 ?

Elastic Stack(旧称ELK Stack),是一种能够从任意数据源抽取数据,并实时对数据进行搜索、分析和可视化展现的数据分析框架。(hadoop同一个开发人员)

java 开发的开源的全文搜索引擎工具

基于lucence搜索引擎的

采用 restful - api 标准的

高可用、高扩展的分布式框架

实时数据分析的

官方网站: https://www.elastic.co/products

2、为什么要用elk?

服务器众多,组件众多,日志众多

发现问题困难,技能要求高

     

     业务场景:《实时日志分析展现》

日志主要包括系统日志、应用程序日志和安全日志。

系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。

当务之急我们使用集中化的日志管理,例如:开源的 syslog ,将所有服务器上的日志收集汇总。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep 、 awk和 wc 等 Linux 命令能实现检索和统计,

但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

开源实时日志分析 ELK 平台能够完美的解决我们上述的问题, ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三个开源工具组成。

3、体系架构

工作原理如下如所示:

在需要收集日志的所有服务上部署 logstash ,其中 logstash agent ( logstash shipper )用于监控并过滤收集日志,将过滤后的内容发送到 logstash indexer , logstash indexer 将日志收集在一起交给全文搜索服务 ElasticSearch ,

可以用 ElasticSearch 进行自定义搜索

通过 Kibana 来结合自定义搜索进行页面展示。

3、elk的技术架构

gateway:hdfs、Amazon S3、Local FileSystem、Shared FileSystem

Index module、Search module、 Mapping、River(引入异构数据的插件机制:RabbitMQ-River、Twitter-River)

zen和ec2---zk、scripting(mvel、python、js等)

第三方插件(Head、)

Transport(Thrift、Memcached、Http)

Java(Netty)

restful 和 curl

4、elk的基本概念

node 和 cluster

     index(数据库)->type(表)->document(行)->field (字段)

shards 分片

replicas 复制

5、其他全文搜索

Solr:文本支持强,html、pdf、word、excel、cvs

Elasticsearch:实时数据分析,支持json格式

splunk:

6、resftful风格

7、curl

curl www.baidu.com

curl -o baidu.txt www.baidu.com

curl -O www.baidu.com/xxx.html

curl -i   www.baidu.com 显示HTTP头信息

curl -v  www.baidu.com 显示过程

curl -X GET/PUT/POST/DELETE www.baidu.com

8、查看官方api

单模式:

多模式:

最新文章

  1. 判断手机端用户打开页面时是android还是ios,并将判断结果通过ajax返回给url接口,传递回去
  2. 执行时关闭标识位 FD_CLOEXEC 的作用
  3. 【代码笔记】iOS-轮询弹出框
  4. Python 从零学起(纯基础) 笔记(一)
  5. HDU 5769 后缀数组
  6. Poj 3250 单调栈
  7. js阻止表单重复提交
  8. discuz二次开发之后导航无法高亮 $mnid == $nav[navid]解决办法(转)
  9. Message,MessageQueue,Looper,Handler详解+实例
  10. 【JavaScript】JavaScript中的陷阱大集合
  11. Android线性布局(Linear Layout)
  12. 李洪强iOS开发Swift篇---11_变量&常量&元组
  13. 乱七八糟 Nodejs 系列一:试水
  14. Phpstorm中使用SFTP
  15. 自学Python全栈开发的第二次笔记(Python需要注意的地方)
  16. Rxjava +Retrofit 你需要掌握的几个技巧,Retrofit缓存,RxJava封装,统一对有无网络处理,异常处理, 返回结果问题
  17. 在python中单线程,多线程,多进程对CPU的利用率实测以及GIL原理分析
  18. sorter函数参数设置
  19. js数值进制互转
  20. Python正则表达式操作指南(转)

热门文章

  1. 019-zabbix数据库表详解
  2. token和sign
  3. Redis在centos上面的安装
  4. HelloWorld的解析
  5. Spring AOP 在XML中声明切面
  6. jquery easyui datagrid 远程加载数据----把主键渲染为值遇到的问题及解决方案
  7. haproxy教程
  8. python从入门到实践 第二章
  9. ModelSerializer 使用知识点_serializer.save(project=obj) #外键一定要作为实例传入save函数,否则无法新增成功
  10. Shell 变量/echo命令