ELK日志收集

ELK的组成:

(1)Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。

(2)Logstash 是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用

(3)Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志

ELK的工作流程:

Logstash 收集 AppServer 产生的 Log,并存放到 ElasticSearch 群集中,而 Kibana 则从 ES 群集中查询数据生成图表,再返回给 Browser。简单来说,进行日志处理分析,一般需要经过以下几个步骤:

1.将日志进行集中化管理

2.将日志格式化(Logstash)并且输出到Elasticsearch

3.对格式化后的数据进行索引和存储

4.web页面的展示

Elasticsearch 核心概念

接近实时 :Elasticsearch 是一个接近实时的搜索平台

集群:一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。

节点:一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能

索引:一个索引就是一个拥有几分相似特征的文档的集合。在一个集群中,可以定义任意多的索引

类型:在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。

文档:一个文档是一个可被索引的基础信息单元分片和复制:一个索引可以存储超出单个结点硬件限制的大量数据。

分片的作用:允许你水平分割/扩展你的内容容量

允许你在分片(潜在地,位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量。

ELK组成讲解

Logstash:

Logstash 由 JRuby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能,常用于日志处理。

Kibana:

Kibana 是一个设计使用和 Elasticsearch 配置工作的开源分析和可视化平台。可以用它进行搜索、查看、集成Elasticsearch 中的数据索引。可以利用各种图表、报表、地图组件轻松的对数据仅进行可视化分析

主要的功能:

Elasticsearch无缝集成
整合数据
复杂数据分析
让更多的团队成员收益
接口灵活
配置简单
可视化多数据源
简单数据导出

ELK环境搭建

主机

OS

IP

配置

插件

node11

centos7

192.168.11.11

2G内存

ES+kibana

node12

centos7

192.168.11.12

2G内存

ES

node13

centos7

192.168.11.13

2G内存

ES+logstash

#关闭防火墙
#安装jdk
rpm -ivh jdk-8u171-linux-x64.rpm

java -version #检测jdk环境

cat >> /etc/profile.d/jdk.sh <<‘EOF’

export JAVA_HOME=/usr/java/default

EOF

. /etc/profile.d/jdk.sh
#安装ES
@11 @12 @13 进行安装三节点的ES集群

rpm -ivh elasticsearch-7.2.0-x86_64.rpm

rpm -qc elasticsearch

systemctl daemon-reload

systemctl enable elasticsearch
配置文件说明:

vim /etc/elasticsearch/elasticsearch.yml

17行 cluster.name: my-es-cluster #集群名称

23行 node.name: node11 #节点名称,各个节点对应解析名称

33行 path.data: /var/lib/elasticsearch #数据存放的路径

37行 path.logs: /var/log/elasticsearch

43行 bootstrap.memory_lock: false 在启动时不锁定内存

55行 network.host: 0.0.0.0

68行 discovery.seed_hosts: [“192.168.11.13″,”192.168.11.12”]

#启动本节点之后,通过单播发现其他节点,各个节点相应修改

72行 cluster.initial_master_nodes: [“node11”, “node12”]

#使用主节点的初始集合引导集群

80行 gateway.recover_after_nodes: 2

#重启之后几个节点成功认为集群启动成功启动

启动服务

systemctl start elasticsearch

systemctl status -l elasticsearch

验证器群状态

curl http://192.168.11.11:9200 #查看节点信息

curl http://192.168.11.11:9200/_cluster/health?pretty #查看集群健康状态

curl http://192.168.11.11:9200/_cluster/state?pretty #查看集群状态

#安装Kibana
在@node11安装

rpm -ivh kibana-7.2.0-x86_64.rpm
#包自行去网上下载

vim /etc/kibana/kibana.yml

2行 server.port: 5601

7行 server.host: “0.0.0.0”

28行 elasticsearch.hosts: [“http://192.168.11.11:9200”]

113行 i18n.locale: “zh-CN”

systemctl start kibana

systemctl enable kibana

ss -tnl

访问: http://192.168.11.11:5601
#logstash
node13安装

rpm -ivh logstash-7.2.0.rpm

rpm -qc logstash

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

systemctl enable logstash

收集系统日志 /var/log/messages 将其输出到 elasticsearch 中

vim /etc/logstash/conf.d/system.conf

input {
file{ #t下

path =>”/var/log/messages” #{下

type =>”system” #p下

start_position =>”beginning” #s下

}

}

output {

elasticsearch { #p下
hosts => [“192.168.11.12:9200”] #t下

index =>”system-%{+YYYY.MM.dd}” #h下

}

}

chmod o+r /var/log/messages #修改权限
systemctl start logstash

curl http://192.168.11.11:9200/_cat/indices?v

#查看 ES 当中的索引信息

在 kibana 中添加 ES 中的索引

RK9YU0EI2C@FL81EJGJ-1536x742.png时间筛选:选择@timestamp然后创建

BEDXTFTWLH3HVAOCJ2G.png