《《数据采集技术(初级)》实验手册项目10:项目实战:业务系统日志数据采集.docx》由会员分享,可在线阅读,更多相关《《数据采集技术(初级)》实验手册项目10:项目实战:业务系统日志数据采集.docx(18页珍藏版)》请在三一办公上搜索。
1、项目十:业务系统曰志采集作者时间版本审核王健2020-7-212.01.收集业务系统日志,保存到MySqI数据库中。一、概述因为业务系统以分布式的形式部署在不同的服务器上,为了便于有看所有服务器上的日志,必须要将所有服务器上的日志集中收收集到一个地方进行展示、查询等。这就是业务数据采集的核心概念。二、日志采集的方式方法1、Iog4j,Iogback等日志系统,默认情况下,已经提供了JDBCSocket这样的输出接口,完全可以将这些日志信息集中发送到一台中心服务器,但让其输出到JDBC、Socket等,会大大降低日志写出的速度,虽然异步可以解决速度的情况,但大部分情况下,我们依然还是将日志保存到
2、文本文件中。2、可以使用flume、IogStash、filebeat等第三方组件将文本日志信息输出到指定的服务器中。其中flume用于大数据环境下,Iogstash和filebeat都属于ELK家族,而Iogstash又是一个重量级的组件,所以,这儿可以使用filebeat做为日志收集组件。三、了解ELK1、概述官网:https:WwW.elastic.cocnWhat-is/elk-stack什么是ELKStack?很简单,指的就是EIaStiCStack。让我们解释一下。已经知道来龙去脉了?艮需几分钟,即可启用我们的托管型ElasticsearchService(如果喜欢,您也可称其为托
3、管型ELK),同时欢迎观看我们的入门视频。那么,ELK到底是什么呢?ELK是三个开源项目的首字母缩写,这三个项目分别是:EasticsearchLogstash和KibanaeEasticsearch是一个搜索和分析引擎。LogStaSh是0艮务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如Elasticsearch等存储库中。Kibana则可以i1用户在Elasticsearch中使用图形和图表对数据进行可视化。日asticStack是ELKStack的更新换代产品。从一个菜谱开始:Itstartedwitharecipeapp伦敦的公寓内,ShayBanorl
4、正在忙着寻找工作,而他的妻子正在蓝带(LeCOrdOnBIeU)烹饪学校学习厨艺。在空闲时间,他开始编写搜索引擎来帮助妻子管理越来越丰富的菜谱。他的首个迭代版本叫做Compass0第二个迭代版本就是日asticsearch(基于ApacheLucene开发)。他将Elasticsearch作为开源产品发布给公众,并创建了#elasticsearchIRC通道,剩下来就是静待用户出现了。公众反响十分强烈。用户自然而然地就喜欢上了这一软件。由于使用量急速攀升,此软件开始有了自己的社区,并引起了人们的高度关注,尤其引发了SteVenSChUUrmarI、UriBonessSimonWillnauer
5、的浓厚兴趣。他们四人最终共同组建了一家搜索公司。2、下载以下都以LinUX版本为基本:1.ogstash采集、转换、充实,然后输出.下载下载logstash:https:/artifacts.elastic.co/downloads/IOHStaSh/IOgStaSh-7.8.0.tar.HZFilebeatReal-timeinsightintologdata.Download下载fiIebea:https:/artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.0-linux-x8664.tar.z如果时EIasticSear
6、ch和Kibana有兴趣的可以同时下载这两个组件:Elasticsearch分布式、RESTfUl风格的搜索和分析.在ElasticCloud上启用下装地址:https:/artifacts.elastic.co/downloads/elasticsearch/elasticsearsh-7.8.0-linux-x8664.tar.gzKibana实现数据可视化.在ElasticStack中进行在ElasticCloud上启用地址:https:/artifacts.egstic.codownloadskibanakibana-7.8.0-linux-x8664.tar.gz四、IogStaSh
7、应用IogStaSh可以充当从日忐收集到EgStiCSeaCh的媒介。但本质上,IOgStaSh之初就可以收集日志。但由于它过于庞大,所以才有了后来的beats0同时Iogstash还可以对接收到的数据进行分析和转换。为了让大家掌握Iogstash,这儿我们先用Iogstash收集日志开始。同时,IogStaSh在收集到数据以后,可以保存到指定的位置,一般为ES,也可以是数据库。由于本课程没有涉及到ES,所以这儿将收集到的日志,保存到MySql数据库中。K准备工作由于大部分业务系统,都运行了UnUX上,所以,我们这儿是以LinUXCent0S7做为环境给大家讲解。准备工作主要包含以下过程:(以
8、后所有的测试,都需要做以下环境准备)为了给大家一个全新的环境,这儿从一个完整的纯净的CentOS开始。1使用VBox安装CentOS虚拟机参考:hltps:/bl。以CS由于过程相时简单,网上有很多教程,请大家自行参阅。2、CentOS准备使用XSheIlmobaXItem登录CentOSo并做以卜操作:1、关闭防火墙。root()serverl01#systemctlstopfirewalldTOOtSerVerlol伊systemctldisablefirewalld2、配置峥态ip地址修改配置文件:如果没有这个配置文件,关闭CentoS,并创建HoStc)My连接,然后再手工创建这个文件
9、即可:Iroot(三)ServerlOl#vimetcsysconfignetwork-scriptsifcfg-enp0s8TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=StaticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUT0C0NF=yesIPV6-DEFR0TE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=enp0s8UID=620377da-1744-4268-b6d6-a519d
10、27e01c6DEVICE=enp0s8ONBOOT=yesIPADDR=192.168.56.101重新启动网卡:TOOtSerVerlol#systemctlrestartnetwork.service查看IP地址:# ifconfigenps8:flags=4163BROADCAST,RUNNING,MULTICASTmtu1500inet192.168.56.101netmask255.255.255.0broadcast192.168.56.255inet6fe80:3b4a:77d:57eb:d4d3prefixlen64scopeid0x20ether08:00:27:86:6d
11、:5dtxqueuelen100O(Ethernet)RXpackets416bytes36839(35.9KiB)RXerrors0dropped0overruns0frame0TXpackets270bytes34662(33.8KiB)TXerrors0dropped0overruns0carrier0collisions03、安芸JDK及配量环境变将JDK1.8解压到usrjava目录下。配置环境变量:# vimetcprofileexportJAVA_H0ME=/usr/java/jdk-1.8exportPATH=$PATH:$JAVA_HOME/bin让环境变量生效:#SOUrC
12、eetcprofile检查是否安装成功:TOOtSerVeriol伊java-versionjavaversion,1.8.0-251Java(TM)SERuntimeEnvironment(build1.8.0_251-b08)JavaHotSpot(TM)64-BitServerVM(build25.251-b08,mixedmode)4、创建一个用户用于刑试建议创建个测试用于,用于测试,我们将所有的软件,都安装到这个用户的主目录下,当不再需要时,可以删除这个用户及这个用户的主目录:(可选)创建用户:TOotSerVerIOl伊useradd-Gwheeles修改密码:TootSerVer
13、lolpasswdes更改用户es的密码0新的密码:无效的密码:密码少于8个字符重新输入新的密码:passwd:所有的身份验证令牌已经成功更新。5、安芸mysql/mariadb数据库Centc)S可以在线直接安装Mariadb数据库,由于MySql数据库已经开始收费(非社区版本)。所以,为了方便,大家可以直接安装Mariadb数据库:(root()serverl01伊yuminstall-ymariadb-servermariadb安装完成以后,配置密码:root()serverl01mysql_secure_installation启动mariadb数据库:(root()serverl01
14、systemctlstartmariadb将mariadb数据库,设置为开机启动:root()serverl01systemctlenablemariadb登录测试:(root()serverl01伊mysql-uroot-pl23456WelcometotheMariaDBmonitor.Commandsendwith;org.YourMariaDBconnectionidis2Serverversion:5.5.65-MariaDBMariaDBServerCopyright(c)2000,2018,Oracle,MariaDBCorporationAbandothers.Typehelp
15、;orhforhelp.Typectoclearthecurrentinputstatement.MariaDB(none)showdatabases;IDatabaseinformation_schemahiveImysqlnacosoneperformance_schema参考地址:shanheyongmup/12470169.html2、安装Iogstash并使用使用之前创建的测试账户,登录CentOS,然后在主目录下,创建个Program目录,用于安装所有可执行应用程序。esserverl01$mkdirprogram步1、了解Iogstash的人和输出在Iogstash的官网API中
16、,包含了Iogstash的输出输入配置说明:进入Iogstash的下载页面,就可以看到IOgStaSh的安装说明:https:/Www.elastic,cocndo”,nloads/IOgStaShNewaroundhere?ViewourgettingstartedpagetogetacquaintedwiththeElasticStack.Download and unzip LogstashLogstash can also be installed from our package repositories using apt or yum. See ReposrtoriesJnlbe
17、JGuidePrepare a Iogstashxonf config fileRun bin/logstash -f logstash.confDiveintotheqettinStartedClUideandvideo.在第4步,就可以看到个向导的超连接:https:/需Ww.elastic,coguideenIOgStaShcurrentgetting-Started-WithTOgStash.html查看右边列表,就可以看到input和OUtPUts:+Inputplugins+Outputplugins步2、安装Iogstash安装Iogstash就是解压就可以了。步3、配置一个标准
18、的输入和输出在COnfig目录下,创建一个Lyml并输入以下内容:步4、启动IogStaSh$bin/logstash-fconfigl.yml以下显示为启动成功的标识:SuccessfullystartedLogstashAPIendpointrport=9600然后输出些数据:先输入数据:HelloThisismyfirstLogstash马上会看到以下的输出:(aversion=1,host=serverll,timestamp=2020-07-21T15:09:51.600Z,message=HelloThisismyfirstLogstash3、将数据输出到三ysql数据库中如果要求
19、将Iogstash的数据,保存到mysqI中,则必须要给Iogstash安装jdbcoutput插件。步1、安装jdbcoutput插件先查看目前已经安装了哪些插件:$binlogstash-pluginlist-verbose检查有没有安装jdbc插件:$binlogstash-pluginlist-verbosegrepjdbcesserverl01logstash$bin/logstash-pluginlist-verbosegrepjdbclogstash-integration-jdbc(5.0.1)卜一logstash-input-jdbc卜一logstash-filter-jdb
20、c-streaming1-logstash-filter-jdbc_static如上面所见,只有jdbc的input插件,没有jdbc的OUtPUt插件。现在开始安装jdbc的output插件,可能安装过程会比较长,请耐心等待:./logstash-plugininstalllogstash-output-jdbcValidatingIogstash-OutputJdbcInstallinglogstash-output-jdbcInstallationsuccessful步2、安装mysql驱动将mysql的驱动程序jar包放到:VendOrjarjdbe目录下:esserverl01jdb
21、c$pwdhomeesprogramlogstashvendorjarjdbcesSerVerIoljdbCFIl总用量984-rw-r-r-1eses10069046月1609:39mysql-connector-java-5.1.49.jar步3、将标准输入保存到数据库中创建数据表:MariaDB(none)createdatabaseIogstashcharactersetutf8;Query0K,1rowaffected(0.03sec)MariaDB(none)uselogstash;DatabasechangedMariaDBlogstashcreatetablelogs(- id
22、intprimarykeyautojnerement,- hostvarchar(30),- create_timevarchar(50),- messagevarchar(4000)- );QueryOK,0rowsaffected(0.01sec)创建Iogstash的配置文件:2.ymlinputstdinoutputjdbcdriver-class=com.mysql.jdbc.Driverconnection_string=jdbc:mysql:/localhost:330logstash?characterEncoding=UTF-8username=rootpassword=12
23、3456,statement=insertintologs(host,message,create_time)VaIUeS(?,?,?),host,message,timestamp”)outputstdout)启动并测试:$bin/logstash-fconfig2.yml输入一些内容:ThisIsmyFirstJdbcOutput(message=ThisIsmyFirstJdbcOutput,version=1,host=,serverll,timestamp=2020-07-22T14:59:41.705Z)ThisismySecondMessage(message=ThisismyS
24、econdMessage,(Aversion=lfhost=,serverll,timestamp=2020-07-22T14:59:50.854Z查看数据表中的数据:MariaDBlogstashselect*fromlogs;IidIhostIcreate_timemessageI1IServerlOl2020-07-2214:59:41.705ThisIsmyFirstJdbcOutputI2IServerlOl2020-07-2214:59:50.854ThisismySecondMessage如果您看到数据表中的数据,则表示输出已经成功。4、使用IOgStaSh读取日志文件并保存到m
25、ysql中去1.OgStaSh同样,可以读取日志文件中的内容。以一行一行的形式将数据发送到目标地址。以下定一个读取日志文件的配置示例:https:/WWw.elastic,coguideenIogStaShcurrentp1ugins-inputs-fie.html配置文件:inputfilepath=*homeesa*.log*outputstdout启动logstash:1.ogstash-fconfig/3.yml向文件中输出数据:esserverl01a$echoHelloa.logeserverlla$echoWorlda.log查看输出:(ho$t=*serverll*,*time
26、stamp*=2020-07-22T15:21:56.302Z,“message”=ztIIello*,z,version*=T,)path=*homeesaa.log*(*host*=*serveriOl*,*timestamp*=2020-07-22T15:21:58.406Z,“message”=World,*version*=T,*path*=*homeesaa.log*注意I上面并没有配置输出到Mysql中去,大家可以自行配置。四、filebeats简介首先beats是一个集合,用于收集不同的日志类型:https:/www.elastic,co/cn/downloads/beatsB
27、FilebeatReal-time insight into log data.PacketbeatAnalyze network packet data.asWinlogbeatAnalyze Windows event logs.DownloadDownloadDownloadOMetricbeatHeartbeatEAuditbeatShip and analyze metrics.Ping your Infrastructure.Send audit data to Elasticsearch.DownloadDownloadDownloadFunctionbeatShipcloudd
28、atawithserverlessinfrastructure.DownloadJournalbeatAnalyze Journald logs.Download阅读安装方法:https:/www.elastic,co/cn/downloads/beats/fiIebeatEdit the filebeat.yml configuration fileDownloadandunzipFilebeatFilebeatcanalsobeinstalledfromourpackagerepositoriesusingaptoryum.SeeRepositoriesintheGuide.Startth
29、edaemonbyrunningsudo./filebeat-e-cfilebeat.ymlDiveintotheqettinStarteduideandvideo.查看gettingStartedgUide,同样,filebeat有输入输出:-Configure* inputsGeneralsettingsProjectpaths* Configfileloading+Output1、查看filebeat的输入和输出文档输入类型包含很多,这儿我们主要研究:Iog日忐输入stdin标准输入输出也包含很多,我们这儿主要研究:1.ogstash输出给IOgStaShconsole输出到控制台2、配
30、置一个标准输出的filebeat配置文件:viml.yml内容如下:(注意冒号后面,都有一个英文空格,可以参考Python的语法,换行后,输入四个空格)filebeat.inputs:-type:stdinoutput.console:pretty:true输出一行数据:HelloThisisMyFirstFiIeBeatConfig您可以看到以卜的输出:timestamp:2020-07-23113:33:06.1732,metadata:beat:filebeat,type:doc,version:7.8.0,message:HelloThisisMyFirstFiIeBeatConfig
31、,input:type:stdin,ecs:version:1.5.0,host:name:serverll,agent:name:,serverll,type:filebeat,version:7.8.0,hostname:,serverll,ephemeraljd:,2dae3895-fd0f-4b65-ad3d-61945c9ce9f2,id:0f6dbb4e-7bc6-465a-b548-91b26c362524,log:file:path:,offset:0)3、读取日志中的数据,并输出到控制台配置文件:vim2.yml完整内容如下:filebeat.inputs:-type:log
32、paths:-homeesa*.logoutput.console:pretty:true启动filebeat:filebeat-e-c2.yml输出一行数据,到Iog文件中:(esserverl01a$echoHelloThisisMyFirstLogFileTesta.log查看filebeat的输出:INFOlog/harvester.go:297Harvesterstartedforfile:homeesaa.log(timestamp:2020-07-23113:42:29.4812,(metadata:beat:filebeat,type:.doc,version:7.8.0,ag
33、ent:ephemeraljd:52728a69-ec71-4cec-8dd6-0eee951elc24,id:0f6dbb4e-7bc6-465a-b548-91b26c362524,name:serverll,type:filebeat,version:7.8.0,hostname:serverll,ecs:version:1.5.0,log:offset:0,file:path:homeesaa.log),message:HelloThisisMyFirstLogFileTest,input:type:log,hosf,:name:,serverll4、filebeat将数据输出到Iog
34、stash最终保存到mysql这个过程是filebeat将数据发送给logstash,Iogstash将数据保存到mysql数据库中;步In配置Iogstash配置Iogstash输入为beats,并开启一个端口,如5044,输出为mysql数据库:vimlogstashconfig4.yml完整内容如下:inputbeatsport=5O44outputjdbcdriver-class=com.mysql.jdbc.Driverconnection_string=jdbc:mysql:/localhost:330/logstash?characterEncoding=UTF-8usernam
35、e=rootpassword=123456statement=(insertintologs(host,message,create_time)values(7z7,7),host,message,timestampoutputstdout步2、启动Iogstash$bin/logstash-fconfig4.yml启动以后,可以通过查看端口,查看5044占用情况:esserverl01a$netstat-napgrep5044tcp600:5044:*LISTEN185yjava输出jps可以看出,这就是个java程序:esSerVerlOla$jps1947Jps1853Logstash步
36、3、RJtfilebeat配置filebeat的主要:作,就是配置output输出的目标为Iogstash:vimfilebeatl.yml内容如下:filebeat.inputs:-type:logpaths:-homeesa*.logoutput.logstash:hosts:127.0.0.1:5044步4、启动filebeat./filebeat-e-c3.yml然后向a*.log中输出一些内容:$echoThisLinewillinsertintomysqla.log查看数据库中的数据:IMariaDBlogstashselect*fromlogs;+-+IidIhostIcreat
37、e_timemessage+-+二+I1Iserverl01220-7-2214:59:41.705ThisIsmyFirstJdbcOutput2Iserverl01220-7-2214:59:50.854ThisismSecondMessage3Iname:serverl012020-07-2314:19:16.530ThisLinewillinsertintomysql+-+-;,丁T3rowsinSet(.0SeC)如果已经存在,最后这条数据的内容,则说明已经成功了。五、最后,收集SPringBOOt的日志保存到InySql中(课堂上再实现吧!做完这个功能,大家就可以毕业了)。附录h1
38、、将安装好的IOgStaSh-jdbc-output提取出来做以后的安装先在线安装好IOgStaSh-OUtPUt-jdbc:esSerVerlolIogstashFbin/logstash-plugininstalllogstash-output-jdbcValidatinglogstash-output-jdbcInstallinglogstash-output-jdbcInstallationsuccessful然后再将安装好的jdbc打包出来:esSerVerIOlIogstashJSbin/logstash-pluginprepare-offline-pack-overwrite-outputlogstash-jdbc-output.ziplogstash-output-jdbcOfflinepackagecreatedat:logstash-jdbc-output.zipYoucaninstallitwiththiscommand这是官方给的离线安装示例:bin/logstash-plugininstallfile:/home/es/PrORramloRStaShloTStaSh-idbc-output.zip