elasticsearch介绍、API介绍、logstash部署

175 阅读4分钟

ELK介绍

image.png

  • logstash 日志采集、处理、发送给elasticsearch
  • elasticsearch 存储数据 提供检索
  • kibana 读取ES数据 可视化展示

www.elastic.co/guide/en/el…

elasticsearch

Elasticsearch简介:

  • Elasticsearch使用Java语言开发,是建立在全文搜索引擎Apache Lucene基础之上的搜索引擎,lucene.apache.org。
  • 是一个高度可扩展的开源全文搜索和分析引擎,可实现数据的近实时(Near Real Time、NRT)全文检索。
  • 支持分布式以实现集群高可用。
  • 高性能、可以处理大规模业务数据。
  • 数据以json文档格式存储,基于API接口进行数据读写。
  • 对数据实现跨主机分片、分片复制以实现数据跨主机的高可用。

Elasticsearch组成:

  • Node: 存储业务数据的主机,node节点有多种不同的类型。 最少3个节点

  • Cluster: 多个主机组成的高可用Elasticsearch集群环境

  • Document:文档、简称doc,存储在Elasticsearch的数据

  • Index 索引

    • 一类相同类型的数据(doc),在逻辑上通过同一个index进行查询、修改与删除等操作。
    • A项目的系统日志 和 A项目的业务日志 要分多个Index
    • Index1 存放系统日志 Index2 存放业务日志
  • Shard 分片

    • 是对Index的逻辑拆分存储,
    • 分片可以是一个也可以是多个,多个分片合并起来就是Index的所有数据。
    • 分片分散到多个机器 会提升查询效率
  • Replica 副本

    • 一个分片的跨主机完整备份,分为主分片和副本分片,
    • 数据写入主分片时立即同步到副本分片,以实现数据高可用及主分片宕机的故障转移,
    • 副本分片可以读、不能写, 多副本分片可以提高ES集群的读性能
    • 只有在主分片宕机以后才会给提升为主分片继续写入数据,并为其添加新的副本分片。
    • 分片的数量不要超过主机的总数 否则可能存在性能不足

Elasticsearch分片

image.png

Elasticsearch分片及副本

image.png

elasticsearch后台 image.png

ElasticSearch集群组件及工作机制

image.png Elasticsearch主要节点类型:

data node:数据节点

  • 负责数据的存储,如分片(Shard)的创建及删除、 数据的读写、数据的更新、数据的删除等操作。
  • 所有节点要求存活

master node:主节点

  • 负责index的创建、删除,分片的分配,
  • node节点的添加、删除
  • node节点宕机时进行将状态通告至其它可用node节点,
  • 一个ES集群只有一个活跃的master node节点, 其它master备用节点 等master宕机后进行新的master的竞选。

client node/coordinating-node:客户端节点或协调节点

  • 将数据读写请求 转发data node
  • 将集群管理相关的请求 转发到 master node
  • 客户端节点只作为集群的访问入口、其不存储任何数据,也不参与master角色的选举。

Ingest节点:预处理节点

在检索数据之前可以先对数据做预处理 操作(Ingest pipelines,数据提取管道),可以在管道对数据实现对 数据的字段删除、文本提取等操作。

  • 所有节点其实默认都是支持 Ingest 操作的,也可以专门将某个 节点配置为 Ingest 节点

elasticsearch 角色配置

www.elastic.co/guide/en/el…

配置示例

node.master: [master data]

image.png

image.png

elasticsearch API介绍

image.png

kibana

Kibana为elasticsearch提供一个查看数据的web界面,其主要是通过elasticsearch的API接口进行数据查找,并进行前端数据可视化的展现,另外还可以针对特定格式的数据生成相应的表格、柱状图、饼图等。

Logstash

www.elastic.co/guide/en/lo…

Logstash是一个具有实时传输能力的数据收集与处理组件,其可以通过插件实现各场景的日志收集、日志过滤、日志处理及日志输出,支持普通log、json格式等格式的日志解析,处理完成后把日志发送给elasticsearch cluster进行存储

image.png

安装


wget https://artifacts.elastic.co/downloads/logstash/logstash-8.10.4-amd64.deb

apt-get install ./logstash-8.10.4-amd64.deb

ls /usr/share/logstash/bin/logstash

账号是superuser 密码是rootroot

vim /etc/logstash/conf.d/syslog-to-es.conf

input {
  file {
    path => "/var/log/syslog"
    stat_interval => "1"
    start_position => "beginning"
    type => "syslog"
  }

  file {
    path => "/var/log/auth.log"
    stat_interval => "1"
    start_position => "beginning"
    type => "authlog"
  }
}


output {
  if [type] == "syslog" {
    elasticsearch {
      hosts => ["172.31.7.101:9200"]
      index => "magedu-app1-syslog-%{+yyyy.MM.dd}"
      user => "superuser"
      password => "rootroot"
  }}

  if [type] == "authlog" {
    elasticsearch {
      hosts => ["172.31.7.101:9200"]
      index => "magedu-app1-authlog-%{+yyyy.MM.dd}"
      user => "superuser"
      password => "rootroot"
  }}

}

sudo /usr/share/logstash/bin/logstash -f  /etc/logstash/conf.d/syslog-to-es.conf -t

image.png

systemctl start logstash
systemctl enable logstash
systemctl status logstash

image.png

solr

solr项目也是基于开源搜索引擎Lucene、发布时间比elasticsearch更早,solr提供支持全文索引、分片、副本集、负载均衡和自动故障转移和恢复功能,与elasticsearch的区别在于Solr专注于文本搜索、而Elasticsearch则常用于查询、过滤和分组分析统计,目前有很多业务场景也在使用solr。

image.png

ElasticStack及小、中及大型规模下的日志采集、存储、展示及搜索平台的架构体系;

image.png

image.png

image.png

安装

www.elastic.co/guide/en/el…

www.elastic.co/guide/en/el…