> 技术文档 > 企业级日志分析系统ELK

企业级日志分析系统ELK


1.什么是 Elastic Stack

如果系统和应用出现异常和问题,相关的开发和运维人员想要排查原因,就要先登录到应用运行所相应的主机,找到上面的相关日志文件再进行查找和分析,所以非常不方便,此外还会涉及到权限和安全问题,而ELK的出现就很好的解决这一问题。ELK 是由一家 Elastic 公司开发的三个开源项目的首字母缩写,即是三个相关的项目组成的系统。

2.Elasticsearch 索引是什么?

Elasticsearch 索引指相互关联的文档集合。Elasticsearch 会以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数值组、地理位置或其他类型的数据)之间建立联系。
Elasticsearch 使用的是一种名为倒排索引的数据结构,这一结构的设计可以允许十分快速地进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。
在索引过程中,Elasticsearch 会存储文档并构建倒排索引,这样用户便可以近实时地对文档数据进行搜索。索引过程是在索引 API 中启动的,通过此 API 您既可向特定索引中添加 JSON 文档,也可更改特定索引中的 JSON 文档。

3.Logstash 的用途是什么?

Logstash 是 Elastic Stack 的核心产品之一,可用来对数据进行聚合和处理,并将数据发送到 Elasticsearch。Logstash 是一个开源的服务器端数据处理管道,允许您在将数据索引到Elasticsearch 之前同时从多个来源采集数据,并对数据进行充实和转换。

4.Kinbana的用途是什么?

是适用于 Elasticsearch 的数据可视化和管理工具,可提供实时直方图、线形图、饼状图和地图 ;包含 Canvas(允许用户基于自身数据创建定制动态信息图表 )、Elastic Maps(对地理空间数据可视化 )等高级应用程序 。

总结如下:

①Elasticsearch 是一个实时的全文搜索,存储库和分析引擎。 ②Logstash 是数据处理的管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如Elasticsearch 等存储库中。 ③Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

5.Elasticsearch集群安装

cluster.name: my-applicationnode.name: node-1 #不唯一。在其他主机上需要更改不一样的名字 其他的都不变path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchnetwork.host: 0.0.0.0discovery.seed_hosts: [\"10.0.0.101\", \"10.0.0.102\", \"10.0.0.103\"]cluster.initial_master_nodes: [\"10.0.0.101\", \"10.0.0.102\", \"10.0.0.103\"]xpack.security.enabled: falsexpack.security.enrollment.enabled: truexpack.security.http.ssl: enabled: true keystore.path: certs/http.p12xpack.security.transport.ssl: enabled: true verification_mode: certificate keystore.path: certs/transport.p12 truststore.path: certs/transport.p12http.host: 0.0.0.0

curl \'http://127.0.0.1:9200/_cat/health\'          #查看es集群状态

创建索引curl -XPUT \'127.0.0.1:9200/index1\'   #简单输出
curl -XPUT \'127.0.0.1:9200/index2?pretty\'   #格式化输出查看索引curl \'http://127.0.0.1:9200/_cat/indices?v\'    #查看所有索引创建3个分片和2个副本的索引

curl -XPUT \'127.0.0.1:9200/index3\' \\-H \'Content-Type: application/json\' \\-d \'{ \"settings\": { \"index\": { \"number_of_shards\": 3, \"number_of_replicas\": 2 } }}\'

调整副本数为1,但不能调整分片数

curl -XPUT \'127.0.0.1:9200/index2/_settings\' \\-H \'Content-Type: application/json\' \\-d \'{ \"settings\": { \"number_of_replicas\": 1 }}\'

6.Elasticsearch 插件

ES集群状态: green 绿色状态:表示集群各节点运行正常,而且没有丢失任何数据,各主分片和副本分片都运行正 常。yellow 黄色状态:表示由于某个节点宕机或者其他情况引起的,node节点无法连接、所有主分片都 正常分配,有副本分片丢失,但是还没有丢失任何数据。red 红色状态:表示由于某个节点宕机或者其他情况引起的主分片丢失及数据丢失,但仍可读取数据 和存储 监控下面两个条件都满足才是正常的状态。集群状态为 green 所有节点都启动。Cerebro 插件Cerebro 是开源的 elasticsearch 集群 Web 管理程序,此工具应用也很广泛,此项目升级比 Head 频繁。Cerebro v0.9.4 版本更高版本需要 Java11。相关下载链接:wget https://githubfast.com/lmenezes/cerebro/releases/download/v0.9.4/cerebro_0.9.4_all.deb