临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

02。分布式日志采集ELKKafka

11月15日 金钟寨投稿
  课程标题:基于ELKKafka构建分布式ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a采集系统
  1。传统日志采集存在哪些缺点
  2。elkkafka日志采集的原理
  3。基于dockercompose安装elkkafka环境
  4。基于AOP并发队列实现日志的采集
  分布式日志采集产生背景
  在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常低下。
  因此我们需要集中化的管理日志,ELK则应运而生。
  传统方式服务器搜索日志命令:tail200f日志文件名称ELKKafka组成
  ElkEElasticSeach(存储日志信息)
  lLogstash(搬运工)
  KKibana连接到我们ElasticSeach图形化界面查询日志
  Elkkafka实现分布式日志采集
  为什么需要将日志存储在ElasticSeach而不是MySQL中呢
  ElasticSeach底层使用到倒排索引存储数据,在搜索日志效率比mysql要高的。elkkafka原理
  1。springboot项目会基于aop的方式拦截系统中日志
  请求与响应日志信息前置或者环绕通知;
  2。将该日志投递到我们kafka中注意该过程一定要是异步的形式,如果是同步形式会影响到整体
  接口的响应速度。
  3。Logstash数据源kafka订阅kafka的主题获取日志消息内容
  4。Logstash在将日志消息内容输出到es中存放
  5。开发者使用Kibana连接到ElasticSeach查询存储日志内容。为什么ELK需要结合Kafka
  如果只整合elk不结合kafka这样的话每个服务器节点上都会安装Logstash做读写日志IO操作,可能性能不是很好,而且比较冗余。
  ELKKafka环境构建dockercompose构建ELKKafka环境
  整个环境采用dockercompose来实现构建
  注意:环境cpu多核内存4GB以上
  kafka环境的安装:
  1。使用dockercompose安装kafka
  对dockercompose不熟悉可以查看:http:www。mayikt。comfrontcouinfo3010
  dockercompose安装包https:note。youdao。comynoteshare1index。html?idb72a076dc75471fb86deba42924a0a3dtypenote
  docker相关学习文档:http:note。youdao。comnoteshare?ide99e3eba0355e7c9905d0395d20b9f27sub962FA9CD33974C77A948376958D4B3DD
  2。dockercompose文件
  3。mkdirdockerkakfa
  4。cddockerkakfa
  5。创建dockercompose。ymlversion:2services:zookeeper:image:wurstmeisterzookeeperports:2181:2181restart:alwayskafka:image:wurstmeisterkafka:2。122。3。0ports:9092:9092environment:KAFKAZOOKEEPERCONNECTzookeeper:2181KAFKAADVERTISEDLISTENERSPLAINTEXT:192。168。75。129:9092KAFKALISTENERSPLAINTEXT::9092volumes:varrundocker。sock:varrundocker。sockrestart:alwayskafkamanager:image:sheepkillerkafkamanager镜像:开源的web管理kafka集群的界面environment:ZKHOSTS:192。168。75。129修改:宿主机IPports:9001:9000暴露端口elasticsearch:image:daocloud。iolibraryelasticsearch:6。5。4restart:alwayscontainername:elasticsearchenvironment:ESJAVAOPTSXms512mXmx512mports:9200:9200kibana:image:daocloud。iolibrarykibana:6。5。4restart:alwayscontainername:kibanaports:5601:5601environment:elasticsearchurlhttp:192。168。75。129:9200dependson:elasticsearch
  dockerrunzookeeper容器
  dockerrunkafka容器
  dockerrunkafka容器ElasticSeach
  dockerrunKibana容器
  dockerrunLogstash容器
  使用容器编排技术
  6。关闭防火墙
  systemctlstopfirewalld
  serviceiptablesstop
  7。dockercomposeup执行即可。
  没有这个命令需要先安装dockercompose
  注意:构建elkkafka环境过程中,需要非常多的依赖镜像。
  如果es启动报错:无法启动大多数内存不足的原因
  建议虚拟机内存4G以上
  es启动报错:maxvirtualmemoryareasvm。maxcount(65530)istoo
  解决步骤:
  1。先切换到root用户;
  2。执行命令:
  sysctlwvm。maxmapcount262144
  可以查看结果:
  sysctlagrepvm。maxmapcount
  会显示如下信息:
  vm。maxmapcount262144
  注意:
  上述方法修改之后,如果重启虚拟机将失效,所以:
  一劳永逸的解决办法:
  在etcsysctl。conf文件的最后添加一行代码:
  vm。maxmapcount262144
  即可永久修改。验证elkkafka环境
  dockerps
  访问:zk192。168。75。143:2181
  访问:eshttp:192。168。75。143:9200
  访问:kibanahttp:192。168。75。143:5601appkibanadevtoolsconsole?g()
  安装logstash上传logstash6。4。3。tar。gz到服务中tarzxvflogstash6。4。3。tar。gzcdlogstash6。4。3binlogstashplugininstalllogstashinputkafkabinlogstashplugininstalllogstashoutputelasticsearch
  注意:安装
  binlogstashplugininstalllogstashinputkafka
  binlogstashplugininstalllogstashoutputelasticsearch
  本机电脑需要有JDK的环境,如果没有JDK环境直接安装logstashinputkafka或者logstashoutputelasticsearch会报错的
  创建在logstashconfig目录创建kafka。confinput{kafka{bootstrapservers192。168。75。143:9092topicsmayiktlog}}filter{Onlymatcheddataaresendtooutput。}output{elasticsearch{actionindexTheoperationonEShosts192。168。75。143:9200ElasticSearchhost,canbearray。indexmylogsTheindextowritedatato。}}
  进入logstashbin目录执行。logstashf。。configkafka。conf
  springboot项目整合elkkafka
  maven依赖dependenciesdependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebartifactIdexclusionsexclusiongroupIdcom。fasterxml。jackson。coregroupIdjacksondatabindartifactIdexclusionexclusionsdependencydependencygroupIdorg。projectlombokgroupIdlombokartifactIdscopeprovidedscopedependencydependencygroupIdcom。alibabagroupIdfastjsonartifactIdversion1。2。66versiondependencydependencygroupIdorg。springframework。kafkagroupIdspringkafkaartifactIddependencydependencygroupIdorg。springframework。bootgroupIdspringbootstarteraopartifactIddependencydependencygroupIdcommonslanggroupIdcommonslangartifactIdversion2。6versiondependencydependenciesaop拦截系统日志importjava。net。InetAimportjava。net。UnknownHostEimportjava。text。SimpleDateFimportjava。util。Aimportjava。util。Dimportjavax。servlet。http。HttpServletRimportcom。alibaba。fastjson。JSONOimportcom。mayikt。container。LogCimportorg。aspectj。lang。JoinPimportorg。aspectj。lang。annotation。;importorg。springframework。beans。factory。annotation。Aimportorg。springframework。beans。factory。annotation。Vimportorg。springframework。stereotype。Cimportorg。springframework。util。concurrent。ListenableFimportorg。springframework。web。context。request。RequestContextHimportorg。springframework。web。context。request。ServletRequestAAspectComponentpublicclassAopLogAspect{Value({server。port})privateStringserverP申明一个切点里面是execution表达式Pointcut(execution(com。mayikt。api。service。。(。。)))privatevoidserviceAspect(){}AutowiredprivateLogContainerlogC请求method前打印内容Before(valueserviceAspect())publicvoidmethodBefore(JoinPointjoinPoint){ServletRequestAttributesrequestAttributes(ServletRequestAttributes)RequestContextHolder。getRequestAttributes();HttpServletRequestrequestrequestAttributes。getRequest();JSONObjectjsonObjectnewJSONObject();SimpleDateFormatdfnewSimpleDateFormat(yyyyMMddHH:mm:ss);设置日期格式jsonObject。put(requesttime,df。format(newDate()));jsonObject。put(requesturl,request。getRequestURL()。toString());jsonObject。put(requestmethod,request。getMethod());jsonObject。put(signature,joinPoint。getSignature());jsonObject。put(requestargs,Arrays。toString(joinPoint。getArgs()));IP地址信息jsonObject。put(ipaddres,getIpAddr(request):serverPort);JSONObjectrequestJsonObjectnewJSONObject();requestJsonObject。put(request,jsonObject);jsonObject。put(requesttime,df。format(newDate()));jsonObject。put(logtype,info);将ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a信息投递到kafka中StringlogrequestJsonObject。toJSONString();ListenableFutureSendResultString,ObjectsendkafkaTemplate。send(mayiktlog,ctx);logContainer。addLog(log);}在方法执行完结后打印返回内容AfterReturning(returningo,pointcutserviceAspect())publicvoidmethodAfterReturing(Objecto){ServletRequestAttributesrequestAttributes(ServletRequestAttributes)RequestContextHolder。getRequestAttributes();HttpServletRequestrequestrequestAttributes。getRequest();JSONObjectrespJSONObjectnewJSONObject();JSONObjectjsonObjectnewJSONObject();SimpleDateFormatdfnewSimpleDateFormat(yyyyMMddHH:mm:ss);设置日期格式jsonObject。put(responsetime,df。format(newDate()));jsonObject。put(responsecontent,JSONObject。toJSONString(o));IP地址信息jsonObject。put(ipaddres,getIpAddr(request):serverPort);jsonObject。put(logtype,info);respJSONObject。put(response,jsonObject);将ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a信息投递到kafka中kafkaTemplate。send(mayiktlog,respJSONObject。toJSONString());logContainer。put(respJSONObject。toJSONString());}异常通知parampointAfterThrowing(pointcutserviceAspect(),throwinge)publicvoidserviceAspect(JoinPointpoint,Exceptione){ServletRequestAttributesrequestAttributes(ServletRequestAttributes)RequestContextHolder。getRequestAttributes();HttpServletRequestrequestrequestAttributes。getRequest();JSONObjectjsonObjectnewJSONObject();SimpleDateFormatdfnewSimpleDateFormat(yyyyMMddHH:mm:ss);设置日期格式jsonObject。put(requesttime,df。format(newDate()));jsonObject。put(requesturl,request。getRequestURL()。toString());jsonObject。put(requestmethod,request。getMethod());jsonObject。put(signature,point。getSignature());jsonObject。put(requestargs,Arrays。toString(point。getArgs()));jsonObject。put(error,e。toString());IP地址信息jsonObject。put(ipaddres,getIpAddr(request):serverPort);jsonObject。put(logtype,info);JSONObjectrequestJsonObjectnewJSONObject();requestJsonObject。put(request,jsonObject);将ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a信息投递到kafka中StringlogrequestJsonObject。toJSONString();logContainer。addLog(log);}publicstaticStringgetIpAddr(HttpServletRequestrequest){XForwardedFor(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。StringipAddressrequest。getHeader(xforwardedfor);if(ipAddressnullipAddress。length()0unknown。equalsIgnoreCase(ipAddress)){ipAddressrequest。getHeader(ProxyClientIP);}if(ipAddressnullipAddress。length()0unknown。equalsIgnoreCase(ipAddress)){ipAddressrequest。getHeader(WLProxyClientIP);}if(ipAddressnullipAddress。length()0unknown。equalsIgnoreCase(ipAddress)){ipAddressrequest。getRemoteAddr();if(ipAddress。equals(127。0。0。1)ipAddress。equals(0:0:0:0:0:0:0:1)){根据网卡取本机配置的IPInetAtry{inetInetAddress。getLocalHost();}catch(UnknownHostExceptione){e。printStackTrace();}ipAddressinet。getHostAddress();}}对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照,分割if(ipAddress!nullipAddress。length()15){。。。。length()15if(ipAddress。indexOf(,)0){ipAddressipAddress。substring(0,ipAddress。indexOf(,));}}returnipA}}配置文件内容spring:application:服务的名称name:mayiktelkkafkajackson:dateformat:yyyyMMddHH:mm:sskafka:bootstrapservers:192。168。75。143:9092指定kafkaserver的地址,集群配多个,中间,逗号隔开producer:keyserializer:org。apache。kafka。common。serialization。StringSerializervalueserializer:org。apache。kafka。common。serialization。StringSerializerconsumer:groupid:defaultconsumergroup群组IDenableautocommit:trueautocommitinterval:1000keydeserializer:org。apache。kafka。common。serialization。StringDeserializervaluedeserializer:org。apache。kafka。common。serialization。StringDeserializerserver:port:9000
投诉 评论 转载

周三这三个板块或将迎来大幅上涨一、自动驾驶概念板块。近日,交通运输部就自动驾驶汽车运输安全服务指南公开征求意见。指出,在保障运输安全的前提下,鼓励在封闭式快速公交系统等场景使用自动驾驶汽车从事城市公共汽车客……号称朝鲜顶级的商场,能吃到什么?我们知道一个地方商业最发达的地方大致就在CDB,这样那样的购物广场可谓海了去了,这也是发展消费市场必然的产物,那你知道吗?在讲究人人为公的朝鲜也有这样的商场呢!也是,要能长足的……折叠屏和两亿像素主摄云集,摩托罗拉三机齐发摩托罗拉手机官宣,将于8月11月14:00召开新品发布会,届时将有三款新旗舰手机同台亮相,包括motorazr2022、motoX30Pro、motoS30Pro。根据爆……国药集团中国生物成功分离猴痘病毒央广网北京10月20日消息据中国生物官微消息,近日,国药集团中国生物武汉生物制品研究所成功从感染患者临床样本中分离出猴痘病毒毒株,助力猴痘疫情防控的各项科研攻关工作。20……武磊不再孤单!下赛季欧洲联赛将出现两张中国面孔,已跟队训练日前,根据德国老牌劲旅不莱梅官宣确定中国两位新星王博文和李贤成,正式加盟不莱梅U23梯队。新赛季王博文和李贤成将代表不莱梅青年队,出战德国青年联赛,让很多球迷都非常期待。因为王……春天的衬衫应该这样穿,日常通勤优雅又时髦,简约大气很好看进入春天之后,完全进入了一个让人舒适的季节,对于女性来说,可以打造出各类的时髦造型,让自己变得更加与众不同。但是很多人也觉得春天是一个温度不定,乱穿衣的季节,对于不同的体质和不……02。分布式日志采集ELKKafka课程标题:基于ELKKafka构建分布式ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a采集系统1。……三连庄?追梦这赛季的MVP很可能还是约基奇这太疯狂了直播吧1月14日讯今日,勇士球员德雷蒙德格林在接受TaylorRooks专访时谈到了MVP。格林表示:我认为MVP很可能还是约基奇,这太疯狂了。他场均拿到三双,这令人难以……12小时长续航!小米首发骨传导耳机采用恒泰科技锂电池独特的开放式耳道设计,不需要通过耳膜而是直接通过头骨把声音传导到耳朵内部神经,能够避免佩戴耳机时因听不到外界的声音而引发的事故危险以及把耳机对耳朵的听力影响降到最低。此外,骨传……姚明免费拍摄宣传片,赢得尊重,获得外界的一致好评前不久,网传中国篮球协会主席姚明即将下课,由徐济成取代姚明的位置,担任中国篮球协会主席!但之后,中国篮球协会官方发表声明进行辟谣,称徐济成取代姚明的位置担任中国篮球协会主席为不……最新发布的Doris1。2TPCH和SSB性能测试,仍需努力12月8号ApacheDoris发布了最新的版本1。2,官方宣称1。2版本在多场景下311倍性能提升。我今天也测试一下最新的1。2版本,完成之前测试系列里的所有版本的对比测试。……麦科勒姆34分瓦兰2712鹈鹕轻取送奇才3连败!NBA常规赛1月10日继续进行,本场比赛锡安和英格拉姆继续缺阵,奇才这边比尔也不打。最终,鹈鹕以132112战胜奇才,鹈鹕终结连败的同时送给奇才3连败。首节开始,波尔津吉……
入秋前,是进补黄金期,建议大家吃2肉,喝3饮,更健康石笑天因为三粒丢球在河南队的前途变迷茫,因为替补席上有王国明已同居!NBA韦德儿子恋情公布体重180斤堪比瓦妮莎靠关系找曼城01不敌利物浦,瓜帅两大败笔自毁武功,直接改变比赛走势洞见丨北京开放大学校长褚宏启双减一定要与高质量发展同行微信小游戏是暴富的万能药吗?小可主机对接米家APP功能新升级!快点进来瞧一瞧遵义飞宇电子以专注铸专长提升创新发展动能科学家们发现了一颗生命星球,并非火星善于独处的女人,往往不简单张朝阳对话俞敏洪谈宇宙谈焦虑谈创业谈人生联想小新520智能投影仪轻薄机身,随时享受沉浸式观影效果深圳地铁11号线的保安,你给我站起来工信部提升动力电池回收利用水平支持相关产业发展月日补发养老金是真的吗看看你的城市中标没乐在吹画关于国际经济学成绩的方差分析与教学改革探讨国内外最新科技动态2022。1。11星期二为什么越来越多的景区开始做魔毯?钓鱼人将其拍下发到网上,网友严惩抹胸需要胸贴吗胸贴怎么用关于如何抓好校园安全的调研报告路由器wps是什么(路由器wps灯不亮有什么影响)没有借条的可以要回借款吗

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找