Windows10使用ELK入门学习

什么是ELK?

ELK实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。
1、Elasticsearch:
ElasticSearch是一个基于Lucene的开源分布式搜索服务器。只搜索和分析日志

特点:分布式,零配置,自动发现,索引自动分片,索引副本机制等。它提供了一个分布式多用户能力的全文搜索引擎。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
在elasticsearch中,所有节点的数据是均等的。

Elasticsearch大版本区别:
5.x 支持多种type
6.x 只能有一种type
7.x 将去除type 没有类型的概念了

2、Logstash:
Logstash是一个完全开源工具,可以对你的日志进行收集、过滤、分析,并将其存储供以后使用只收集和过滤日志,和改格式。

Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs。

logstash整个工作流分为三个阶段:输入、过滤、输出。每个阶段都有强大的插件提供支持。

Input 必须,负责产生事件(Inputs generate events),常用的插件有:

  • file 从文件系统收集数据
  • syslog 从syslog日志收集数据
  • redis 从redis收集日志
  • beats 从beats family收集日志(如:Filebeats)

Filter常用的插件有, 可选,负责数据处理与转换(filters modify )

  • grok是logstash中最常用的日志解释和结构化插件。grok是一种采用组合多个预定义的正则表达式,用来匹配分割文本并映射到关键字的工具
  • mutate 支持事件的变换,例如重命名、移除、替换、修改等
  • drop 完全丢弃事件
  • clone 克隆事件

output 输出,必须,负责数据输出(outputs ship elsewhere),常用的插件有
elasticsearch 把数据输出到elasticsearch
file 把数据输出到普通的文件

3、Kibana:
Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮你汇总、分析和搜索重要数据日志。

Elasticsearch 官方文档

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

Elasticsearch+Logstash+Kibana下载

中文社区下载地址:https://elasticsearch.cn/download/
github上下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
github上下载ik中文分词器地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
中文社区Elasticsearch目前下载提供的版本:
在这里插入图片描述
中文社区Logstash目前下载提供的版本:
在这里插入图片描述

中文社区Kibana目前下载提供的版本:
在这里插入图片描述
github提供的下载要比中文社区多几个小版本:
在这里插入图片描述

上面图片框起来的都是windows版本,Linux或者Mac有需要可以自行下载对应版本。这里需要注意的是Elasticsearch+Logstash+Kibana三者下载的版本必须保持一致,如果你Elasticsearch下载的是7.10.2版本,Logstash和Kibana也应该下载7.10.2版本。
我这里就先下载中文社区提供的7.10.2版本来进行学习。
在这里插入图片描述
在这里插入图片描述
下载完成后,先将这四个文件解压到当前目录。
在这里插入图片描述
然后先去elasticsearch-7.10.2文件夹里面
在这里插入图片描述
在plugins文件夹里面创建一个analysis-ik文件夹放elasticsearch-analysis-ik-7.10.2解压后的文件,也就是中文分词器。
在这里插入图片描述
在这里插入图片描述

Elasticsearch+Logstash+Kibana使用

为了方便我们的访问和连接 Elasticsearch,也需要进入 Kibana的 config 目录对 Kibana 进行配置。
我们先去kibana-7.10.2-windows-x86_64文件夹里面的config文件夹下面修改一下kibana.yml的配置
在这里插入图片描述
配置只需要改这三个就好,原来打开是注释的。
在这里插入图片描述

因为我们是在win10里面安装的,所以我们直接双击elasticsearch.bat启动即可。当然前提是你电脑配置好了jdk,我这里的jdk版本是1.8。
在这里插入图片描述
看到这说明启动成功了
在这里插入图片描述
然后我们去浏览器输入http://localhost:9200/可以看到对应的版本信息
在这里插入图片描述
然后我们在去kibana-7.10.2-windows-x86_64文件夹里面的bin文件夹,双击kibana.bat启动kibana。
在这里插入图片描述
看到这说明启动成功
在这里插入图片描述
然后我们去浏览器访问该地址http://localhost:5601/进入kibana界面
点击Dev tools来对es进行操作。
在这里插入图片描述
在这里插入图片描述

ES 的基本概念

_index

  • 含义:此文档属于哪个索引
  • 原则:类似数据放在一个索引中。数据库中表的定义规则。如图书信息放在book索引中,员工信息放在employee索引中。各个索引存储和搜索时互不影响。
  • 定义规则:英文小写。尽量不要使用特殊字符。

_type

  • 含义:类别。
  • 注意:es7.x之后的版本将彻底删除此字段。不需要关注。见到_type都为doc。

_id

  • 含义:文档的唯一标识。就像表的id主键。结合索引可以标识和定义一个文档。

_document

  • 含义:类似数据库里面的数据行。比如说数据库id为1的整条数据可以理解为就是document,或者可以说当前数据库某个单表的所有数据。

ES 使用kibana创建索引,常见的增删改查

使用put enjoy_test创建一个index为enjoy_test的索引

在这里插入图片描述

查看索引,使用命令get enjoy_test

在这里插入图片描述

添加文档,添加了一个id为1的文档,这是手动添加文档id,文档内容是msg

PUT /enjoy_test/_doc/1
{
“msg”:“Hello World!”
}
在这里插入图片描述
自动添加文档id,使用post命令,id是一个不会重复的随机数。使用 GUID 算法,可以保证在分布式环境下,不同节点同一时间创建的_id一定是不冲突的,文档内容是message
POST /enjoy_test/_doc
{
“message”:“Hello World!”
}
在这里插入图片描述

查看文档,get /enjoy_test/_doc/1

在这里插入图片描述

更新

覆盖式更新,原本id为1的msg内容变为下面这个
PUT /enjoy_test/_doc/1
{
“name”:“zs”,
“title”:“张三”,
“age”:18,
“created”:“2020-01-01”
}
在这里插入图片描述
在这里插入图片描述
修改文档里面的某些字段
POST /enjoy_test/_doc/1/_update
{
“doc”:{
“age”:20
}
}
在这里插入图片描述
将原来的age=18修改为20,如果修改的字段不存在,会自动新增该字段
在这里插入图片描述

删除

删除enjoy_test里面的id为k34sIHgBtDEzwRaUC6d4的数据
DELETE /enjoy_test/_doc/k34sIHgBtDEzwRaUC6d4
在这里插入图片描述
在这里插入图片描述
发现已经删除了,只有一条记录了。
在这里插入图片描述

测试ik中文分词器

ik_smart分析器,粗颗粒分词
在这里插入图片描述
ik_max_word 分析 细颗粒分词,穷尽所有组合。
在这里插入图片描述
注意:
  ik_max_word: 会将文本做最细粒度的拆分,比如会将“我是一个程序员”拆分为“我,是,一个,一,个,程序员,程序,员”,会穷尽各种可能的组合;
  ik_smart: 会做最粗粒度的拆分,比如会将“我是一个程序员”拆分为“我,是,一个,程序员”;
  ik_max_word更多的用在做索引的时候,但是在搜索的时候,对于用户所输入的query(查询)词,我们可能更希望得比较准确的结果,例如,我们搜索“花果山”的时候,更希望是作为一个词进行查询,而不是切分为"花",“果”,“山”三个词进行结果的搜索,因此ik_smart更加常用语对于输入词的分析。

ES使用Kibana简单的增删改查例子

#### 例子来简单介绍一下ES的增删改查 ####
# 新建一个test索引,里面有四个字段
PUT /test
{
  "mappings": {
    "properties": {
      "title":{
      	"type": "text",
      	"analyzer": "ik_max_word",
      	"search_analyzer": "ik_smart"
      },
      "name":{
      	"type": "text",
      	"analyzer": "ik_max_word",
      	"search_analyzer": "ik_smart"
      },
      "age":{"type": "integer"},
      "created":{
        "type": "date",
        "format": "strict_date_optional_time||epoch_millis"
      }
    }
  },
  "settings": {
    "index":{
      "number_of_shards":1,
      "number_of_replicas":0
    }
  }
}

#### 查询 ####
# 查看test的settting
GET /test/_settings
# 查看test的mapping
GET /test/_mapping
# 查询test里面主键为1的内容
GET /test/_doc/1
# 查询test里面主键为1的age字段的内容
GET /test/_doc/1?_source=age
# 查询test里面的所有内容
GET /test/_search
{
  "query": {
    "match_all": {
      
    }
  }
}
# 根据name来查询,不会模糊查询
GET /test/_search
{
  "query": {
    "match": {
      "name": "zs"
    }
  }
}
# 排序查询
GET /test/_doc
{
  "query":{
    "match": {
      "name": "ww"
    }
  },
  "sort":[
    {
      "date":{
        "order":"desc"
      }  
    }
  ]
}
# 附带分页的查询方式
GET /test/_search
{
  "query": {
    "match_all": {
      
    }
  },
  "from": 0,
  "size": 3
}


#### 增加 ####
# 往test里面写数据
PUT /test/_doc/5
{
  "name":"zw",
  "title":"张五",
  "age":28,
  "created":"2020-11-01"
}

#### 修改 ####
# 覆盖式更新
PUT /test/_doc/1
{
  "name":"zs",
  "title":"张三",
  "age":18,
  "created":"2020-01-01"
}
# 修改文档里面的某些字段
POST /test/_doc/1/_update
{
  "doc":{
    "age":20
  }
}

#### 删除 ####
# 删除test里面的主键为FOHEW3ABPeUHy0w_4ugQ的数据
DELETE /test/_doc/FOHEW3ABPeUHy0w_4ugQ


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值