跳到主要内容
JackSparrow414
返回

ELK环境搭建+入门使用

本文导航

展开本文导航

ELK环境搭建+入门使用

前言

使用的数据格式定义

一篇文章的基本数据结构如下

{
  "title": "文章标题-字符串类型",
  "author": "作者名字-字符串类型",
  "article_content": "文章实际内容-字符串类型",
  "article_genre": "文章体裁-字符串类型,可以有多个值,也就是说这个字段对应的是数组",
  "chines": "文章是否为中文-布尔类型",
  "reading_count": "文章被阅读数-数值类型",
  "created": "文章创建时间-日期类型",
  "updated": "文章更新时间-日期类型"
}

安装、启动

Windows版本安装方式可在官网上找到安装方式,这里给一个ES Windows安装方式,其他两个参考官方文档即可

brew tap elastic/tap

brew install elastic/tap/elasticsearch-full

brew install elastic/tap/kibana-full

brew install elastic/tap/logstash-full

启动ES

默认使用9200端口

brew service start elasticsearch

稍等一会

出现类似下面格式的信息则代表启动成功

{
  "name" : "duhongbodeMacBook-Pro.local",
  "cluster_name" : "elasticsearch_jacksparrow414",
  "cluster_uuid" : "rp73VaY8RRCgQrl4M5uR9A",
  "version" : {
    "number" : "7.7.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "ad56dce891c901a492bb1ee393f12dfff473a423",
    "build_date" : "2020-05-28T16:30:01.040088Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

启动Kibana

启动之前需要配置下kibana.yml文件,打开端口和host,路径在/usr/local/etc/kibana kibana.yml 中启用 server.port 与 server.host 的配置

brew service start kibana

在浏览器输入localhost:5601即可访问

启动Logstash

配置first-pipeline.conf

input {
  2     stdin {

        }
  5 }
  6
  7 output {
  8     elasticsearch {
  9         hosts => [ "localhost:9200" ]
 10         user => "elastic"
 11         password => "password"
 12     }
 13 }

前台启动Logstash

进入logstash配置目录

cd /usr/local/etc/logstash

不知道logstash配置目录在哪?查看Logstash directory layout

指定配置文件first-pipeline执行

logstash -f first-pipeline.conf --config.reload.automatic

若要在前台关闭logstash则使用CTRL-D

在Logstash中安装插件

如果需要安装插件,参看官方文档和logstash插件名字列表

配置基本权限

如果没有配置权限,登录到Kibana上提示要配置权限

官方文档

对于开发时的权限配置,配置最小的权限即可.

配置ES用户名密码

配置用户名密码的文档 elasticsearch-setup-passwords 命令为内置用户设置密码

这里全部密码设置成password

配置Kibana权限

将kibana.yml下的elasticsearch相关的username注释放开

后续步骤见官方文档

配置好权限之后登录

访问kibana.localhost:5601,使用用户名elastic,密码password进行登陆

登录Kibana

登录进去之后,进入Dev Tools,对ES的rest操作,使用这个可视化的面板,体验比较好,还自动提示 Kibana 导航菜单中的 Management 与 Dev Tools 入口

ES创建数据

创建index

如果有Solr的使用经验,可以简单理解为Elasticsearch中的Index相当于Solr中的core,相当于具有类似数据结构的数据的集合。(为什么说类似而不是一致呢?因为index下可以根据type动态的来调整数据结构,入门这里不做深入说明)

注意:虽然也可以不用创建index,再写数据时,ES如果发现没有index,会动态的进行创建,但这里还是采用先创建index,再写数据的方式

既然是数据的集合,首先要定义Index和其中数据结构,在Kibana中的Managent->Dev Tools中

PUT /my-articles
{
  "mappings": {
    "properties": {
       "title": {
          "type": "text"
       },
        "author": {
          "type": "text"
       },
        "article_content": {
          "type": "text"
       },
        "article_genre": {
          "type": "text"
       },
        "chinese": {
          "type": "boolean"
       },
        "reading_count": {
          "type": "integer"
       },
        "created": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
       },
        "updated": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
       }
    }
  },
  "settings": {
    "index": {
       "number_of_shards": 1,
       "number_of_replicas": 1
    }
  },
  "aliases": {

  }
}
  1. 创建index,使用PUT方法,后面跟具体的index名字,注意index名字必须全部小写,index命名详细规则

  2. Request body中结构为mappings-定义具体数据的数据结构、setttings-index的分片数,复制数、aliases-目前我还没研究有什么用,不涉及到具体场景的先不研究

  3. mappings的下一级是properties,properties里就是具体数据的字段,以及字段对应的类型,格式为

    "字段名": {
        "type": "具体字段对应的类型"
    }

    上面的mappings中,按照最上面定义的数据格式声明字段,有字符串类型的text,布尔类型的boolean,日期类型的date,数值类型的integer。更多数据类型见官方Field文档

查看创建的index

刚刚创建好,那么第一个想法是查一下刚才完整的index的结构

GET /my-articles

Kibana Dev Tools 查询 Elasticsearch 索引及其 mappings

查看创建的mappings

只查看mappings的结构

GET /my-articles/_mapping

查看某个字段的数据类型

查看author的数据类型

GET /my-articles/_mapping/field/author

Kibana Dev Tools 返回 Elasticsearch 索引的字段映射

创建数据

定义好数据结构之后,便可以添加数据.ES添加数据文档

POST /my-articles/_doc
{
  "title": "青玉案·元夕",
  "author": "辛弃疾",
  "article_content":"东风夜放花千树,更吹落、星如雨。宝马雕车香满路。凤箫声动,玉壶光转,一夜鱼龙舞。蛾儿雪柳黄金缕,笑语盈盈暗香去。众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。",
  "article_genre": ["古词","记叙文"],
  "reading_count": 25,
  "chinese": true,
  "created": "2021-06-03 19:27:56",
  "updated": "2021-06-03 19:27:56"
}

有两种方式,一种是创建时指定ID,一种就是不指定ID,由ES生成,这里采用第二种方式.

在Kibana中展示数据

在Kibana中展示数据,直接点击Discovery即可。但在点之前,需要创建indexpatterns

创建IndexPatterns

Management->Stack Management->Kibana->Index Patterns Kibana Stack Management 的 Index Patterns 页面与创建按钮

点击Created index pattern ,选择刚刚创建的index名字,点击Next step,在time field那里可以选择created,然后点击Create index pattern Kibana 创建 Index Pattern 时选择时间字段并确认创建

查看数据

选择具体的index patterns,点击刷新,如果没有数据,调整到有数据的区间即可 Kibana Discover 选择索引模式、时间区间并刷新数据

默认只有Time和Document Kibana Discover 默认以 Time 和 Document 两列展示记录

可以将经常查看的field点击+添加到列中 Kibana Discover 将指定字段添加为表格列后的结果

写在最后

本篇只做最简单的入门说明,可以看到,我思路是

而且由于入门这个场景还用不到Logstash,所以只是保证安装、启动没问题即可,后续博文用到Logstash时会进行更详细的说明

思维导图

ELK 入门思维导图:安装、调用 API、模板映射与文档操作 下一篇文章会着重在Elasticsearch的查询语法上


分享本文:

继续阅读本系列

Elasticsearch 与 ELK 实战

  1. ELK环境搭建+入门使用正在阅读
  2. Elasticsearch查询
  3. Elasticsearch 常用操作、对接Logstash以及处理本地IP、ECS规范(干货满满)
  4. ELK生成PEM格式的ca证书、设置Https并使用Elasticsearch Java Client连接
  5. ElasticSearch Java API的使用
  6. 使用Filebeat和AWS CloudWatch Logs将EC2上的Tomcat的access_log传送到ELK
  7. 使用Filebeat和AWS CloudWatch Logs将EC2上的Tomcat的access_log传送到Elasticsearch中并使用ILM完成日志的自动管理
  8. 跟着官方文档一步一步搭建Elastic Stack(3节点ES集群+Kibana+Filebeat+Metricbeat)+ 零停机由单节点切换到集群解决方案
  9. 在业务开发中使用ElasticSearch的指导手册+附真实业务优化ElasticSearch场景
  10. 脚本自动化创建AWS EC2实例+安装ElasticSearch和Kibana+集成OpenTelemetry监控
  11. 使用Elasticsearch代替数据库like以加快查询的各种技术方案+实现细节

评论

欢迎提问、纠错和分享经验。发表评论需要登录 GitHub;中英文版本共享评论。

评论仅在正式网站开放。