• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

[ElasticSearch]-初识Elastic Stack

武飞扬头像
森格的博
帮助2

[ElasticSearch]-初识Elastic Stack


森格 | 2022年11月

本文是初识Elasticsearch的一些个人总结,介绍了Elastic Stack,如有错误之处,敬请指正。


一、ELK 到 Elastic Stack


学新通

注:上图来源于Elasticsearch中文博客

ELK分别是Elasticsearch、Logstash、Kibana的简称,发展过程中又加入Beats,形成了Elastic Stack开源技术栈。

简单来说,这家族的四大项目功能大致是:

1) Beats:是一款用于采集系统监控数据的代理agent,是在监控服务器上以客户端运行的数据收集器的统称。

2)Logstack:是基于Java的一款用于收集、分析和存储日志的工具。

3)Elasticsearch:处于Elasticsearch的核心位置,对数据快速地进行搜索以及分析。

4)Kibana:是基于node.js,负责数据展示,可以汇总、分析和搜索重要的数据日志。

小结

学新通

二、Elastic Stack


2.1 Beats

被官方称为 Lightweight Data Shipper(轻量级数据传送者),分类如下:

  1. Filebeat 日志文件:主要是针对日志文件来说的。
  2. Metricbeat 度量数据:主要收集CPU、内存、磁盘、服务器软件(such as Nginx and MySQL)等数据。
  3. Packetbeat 网络数据:可以对网络数据进行抓包。
  4. Winlogbeat Windows数据:针对windows系统日志数据。
  5. Heartbeat 健康检测

下面来简单介绍下FilebeatPacketbeat

2.1.1 Filebeat

学新通

1)Filebeat构成

input(输入)harversters(收集器) 构成,一个输入可以对应多个日志文件,同时会为每个文件启动一个收集器。

2)Filebeat 的处理能力

Input 时处理:

  • Include_lines 达到条件读入这些行
  • exclude_lines 达到条件不读
  • exclude_files 文件名符合条件时不读取文件

Output 前处理–Processor:

  • drop_event 满足条件时不输出扔掉
  • drop_fields 扔掉某个字段
  • Decode_json_fields 整条数据中符合json的字段做json解析
  • Include_fields 取某个字段
3)Filebeat 输入配置
  • 使用yml语法
  • input_type:log、stdin
4)Filebeat 输出配置
  • Console(标准输出)
  • Elasticsearch
  • Logstash
  • Kafka
  • Redis
  • File
2.1.2 Packetbeat
1)功能
  • 实时抓取网络包
  • 自动解析应用层协议
    • ICMP
    • DNS
    • HTTP
    • MySQL
    • Redis
  • 等同Wireshark
2)配置
# 指定网卡
packetbeat.interfaces.device:any   # linux系统下可以设置为any,去捕捉所有的网卡

# 表示抓取对应的网络协议的数据包
packetbeat.prtocols

# beat的输出配置
output.console:
    pretty:true 

2.2 Logstash

1)功能

官方给出的定义为

Logstash is an open source, server-side data porcessing pipeline that ingests data from a multitude of sources simultanepously, transforms it, and then sends it to your favorite “stash”.

也就是一款ETL(Extract、Transform、Load)工具。

2)处理流程
  • input:可以从 File、Redis、Beats、Kafka等读取数据。
  • filter:gork、mutate、drop、data。
    • Gork:基于正则表达式提供了丰富可重用的模式,基于此可以将非结构化数据做结构化处理。
    • Data:将字符串类型的时间字段转换为时间戳类型,方便后续数据处理。
    • Mutate:进行增删改查的相关处理。
  • output:可以向stdout、elasticsearch、Redis、Kafka等中输出。
3)Filebeat & Logstash

两者都有日志收集功能,但是相对于Logstash在jvm上跑,Filebeat显得更加轻量级,同时占用的资源更少;虽然如此,但是Logstash具有Filter功能,能够过滤分析日志。
会利用Filebeat进行日志采集,然后发到消息队列、Redis、Kafka后,由Logstash去获取、利用Filter功能过滤分析,之后再存储到Elasticsearch中。

2.3 Kibana

1)CRUD操作

格式: /{index}/_doc/{id}

# 增加 #

POST /account/job/1
{
    "name":"liang",
    "lastname":"sen",
    "job_description":"elasticsearch"
}

# 查询 

GET /account/job/1

# 更新 

POST /account/job/1/_update
{
    "doc":{
        "job_description":"Redis"
    }
}

# 删除 

DELETE /account/job/1
学新通
2)Demo

下面一起创建一个文档,再对其更新,删除,之后再次查询

Kibana语言设置(修改配置文件):

学新通

点击左侧开发工具:
学新通

学新通

学新通

学新通

学新通

学新通

学新通

学新通

学新通

学新通

学新通

2.4 Elasticsearch

1)常用术语
  • Document 文档数据:等同于MySQL库的一条记录
  • Index 索引:等同于MySQL的一个数据
  • Type 索引中的文档数据:等同于MySQL库的
  • Filed 字段,文档的属性:等同于MySQL库的表字段
  • Query DSL 查询语法:等同于MySQL的查询语法
2)Query

两种格式:

  • Query String
GET /account/job/_search?q=liang
  • Query DSL
GET /account/job/_search
{
    "query":{
        "match":{
            "name":"liang"
        }
    }
}

三、总结


本文主要对 Beats、Logstash、Kibana、Elasticsearch做了初步介绍,后续会对Elastic Stack做深入学习,以上内容如有不妥,敬请指正。

最后,在这里附上几个学习路径:

ES官方文档https://www.elastic.co/guide/index.html

ES中文社区https://elasticsearch.cn

ES中文社区日报(部分内容需要梯子):https://elasticsearch.cn/explore/category-18

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhfajic
系列文章
更多 icon
同类精品
更多 icon
继续加载