irpas技术客

黑马程序员—Elasticsearch—ELK_张老师的分享

大大的周 3742

视频地址

一:Elastic Stack 简介(1~2) 1.:Elastic Stack 简介

?? 1)名称来源 ?? 2)技术栈组成 ?? 3)Elastic stack 每个组件的作用 ?? 4)四个技术具体解释

二:es—快速入门(3~13) 三:核心讲解(14~22) 四:全文搜索(23~27) 五:集群(28~34) 六:Java 客户端 & 课程总结(35~38)

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

七:ELK 课程介绍 & 安装 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.:运行 与 部署:

?? 1)下载:https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.0-linux-x86_64.tar.gz ?? 2)解压:

mkdir /usr/local/beats tar -zxvf filebeat-7.11.0-linux-x86_64.tar.gz

?? 3)在 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 -- 输出启用

?? 4)启动 filebeat:

./filebeat -e -c itcast.yml -- 前台启动 ./filebeat -e -c itcast.yml -d "publish"

????-1:-e:输出到标准输出,默认是输出到 syslog 和 logs 下。 ????-2:-c:指定配置文件。 ????-3:-d:可以在 控制台输出打印 debug 信息。 (控制台打印:存储到 es 里的 json内容)(实际生产中,要去掉)。

?? 5)访问测试:控制台输入 hello ?? 6)运行结果如下:

5.:读取 Nginx 日志文件,输出到控制台:

?? 1)配置 itcast-nginx.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

?? 2)启动 filebeat:根据 itcast-nginx.yml:

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

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

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" } } 6.:自定义字段:配置读取文件项:itcast-log.yml filebeat.inputs: - type: log enabled: true paths: -- 读取文件的路径 - /usr/local/nginx/logs/access.log // 添加自定义 tag,便于后续的区分、处理 tags: ["nginx---1----nginx","nginx----2-----nginx"] // 添加 自定义字段 fields: form: fields---1----fields // true:为添加到跟节点中。false:为添加到子节点中。 fields_under_root: true setup.template.settings: index.number_of_shards: 3 -- 指定分片数量 output.console: pretty: true enable: true

?? 1)添加 tags 后效果:

"message": "192.168.124.5 - - [26/Feb/2022:12:31:21 +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\"", "tags": [ "nginx---1----nginx", "nginx----2-----nginx" ],

?? 2)添加 fields 后效果:

-- false { "fields": { "form": "fields---1----fields" } } -- true { "form": "fields---1----fields" } 7.:读取 Nginx 日志,收集输出到 Elasticsearch

?? 1)修改配置: ?? 2)再次启动 filebeat: ?? 3)访问 Nginx,生成日志: ????-1:索引库以天为单位,划分存储: ????-2:查询es的状态、新增索引状态、数据: ?? 4)存在问题: ????-1:可以看到:在 message 中,已经获取到了 nginx 的日志,但是,内容并没有经过处理,只是读取到原数据。 ????-2:那么,对于我们后期的操作,是不利的,有办法解决吗? ????-3:引入 Module:

"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\"", 8.:Filebeat 工作原理:

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

9.:Module 的使用

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

./filebeat modules list

?? 3)启用 & 禁用 Nginx

./filebeat modules enable nginx ./filebeat modules disable nginx

?? 4)启用后查看:可以发现,已经被启用 ?? 5)nginx module 配置 (Nginx.yml 未使用:.disabled 结尾,说明文件已启用) ????-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 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/*.yml reload.enabled: false

?? 6)启动 filebeat:有可能报错,执行提示即可:(安装依赖) ?? 7)访问 nginx,查看记录的日志: ????1、日志格式样式,已发生改变。做了一定的解析。 ????2、其他的 Module 使用方法,参考官方文档。

九:Metricbeat 入门(采集指标数据)(50~52) 1.:Metricbeat 介绍:

?? 1)定义收集,操作系统或应用服务的 指标数据 。 ?? 2)存储到 Elasticsearch 中,进行实时分析。

2.:Metricbeat 组成:Metricbeat 由两部分组成:(Module & Metricset)

?? 1)Module: 收集的对象,如:mysql、redis、nginx、操作系统。 ?? 2)Metricset: 收集指标的集合,如:cpu、memory、network等。 ?? 以 redis Module 为例,查看是如何收集指标数据的?(其他的也类似)

3.:部署与收集系统指标:

?? 1)下载: ????-1:https://www.elastic.co/downloads/beats/metricbeat ????-2:https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.11.0-linux-x86_64.tar.gz ?? 2)解压:

tar -zxvf metricbeat-7.11.0-linux-x86_64.tar.gz

?? 3)查看配置文件,并修改配置:vim metricbeat.yml

13 metricbeat.config.modules: 14 path: ${path.config}/modules.d/*.yml 93 output.elasticsearch: 94 hosts: ["192.168.124.11:9200","192.168.124.12:9200","192.168.124.13:9200"]

?? 4)启动:

./metricbeat -e

4.:启动后:可以看到指标数据已经被写入到 Elasticsearch

5.:Module 的使用:

?? 1)查看 系统级,采集配置文件:(默认开启) ????-1:vim /modules.d/system.yml

6.:Nginx Module 配置

?? 1)查看 / 开启 / 关闭 Nginx module

./metricbeat modules list ./metricbeat modules enable nginx

?? 2)开启 Ngnix module ????-1:在 Nginx 中,需要开启状态查询,才能查询到指标数据: ????-2:重新编译 Nginx

./configure --prefix=/usr/local/nginx --with-http_stub_status_module ./configure --prefix=/usr/local/nginx --with-http_stub_status_module make make install

????-3:查看 Nginx 版本:(大写)

./nginx -V // 应该显示内容如下: nginx version: nginx/1.21.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) configure arguments: --with-http_stub_status_module

????-4:修改 nginx 配置文件:vim conf/nginx.conf

35 server { 36 listen 80; 37 server_name localhost; 38 location /nginx-status { 39 stub_status on; 40 access_log off; 41 }

????-5:重启 Nginx

./sbin/nginx -s stop ./sbin/nginx

?? 3)访问,查询 nginx 状态信息:http://192.168.124.11/nginx-status ?? 4)结果说明: ????-1:Active connections:表示正在处理等活动连接数。 ????-2:server、accepts、handled requests: ????-3:Reading、Writing、Waiting: ?? 5)配置 Nginx Module: ????-1:启用 nginx module

./metricbeat modules enable nginx

????-2:修改 配置文件:module.d/nginx.yml

10 hosts: ["http://192.168.124.11:80"] //和访问 Nginx 控制台配置路径相同 13 server_status_path: "nginx-status"

????-3:启动

./metricbeat -e

?? 6)控制台:

十:Kibana 入门(53~57) Kibana 介绍

?? 1)官网介绍:https://www.elastic.co/cn/kibana/ ?? 2)讲义介绍: ????-1:Kibana:是一款开源的数据分析和可视化平台,它是 Elastic stack 成员之一,设计用于和 Elasticseatch 协作。 ????-2:您可以使用 Kibana,对 Elasticsearch 索引中的数据,进行搜索、查看、交互等操作。 ????-3:也可以很方便的,利用图表、表格以及地图,对数据进行多元化的分析和呈现。

1.:Kibana 配置安装

?? 1)下载,解压安装包https://artifacts.elastic.co/downloads/kibana/kibana-7.11.0-linux-x86_64.tar.gz

tar -zxvf kibana-7.11.0-linux-x86_64.tar.gz

?? 2)修改配置文件:vim config/kibana.yml

// 修改 对外暴露服务的地址 7 server.host: "192.168.124.11" // 配置 Elasticsearch(6.x版本可能为注释内容) // elasticsearch.url: "http://192.168.124.11:9200" 32 elasticsearch.hosts: ["http://192.168.124.11:9200"]

?? 3)启动:(需要切换非 root 用户)

./bin/kibana

?? 4)浏览器进行访问:http://192.168.124.11:5601

2:功能说明:

3.:Discover:数据探索

?? 1)首先添加索引信息: ?? 2)刷新 Discover,会出现数据:

4.:Metricbeat 仪表盘

?? 1)可以将 Metricbeat 的数据,在 Kibana 中,使用仪表盘方式 展示: ?? 2)Metricbeat 中的配置操作: ????-1:修改 metricbeat 配置:vim metricbeat.yml

61 setup.kibana: 67 host: "192.168.124.11:5601"

????-2:安装 仪表盘 到 Kibana:(要确保 Kibana 处于运行状态)(速度慢)

./metricbeat setup --dashboards // 安装成功提示 Loading dashboards (Kibana must be running and reachable) Loaded dashboards

????-3:启动 Metricbeat,使之不断产生数据:

./metricbeat -e 5.1:System 指标仪表盘(Metricbeat)

5.2:Nginx 指标仪表盘(Metricbeat)

6.:Nginx 日志仪表盘(Filebeat)

?? 1)修改配置文件:vim itcast-nginx.yml

1 filebeat.inputs: 2 #- type: log 3 # enabled: true 4 # paths: 5 # - /usr/local/nginx/logs/access.log 6 # tags: ["my-nginx"] 7 setup.template.settings: 8 index.number_of_shards: 3 9 output.elasticsearch: 10 hosts: ["192.168.124.11:9200","192.168.124.12:9200","192.168.124.13:9200"] 11 12 filebeat.config.modules: 13 path: ${path.config}/modules.d/*.yml 14 reload.enabled: false /* 新增:*/ 15 setup.kibana: 16 host: "192.168.124.11:5601"

?? 2)filebeat 安装 仪表盘到 kibana中 (慢)

./filebeat -c itcast-nginx.yml setup // 响应打印: Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable)

?? 3)启动 filebeat:

./filebeat -e -c itcast-nginx.yml

?? 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 部署安装 & demo:

?? 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:并将它们转换成为通用格式,以便更轻松、跟快速的分析和实现商业价值。 ?? 3)output:输出 ????-1:Logstash 提供众多输出选择,您可以将数据,发送到您指定的地方,并且能够灵活的解锁众多下游用例。

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

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

5.:实战使用:输出到 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 控制台 数据:

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

????下面,我们将前面,学习到的 【Elasticsearch + Logstash + Beats + Kibana】整合起来。做一个综合性的练习。 ????目的:就是让学生们,更加深刻的理解 Elastic Stack 的使用。

1.:流程说明:

?? 1)图示: ?? 2)解释:(日志格式、图表、Dashboard 都是自定义的) ????-1:应用 APP 生产日志,用来记录用户的操作: ????-2:通过 Filebeat 读取日志文件中的内容。并且将内容,发送给 Logstash,原因是需要对内容进行处理。 ????-3:Logstash 接收到内容后,进行处理。如分割操作。然后将内容发送到 Elasticsearch 中。 ????-4:Kibana 会读取 Elasticsearch 中的数据。并且在 Kibana 中,进行设计 Dashboard,最后进行展示。

2.:APP 介绍:

?? 1)说明:APP 在生产环境中,应该是真实的系统,然而,我们现在仅是学习,为了简化操作,所以就做数据的模拟生成即可。业务代码如下:

@Data @RestController public class test { private static final Logger logger = LoggerFactory.getLogger(test.class); @RequestMapping(value = "/hhh") public void hello() throws InterruptedException { while (true) { LocalDateTime now = LocalDateTime.now(); String format = now.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME); String result = "开始|" + format + "|日志|" + "|结束"; Thread.sleep(2000); logger.info(result); } } }

?? 2)将 app 打成 jar 包,放置服务器上并启动:

java -jar xxx.jar java -jar xxx.jar & -- 后台打印生成

?? 3)查看生成日志文件:

3.:Filebeat:

?? 1)修改 Filebeat 配置文件:vim itcast-dashboard.yml

1 filebeat.inputs: 2 - type: log 3 enabled: true 4 paths: 5 - /app/testapollo/*.log 6 setup.template.settings: 7 index.number_of_shards: 3 // 日志输出到 Logstash 8 output.logstash: 9 hosts: ["192.168.124.11:5044"]

?? 2)启动 Filebeat:(需要先启动 Logstash 后)

./filebeat -e -c itcast-dashboard.yml 4.:Logstash:

?? 1)编辑 Logstash 配置文件:vim itcast-dashboard.conf

// 简单的版本,控制台打印,测试是否联通 // (logstash 控制台会打印数据) 1 input { 2 beats { 3 port => "5044" 4 } 5 } 6 7 filter { 8 mutate { 9 split => { "message" => "|" } 10 } 11 } 12 13 output { 14 # stdout { 15 # codec => rubydebug 16 # } 17 elasticsearch { 18 hosts => [192.168.124.11:9200] 19 } 20 }

?? 2)启动 es、Logstash、filebeat:

./bin/logstash -f itcast-dashboard.conf ./filebeat -e -c itcast-dashboard.yml

?? 3)使用 插件 / kibana,查询保存到 es 的字段: ?? 4) ?? 5) ?? 6) ?? 7)

5.:Kibana:

????-1:启动 Kibana & 通过浏览器进行访问:

./bin/kibana http://192.168.124.11:5601

????-2:添加 Logstash 索引,到 Kibana 中。 ?? 1)时间间隔的柱形图: ?? 2)各个操作的饼图分布: ?? 3)数据表格: ?? 4)制作 DashBoard:

6.:课程总结:

?? 1) ????-1:


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #视频地址一课程简介12 #1 #2