视频地址
一: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)四个技术具体解释
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
参考: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
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
1)在 Kibana 中,也可以进行自定义图表,如制作柱形图。
1)简介:
-1:官网:https://www.elastic.co/cn/logstash/
2)用途:输入 -> 处理 -> 输出
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 提供众多输出选择,您可以将数据,发送到您指定的地方,并且能够灵活的解锁众多下游用例。
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 控制台 数据:
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:



