广州海佳网络网站建设公司怎么样,专门做网站的科技公司,wordpress评论表情不显示,建站平台做的网站google前言
前面我们讲过消息队列#xff0c;曾提到消息队列也具有保存消息日志的能力#xff0c;今天要说的EL看也具备这个能力#xff0c;不过还是要区分一下功能的。消息队列的日志主要指的是Redis的AOF#xff0c;实际上只是可以利用了消息队列来保存#xff0c;却并不是消…前言
前面我们讲过消息队列曾提到消息队列也具有保存消息日志的能力今天要说的EL看也具备这个能力不过还是要区分一下功能的。消息队列的日志主要指的是Redis的AOF实际上只是可以利用了消息队列来保存却并不是消息队列本身的能力。ELK是当今非常流行的日志采集保存和查询的框架然而他们俩各有用处可以说互不干扰使用且都是必须的下面我们来了解ELK。
ELK
什么是ELK
ELK是如今比较流行的一套框架主要用于日志的采集保存和查询。线上情况我们不能通过控制台来实时查看但却可以通过日志输出来定位问题查看必要的信息。如果保存成文件也必然是极庞大的体量并不适合我们去翻看查找信息这才有了ELH其实对于ELK大家也并不陌生其中的E就是我们前段时间学习的ES全名Elasticsearch中文名全文搜索引擎。是不是很惊喜和意外所以当然L和K也是两个单独的系统他们统称为ELK下面我们将逐一介绍这三个东西是什么。
E
E是我们前段时间学习的ES全名Elasticsearch中文名全文搜索引擎。额这个还要继续说吗我觉得不用了吧下面贴个前面的博客链接大家点进去详细了解吧。
Java开发 - Elasticsearch初体验
L
L全称logstash是一套日志采集工具我们在前面没有讲过它是一款开源的日志采集处理和输出的软件每秒可以处理上条数据并且可以同时从多个数据来源采集并转换数据然后将数据输出到指定的存储单元中(官方推荐的存储单元为Elasticsearch)。
数据来源可以是任何可存储数据的东西如数据库日志redis等。
LogStash处理过程分为三步
input数据输入即数据的采集过程filter和过滤器一样哎明显是采集完数据后可以在中间对数据进行一定的处理output处理完的数据当然是要输出啦输出到指定的存储位置
logstash和ES的关系很密切一个常用的功能就是完成数据库和ES数据的同步免去了我们手动同步的麻烦。
我们通过配置logstash来监听数据库中单表多表的更新变化它本质上是一个定时器实现简单MQ实现ES与数据库同步则是实时性的、复杂性更高的、一致性强的。此处我收回前言中提到的Redis通过MQ来保存日志不是MQ本身功能的话这话欠妥了。因为保存日志虽然是logstash的功能但它也是通过封装一些实现来完成这个功能的。
在监听数据表变化的时候我们需要规范的数据表结构。这段话我看到很多人都有说博主觉得也对但也不对logstash在工作的时候确实需要监控表中某字段变化但也不是说名字要固定为某字段其实这个column是可以在配置中指定的毕竟每一个人对数据的定义都不一样出现名字不同的情况时有发生。
不过在使用logstash的时候也出现了一些不一样的声音。Logstash运行内存较大占用CPU过高影响性能其还没有消息队列缓存有数据丢失的隐患。基于此出现了两种情况
一类人选择对logstash进行调优推荐这篇博客可以看看ELK下之Logstash性能调优从千/秒万/秒10万/秒
另一类人选择ELK FilebeatFilebeat会将日志数据收集并结构化后传输到Logstash上如果filebeat直接传输给es就会占用掉es的大量资源。这种工作方式推荐这篇博客看基于ELK搭建网站实时日志监控平台
怎么办感觉那两篇博客写的都比博主写的好啊还更详细如果有用博主也不介意大家过去看哈学习的目的是学会而不是为了流量。即使如此博主还是要硬着头皮把这篇博客写完。突然想到要是我不去搜集资料大家也看不到这么优秀的博文我就是那个引路人我太棒了。
K
K是Kibana是ES的可视化工具日志系统总不能一个个文件打开来看这很不友好这个可视化工具可以很好的帮到我们我们可以在里面对需要的信息进行筛选过滤快速查抄需要的有效信息。
Kibana的安装并不复杂但有一个条件需要和ES的版本保持一致。logstash则没有这样的要求但为了好看也保持一致吧。
L和E的那些事
都写到这里了要给大家提一嘴ELK不需要添加任何Java代码全部通过配置完成。
当安装好软件做好配置之后logstash会自动监听配置中指定的表的字段只要该字段发生变化logstash就会收集变化行的信息并周期性的向ES进行提交ES中的数据就会自动和数据库中的变化数据同步了。
logstash的监听是通过Mybatis拦截器统一处理监听字段一般是更新时间字段在字段变化时就可以被监听到这个可以解决监听非时间字段时修改某数据时监听不到的的情况。
以上数据同步功能在ES中我们没有讲过实际上这个问题也是很麻烦不通过ELK就需要手动去完成数据的同步这是非常麻烦的。
除了上面提到的还有一个很有意思的功能比如我们有多个字段做了分词当需要搜索某个词的时候需要对这几个做了分词的字段分别进行搜索关键词操作logstash则简化了此步骤它会将做了分词的几个字段合并成一个叫search_text的字段所以在使用了ELK时搜索关键词时直接搜索search_text字段即可。
安装使用
E
关于ES的Docker安装启动可在Docker中搜索elasticsearch选择8.5.2版本pull下载完之后打开终端输入
docker run --name es -d -e ES_JAVA_OPTS-Xms1g -Xmx1g -e discovery.typesingle-node -p 9200:9200 -p 9300:9300 elasticsearch:8.5.2
ES_JAVA_OPTS-Xms1g -Xmx1g 配置启动时内存大小不配置的话默认是2G。
L
关于logstash的Docker安装启动可在Docker中搜索logstash选择8.5.2版本pull下载完之后打开终端输入
docker run -d --name logstash -p 4560:4560 logstash:8.5.2 k
关于kibana的Docker安装启动可在Docker中搜索kibana选择8.5.2版本pull下载完之后打开终端输入
docker run --name kb -d -p 5601:5601 kibana:8.5.2
登录kibana
登录kibana时会提示如下问题 且我们也没设置过账号密码提示需要去配置kibana.yml文件博主跟着网上做了一大堆配置发现最后都没有用所以暂时不要去动他们的yml文件就用原来的先配置好基础的信息再说点击forget password弹出提示信息让我们在es中设置密码在终端输入
docker exec -it es /bin/bash
bin/elasticsearch-reset-password --username kibana会给你生成一个New value上面账号填kibana密码就是这个新的New value点Conform按钮就出现了下面的配置成功页面 配置成功后又出现问题了 怎么又出现了一个登录页面我们真的没有设置密码呀这时候只能去添加密码了发现了一个问题后面再说先说添加密码。其实在es启动时就生成了一个elastic的超级用户密码我们需要用同样的方式直接生成 用这个用户和密码登录 天可怜见终于进来了。现在说说刚刚的问题是啥通过官方的博客Elastic使用 Docker 安装 Elastic Stack 8.x 并开始使用
发现我们和官方进入的方式不太一样 官方是通过token令牌完成配置的而我们是通过设置kibana进来的不知道这两种有什么差别猜测应该属于登录后自动获取的登录令牌进来的大家知道的可以留言告诉博主。
关于这个问题我们在后台的用户管理列表发现了一点端倪 kibana用户已经被禁止使用了在这里我们也可以手动添加用户而已经存在的用户则是不能进行编辑的应该是留给其他服务用的默认账户密码官方不希望我们修改怕引起其他的错误。
结语
如果自己做还是推荐官方的做法。到此他们之间的安装和基础配置算是完成了。关于kibana的使用可以参见上面那篇博客博主试了下可以的更多使用方式大家可自行查找博主后期也会出一些详细案例教程出来真是不容易啊各种坑对了如果实在要修改yml文件你会遇到几个问题顺带说下
vim文件无法打开yml文件需要安装vim安装时提示你没有权限这时候进入容器要通过此命令 docker exec -it -u 0 xxxxx /bin/bash 介入后安装vim docker stop es-node01 docker stop kib-01 这时候就可以通过vim打开yml文件了比较坑的是每个容器都需要这么做一遍目前还没找到好的解决办法有好的解决办法的小伙伴请不吝赐教。
关于ELK也是博大精深的东西啊微服务中每一项都不可小觑是在下孟浪了学无止尽学无止尽啊你我共勉。