日志的作用:系统运维和开发人员可以通过日志了解服务器软硬件,检查配置过程当中发生的错误和错误原因。以便了解服务器的负荷,性能的安全性,从而及时的采取措施纠正错误。
日志的功能:解决系统故障和发现问题的主要手段。
日志主要包括:系统日志,应用程序日志,安全日志。
集中化管理日志。对于日志的统计和检索是一件比较麻烦的事情。一般使用grep ,awk和wc等Linux命令去实现检索和统计。但是对于查询,排序和统计,就显得有些力不存心。而ELK正好能解决上述问题
ELK是开源分布式的搜索的引擎。它是由ElasticSearch,Logstash和Kiabana三个开源工具构成。
Elasticsearch功能:分布式,零配置,自动发现,索引自动分片,自动搜索负载,索引副本机制。
Logstash功能:完全开源,负责对日志进行收集,过滤和存储。
Kibana功能:完全开源免费,它为Elasticsearch和Logstash提供日志分析web界面,帮助汇总,分析和搜索重要数据日志
工作原理:Logstash负责收集AppServer常用的log(日志),并且存放到Elasticsearch集群当中,kibana则从ES集群当中查询数据并生成图表。然后,返回给Browser(浏览器)
一:ELasticSearch介绍
基于Lucene搜索服务器,提供了一个分布式多用户能力的全文搜索。基于ERESTful web接口并且是通过Java开发的,能够达到实时搜素,稳定,可靠,快捷并且安装方便
1,实时(NRT)
ELasticSearch是一个接近实时的搜索的平台,它的延迟通常是1秒。
2,集群(Cluster)
集群:将一个或者多个节点组织在一起,并且拥有相同的数据。其中有一个节点是主节点,而这个主节点是通过选举产生的。且集群名字必须具有唯一性,默认为ELasticsearch。其他节点要依赖于集群名字加入其中,在不同的环境要使用不同的集群名字。
3,节点(node)
节点是由一台单一的服务器构成。它是集群的一部分,并且参与集群的搜索和存储数据功能。可以通过集群的名字来加入到集群当中
4,索引(index)
索引类似于关系型数据库当中的库
5,类型(type)
类型相当于关系型数据库当中的表
6,文档(document)
文档是一个可被索引的基础信息单元。类似于数据库当中的列。
7,分片和副本(shards & replicas)
在实际情况当中,索引存储的数据可能超过单个节点的硬件限制。如十亿文档需要占据1TB的空间。可能不适合存储在单个节点的磁盘上或者说从单个节点搜索请求太慢;为了解决这个问题elasticsearch 提供将索引分成多个分片的功能。在创建索引时,可以定义想要分片的数量而每一个分片就是一个全功能的独立的索引,他可以位于集群当中的任何节点之上。
A:分片的主要原因: a,水平分割扩展,增大存储量
b,分布式并行跨分片操作,提高性能和吞吐量
B:副本的主要原因: a,高可用性。防止分片或者某个节点出现故障,建议不能将分片和副本部署在同一个节点之上
b,提供性能,增大他的吞吐量。搜索可以并行在所有副本上执行
索引可以被分成多个分片;也可以被复制多次。一旦复制了索引,每个索引就有了主分片(复制索引的分片)和复制分片(复制主分片的分片)。分片和副本的数量在索引创建的时候指定。在索引创建之后,你可以在任何时候动态改变副本的数量但是不能改变分片的数量。
默认情况下,ELasticSearch中的每个索引被分片5个主分片和1个副本。同时,这也意味着,如果你的集群当中至少有2个节点,你的索引将会有5个主分片和5个副本分片。其中,一个完全是完全拷贝,这样的话每个索引总共有10个分片
二:Logstash介绍
Logstash基于消息(message-based)的简单架构。运行在Java虚拟机(JVM),它不同于分离的代理端(agent)或者主机端(server),logstash可配置单一的代理端(agent)与其他开源软件结合
功能:Collect 数据输入。 Enrich 数据加工。如过滤,改写等 。 Transport:数据输出
主要组件:shipper:日志收集者,负责接收日志并且写入到本地文件
Broker:日志Hub,负责连接多个shipper和多个indexer
search and storage:允许对事件进行搜索和存储
web interface: 基于web的展示界面
以上组件让log双塔山架构可以独立部署,并且具有良好的集群扩展性
主机分类:代理主机(agent host)事件的传递者(shipper)将各种日志数据发送到中心主机上,只需要运行logstash代理(agent)程序
中心主机(central host):可运行包括中间转发器(Broker)、索引器(Indexer)、所索引和存储器(search and storage) web界面端(web interface)在内的各个组件,实现对日志数据的接受,处理和存储
三:kibana介绍
kibana是针对elasticsearch的开源分析的可视化平台,用来搜索,查看交互存储在elasticsearch索引中的数据。使用kibana可以通过各种图标进行高级数据分析和展示。
kibana让海量的数据变得清晰可见。操作简单,并且基于浏览器的用户界面和快速创建仪表盘(dashboard)。实时显示elasticsearch查询动态。
可以将任何机构化和非结构化的数据加入elasticsearch索引。kibana还充分利用了elasticsearch强大的搜索和分析功能。
功能:A 整合数据,可以将复杂的数据转化成各种图表。如柱形图,折线图,散点图等等
B 复杂的数据分析。提升了elasticsearch的分析功能,能够只能的分析数据,执行数据并且根据要求对数据切割分块
C 配置简单 ,自带web服务器,可以快速启动并且运行
D 可视化多数据源,
E 简单的数据导出