ELK实践(一):基础入门
简介
ELK 指的是一套解决方案,是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写,Beats 是 ELK 协议栈的新成员。
- E:代表 Elasticsearch,负责日志的存储和检索;
- L:代表 Logstash,负责日志的收集、过滤和格式化;
- K:代表 Kibana,负责日志数据的可视化;
- Beats:是一类轻量级数据采集器;
本来ELK是没有Beats的。
最开始的架构中,由 Logstash 承担数据采集器和过滤功能,并部署在应用服务器。由于 Logstash 对大量日志进行过滤操作,会消耗应用系统?>的部分性能,带来不合理的资源分配问题;另一方面,过滤日志的配置,分布在每台应用服务器,不便于集中式配置管理。
所以就有了Beats。
由于 Beats 的系统性能开销更小,所以应用服务器性能开销可以忽略不计;另一方面,Beats 可以作为数据采集插件形式工作,可以按需启用 >Beats 下不同功能的插件,更灵活,扩展性更强。例如,应用服务器只启用 Filebeat,则只收集日志文件数据,如果某天需要收集系统性能数据>时,再启用 Metricbeat 即可,并不需要太多的修改和配置。
其中,目前 Beats 家族根据功能划分,主要有:
-
Filebeat
Real-time insight into log data.
负责收集文件数据。 -
Packetbeat
Analyze network packet data.
负责收集网络流量数据。 -
Winlogbeat
Analyze Windows event logs.
负责收集 Windows 事件日志数据。 -
Metricbeat
Ship and analyze metrics.
负责收集系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据。 -
Heartbeat
Ping your Infrastructure. -
Auditbeat
Send audit data to Elasticsearch.
如果日志量巨大,可能还会引入Kafka用以均衡网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性;另一方面,这样可以系统解耦,具有更好的灵活性和扩展性。
安装 ElasticSearch
curl查看es集群情况
集群的健康检查:
curl -u elastic:changeme 'http://192.168.43.5:9200/_cluster/health?pretty'
{
"cluster_name" : "master-node",
"status" : "green", # 为green则代表健康没问题,如果是yellow或者red则是集群有问题
"timed_out" : false, # 是否有超时
"number_of_nodes" : 3, # 集群中的节点数量
"number_of_data_nodes" : 2, # 集群中data节点的数量
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
[root@master-node ~]#
Index 索引
一个集群下可以有多个索引,每个索引是一系列相同格式文档的集合(Elasticsearch 6.x 已不支持一个索引下多个Type)。
Shard 分片
每个索引有一个或多个分片,每个分片存储不同的数据。分片可分为主分片( primary shard)和复制分片(replica shard),复制分片是主分片的拷贝。默认每个主分片有一个复制分片(默认一个索引创建后会有5个主分片,即:5主+5复制=10个分片),一个索引的复制分片的数量可以动态地调整,复制分片从不与它的主分片在同一个节点上(防止单点故障)。
复制分片有两个作用:
提高恢复能力:当主分片挂掉时,某个复制分片可以变成主分片;
提高性能:get 和 search 请求既可以由主分片又可以由复制分片处理;
集群健康值
- green:所有主要分片和复制分片都可用
- yellow:所有主要分片可用,但不是所有复制分片都可用
- red:不是所有的主要分片都可用
当集群状态为 red,它仍然正常提供服务,它会在现有存活分片中执行请求,我们需要尽快修复故障分片,防止查询数据的丢失;