栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

黑马程序员— Elasticsearch

黑马程序员— Elasticsearch

视频地址

一:Elastic Stack 简介(1~2)

1.:课程介绍:
   1)Elastic Stack 简介
   2)Elasticsearch 的介绍与安装
   3)Elasticsearch 的快速入门
   4)Elasticsearch 的核心讲解
   5)中文分词
   6)全文搜索
   7)Elasticsearch 集群
   8)Java 客户端讲解

2.:Elastic Stack 简介
   1)名称来源

   2)技术栈组成

   3)Elastic stack 每个组件的作用

   4)四个技术具体解释






二:es—快速入门(3~13)

1.:简介

   1)官网:https://www.elastic.co/guide/en/elastic-stack-get-started/current/index.html

2.:安装
   1)版本说明

   2)安装参考:https://blog.csdn.net/qq_43056248/article/details/123016149
   4)elasticsearch_head 的安装使用:参考同上

3.:基本概念
   1)索引(index)
    -1:索引是 Elasticsearch 对逻辑数据的逻辑存储,所以它可以分为更小的部分。
    -2:可以把索引,看成关系型数据库的表,索引的结构,是为快速有效的全文索引准备的,特别是它不粗处原始值。
    -3:Elasticsearch 可以把索引,存放在一台机器或者分散在多台服务器上。
    -4:每个索引可以有一个或多个分片(shard),每个分片可以有多个副本(replica)。
   2)文档(document)
    -1:存储在 Elasticsearch 中的,主要实体叫文档。用关系型数据库来类比的话,一个文档相当于数据库表中的一行记录。
    -2:Elasticsearch 和 MongoDB 中的文档类似,都可以有不同的结构,但 Elasticsearch 的文档只能够,相同字段必须有相同的类型。
    -3:文档由 多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫 多值字段(multivalued)。
    -4:每个字段的类型,可以是文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档 或者 数组。
   3)映射(mapping)
    -1:所有文档,写进索引之前,都会先进行分析,如何将输入的文本分割为词条、那些词条又会被过滤,这种行为叫做映射。一般由用户自己定义规则。
   4)文档类型
    -1:在 Elasticsearch 中,一个索引对象,可以存储很多不同用途的对象。例如,一个博客应用程序,可以保存文章和评论。
    -2:每个文档,可以有不同的结构。
    -3:不同的文档类型,不能为相同的属性值,设置不同的类型。例如:在同一索引中的所有文档类型中,一个叫 title 的字段,必须具有相同的类型。

4.:RESTful API
   参考:https://blog.csdn.net/qq_43056248/article/details/123048092


三:核心讲解(14~22)

参考:https://blog.csdn.net/qq_43056248/article/details/123048092

四:全文搜索(23~27)

参考:https://blog.csdn.net/qq_43056248/article/details/123048092

五:集群(28~34)

参考:https://blog.csdn.net/qq_43056248/article/details/123048092

六:Java 客户端 & 课程总结(35~38)

参考:https://blog.csdn.net/qq_43056248/article/details/123048092

七:课程介绍 & 安装 Nignx(39~41)


1.:Nginx 日志分析系统:
   1)项目需求:

   2)业务流程 & 说明:

   3)说明:


2.:部署安装 Nginx

tar -zxvf nginx-1.21.0.tar.gz
// 安装依赖环境
yum -y install gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
// 安装 & 启动
./configure
make
make install
cd /usr/local/nginx/sbin/
./nginx
// 通过浏览器访问首页,并查看日志:
http://192.168.124.11:80/
tail -f /usr/local/nginx/logs/access.log





八:Beats 简介 & Filebeat 入门(42~49)

1.:Beats 简介
   1)Elastic Stack 的组成:

   2)官网介绍:https://www.elastic.co/beats/
    -1:Filebeat
    -2:Metricbeat


2.:Filebeat:采集日志文件:介绍


3.:Filebeat:架构:
   1)用于监控、收集服务器日志文件。
   2)架构图、工作流程图。


4.:运行 与 部署:

// 下载:https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.0-linux-x86_64.tar.gz
mkdir /usr/local/beats
tar -zxvf filebeat-7.11.0-linux-x86_64.tar.gz
// 在 filebeat 目录下,创建一个配置文件。itcast.yml
  1 filebeat.inputs:
  2 - type: stdin		启用输入(标准输入)
  3   enabled: true		开启
  4 setup.template.settings:
  5   index.number_of_shards: 3		指定分片数
  6 output.console:	输出(控制台)
  7   pretty: true	输出美化
  8   enable: true	输出启用

// 启动 filebeat
./filebeat -e -c itcast.yml		前台启动
./filebeat -e -c itcast.yml	-d "publish"	
// 字段说明
-e:输出到标准输出,默认是输出到 syslog 和 logs 下
-c:指定配置文件
-d:输出 debug 信息,在控制台可以打印 存储到 es 里的json内容(实际生产中,要去掉)

   1)测试:控制台输入 hello
   2)运行结果如下:


4.:读取文件:
   1)配置 itcast-log.yml:

// 配置 读取文件项 itcast-log.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:		读取文件的路径
    - /usr/local/nginx/logs/access.log
setup.template.settings:
  index.number_of_shards: 3		指定分片数量
output.console:
  pretty: true
  enable: true

// 启动 filebeat
./filebeat -e -c itcast-log.yml

   2)测试:访问 Nginx,使之有日志生成。
   3)观察 filebeat 输出:
    -1:可以看出,以检测到日志文件有更新,立即就会读取到更新的内容,并且输出到控制台打印。

2022-02-24T20:03:24.877+0800    INFO    log/harvester.go:302    Harvester started for file: /usr/local/nginx/logs/access.log
{
  "@timestamp": "2022-02-24T12:03:24.877Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "_doc",
    "version": "7.11.0"
  },
  "agent": {
    "hostname": "localhost",
    "ephemeral_id": "cfbbbe52-b4d3-4a60-9437-7bcf89122640",
    "id": "baa44686-68fa-48d2-9d5e-008844fa770a",
    "name": "localhost",
    "type": "filebeat",
    "version": "7.11.0"
  },
  "log": {
    "offset": 1026,
    "file": {
      "path": "/usr/local/nginx/logs/access.log"
    }
  },
  "message": "192.168.124.5 - - [24/Feb/2022:20:03:22 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36"",
  "input": {
    "type": "log"
  },
  "ecs": {
    "version": "1.6.0"
  },
  "host": {
    "name": "localhost"
  }
}


5.:自定义字段:配置读取文件项:itcast-log.yml

   1)
   2)
   3)

6.:日志 收集输出到 Elasticsearch
   1)修改配置:

   2)再次启动:
   3)访问 Nginx,生成日志:(索引库以天为单位,划分存储)
    -1:查询es的状态、查询新增索引状态 和数据:



7.:Filebeat 工作原理:
    Filebeat 由两个主要组件组成:【 prospector 和 harvester】
   1)harvester:【收割机】
    -1:负责读取单个文件的内容。
    -2:如果文件在读取时,被删除或重命名,Filebeat 将继续跟踪这个文件,继续读取这个文件。
   2)prespector:【勘探者; 探矿者】
    -1:prespector 负责管理 harverster,并找到所有要读取的文件来源。
    -2:如果输入类型为日志,则查找器,将查找路径匹配的所有文件。并为每个文件,启动一个 harvester。
   3)Filebeat 目前支持两种 prospector 类型::
    -1:log(日志文件)
    -2:stdin(标准输入)
   4)Filebeat 如何保持文件的状态:
    -1: Filebeat 保存每个文件的状态,并经常将状态,刷新到磁盘上的注册文件中。(文件状态记录在 data/redistry 文件中。)
    -2:该状态,用于记住 harvester 正在读取文件最后的偏移量,并确保发送所有日志行。
    -3:如果输出(例如:Elasticsearch 或 Logstash)无法访问,Filebeat 会跟踪最后发送的行,并在输出再次可用时,继续读取文件。再次发送数据。(Fliebeat 自动完成)
    -4:在 Filebeat 运行时,每个 prospector 内存中,也会保存的文件状态信息(减少文件保存次数,减少IO的开销)。
当重启 Filebeat 时,将使用注册文件的数据,来重建文件状态。Filebeat 将每个 harverster 在从保存的最后偏移量继续读取。

8.:读取 Nginx 日志文件
   1)修改 Filebeat 配置文件 & 重新启动:


   2)存在问题:
    -1:可以看到:在 message 中,已经获取到了 nginx 的日志,但是,内容并没有经过处理,只是读取到原数据。
    -2:那么,对于我们后期的操作,是不利的,有办法解决吗?

"message": "192.168.124.5 - - [24/Feb/2022:20:03:22 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36"",


9.:Module 的使用
   1)前面:要想实现日志数据的读取,以及处理,都是手动配置的。其实,在 Filebeat 中,有大量的 Module,可以简化我们的配置,直接就可以使用,如下:
   2)查看:(执行:./filebeat modules list)

   3)启用 & 禁用

   4)启用后查看:可以发现,已经被启用

   5)nginx module 配置

    -1:修改 Module 文件:vim modules.d/nginx.yml

  4 - module: nginx
  5   # Access logs
  6   access:
  7     enabled: true
  8     var.paths: [" /usr/local/nginx/logs/access.log*"]
  9    
 10     # Set custom paths for the log files. If left empty,
 11     # Filebeat will choose the paths depending on your OS.
 12     #var.paths:
 13  
 14   # Error logs
 15   error:
 16     enabled: true
 17     var.paths: [" /usr/local/nginx/logs/error.log*"]

    -2:配置 filebeat:(注释部分代码,添加新的 module 配置)

filebeat.inputs:
#- type: log
#  enabled: true
#  paths:
#    - /usr/local/nginx/logs/access.log
#  tags: ["my-nginx"]
setup.template.settings:
  index.number_of_shards: 3
output.elasticsearch:
  hosts: ["192.168.124.11:9200","192.168.124.12:9200","192.168.124.13:9200"]

filebeat.config.modules:
  path: ${path.config}/modules.d
 15 setup.kibana:
 16   host: "192.168.124.11:5601"

   2)安装 仪表盘 到 Kibana 中:停止后启动

./filebeat -c itcast-nginx.yml setup

   3)访问 Kibana,查看日志仪表盘:搜索:Filebeat Nginx Overview


7.:自定义图表

   1)在 Kibana 中,也可以进行自定义图表,如制作柱形图。

8.:开发者工具(Dev Tools)






十一:LogStash 入门(58~60) 1.:Logstash 入门 & 简介

   1)简介:
    -1:官网:https://www.elastic.co/cn/logstash/

   2)用途:输入 -> 处理 -> 输出

2.:Logstassh 部署安装:

   1)检查 JDK 环境,要求 1.8(因为 Logstash 是 java 开发的)

java -version

   2)下载 & 解压安装包:

// 下载:https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0-linux-x86_64.tar.gz
tar -zxvf logstash-7.10.0-linux-x86_64.tar.gz 

   3)第一个基本 Logstash 示例演示:启动很慢,java写的需先启动虚拟机。

./bin/logstash -e 'input { stdin { } } output { stdout {} }'

   4)执行效果如下:输入 hello,输出 json

hello
{
       "message" => "hello",
    "@timestamp" => 2022-02-25T11:04:02.760Z,
          "host" => "localhost",
      "@version" => "1"
}
3.:配置详解:(3 部分)


   1)input:输入:
    -1:采集各种样式、大小和来源的数据。数据往往,以各种各样的形式,或分散或集中的存在于很多系统中。
    -2:Logstash 支持各种输入选择。可以在同一时间,从众多常用来源捕捉事件。
    -3:能够以连续的流式传输方式,轻松的从您的日志、指标、Web应用、数据存储,以及各种 AWS 服务采集数据。

   2)filter:过滤(重要):对数据进行分割、截取等处理:
    -1:实时解析和转换数据。
    -2:数据从源,传输到存储库的过程中。Logstash 过滤器能够解析各个事件,识别已命名的字段,以构建结构。并将它们转换成为通用格式,以便更轻松、跟快速的分析和实现商业价值。

   3)output:输出
    -1:Logstash 提供众多输出选择,您可以将数据,发送到您指定的地方,并且能够灵活的解锁众多下游用例。

4.:读取自定义日志以及解析处理:

   1)说明:
    -1:前面我们通过 Filebeat,读取了 Nginx 的日志,如果是自定义结构的日志,就需要读取处理后,才能使用。
    -2:所以,这个时候就需要使用 Logstash 了。因为 Logstash 有着强大的处理能力,可以应对各种各样的场景。
   2)日志结构:
可以看到,日志中的内容,是使用“|”进行分割的,使用,我们在处理时候,也需要对数据做分割处理。

   3)编写配置文件:vim itcast-pipeline.conf

input {
	file {		读取来源是一个文件
		path => "/itcast/logstash/logs/app.log"		读取这个日志文件
		start_position => "beginning"		从日志文件开头,开始读取
	}
}

filter {	过滤:
	mutate {	
		split => {"message" => "|"}		拿到 message 数据,用 “|”进行分割
	}
}

output {
	stdout { codec => rubydebug }	标准的控制台输出
}

   4)创建对应的日志文件:

mkdir -p /itcast/logstash/logs/app.log

   5)启动:

./bin/logstash -f itcast-pipeline.conf

   6)追加写日志,到文件:(另一个控制台)

echo "20190-02-02 21:21:21|ERROR|读取文件出错|参数:ID= 18" ->> app.log

   7)查看效果:(捕获数据,并对字符串进行了分割)

   8)实战使用:输出到 Elasticsearch:
    -1:修改配置文件:vim itcast-pipeline.conf

input {
	file {
		path => "/itcast/logstash/logs/app.log"
		# type => "system"
		start_position => "beginning"
	}
}

filter {	过滤:
	mutate {	
		split => {"message" => "|"}		拿到 message 数据,用 “|”进行分割
	}
}

output {
	elasticsearch {
		hosts => {"192.168.124.11:9200","192.168.124.12:9200","192.168.124.13:9200"}
	}
}

    -2:启动:Logstash

./bin/logstash -f ./itcast-pipeline.conf

    -3:写入数据:

echo "20190-02-02 21:21:21|ERROR|读取文件出错|参数:ID= 18" ->> app.log

    -4:查看 Elasticseatch 的 Kibana 控制台 数据:





十二:综合练习 & 总结(61~65)

1.:
   1)
   2)
   3)
   4)
   5)
   6)
   7)

2.:
   1)
   2)
   3)
   4)
   5)
   6)
   7)

3.:
   1)
   2)
   3)
   4)
   5)
   6)
   7)

4.:
   1)
   2)
   3)
   4)
   5)
   6)
   7)

5.:
   1)
   2)
   3)
   4)
   5)
   6)
   7)

6.:
   1)
   2)
   3)
   4)
   5)
   6)
   7)

7.:
   1)
   2)
   3)
   4)
   5)
   6)
   7)
    -1:
    -2:
    -3:
    -4:
    -5:
    -6:
    -7:




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号