构建海量日志分析平台_第1页
构建海量日志分析平台_第2页
构建海量日志分析平台_第3页
构建海量日志分析平台_第4页
构建海量日志分析平台_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、elk课程备注:elk:732021751学习加群/助教:构建ELK海量日志分析平台讲师:john大纲项目介绍架构设计Filebeat Redis Logstash ELK平台构建Kibana数据分析ELK项目优化项目由来开发不能登录线上服务器查看详细日志,经过运维周转费时费力日志数据分散在多个系统,难以查找与整合日志数据量巨大,速度太慢,需求无法全局掌控项目运行状况日志数据数据分析.不够实时写代码,无法分析统计数据ELK海量日志分析平台Logstash+Elasticsearch+KibanaLogstash: Elasticsearch:,过滤,收集日志日志,提供搜索功能kibana:提供

2、web界面,支持 图表展现。 filebeat:轻量级的日志收集工具很多公司都采用该架构构建分布式日志系,统计,和,freewheel,畅捷通等。统,包括新浪ELK海量日志分析平台使用ELK的优点Logstash提供了大量插件,通过配置就可以完成各种不同日志处理需求有统一的查看界面(kibana),减少代码量有助于开发分析排查问题效果图效果图架构设计使用filebeatfilebeat(6.6)->logstash(parse)->es->kibana如果logstash出问题会导致filebeat收集的数据丢失filebeat(6.6)->logstash(parse

3、)loadbalance->es->kibanafilebeat和>logstash耦合性太高filebeat(6.6)->redis->logstash(parse)->es->kibana里面redis是一个单线程的实例,redis单线程每秒处理能力一般是10W次左 右filebeat(6.6)->redis/kafka->logstash(parse)->es->kibanafilebeat(1.3)不支持输出到kafka,5.x版本中支持输出到kafka不使用filebeatlogstash->kafka->

4、logstash(parse)->es->kibana里面kafka支持水平扩展,可以使用多分区,支持多线程并行执行。在应用端收集日志的话,logstash比较重量级,性能消耗比filebeat大Filebeat用于日志收集和传输,相比Logstash更加轻量级和易部署,对系统开销更小。架构设计线上服务器1010主从结构101112 1010可以使用多台filebeatLogstash,filebeatredises

5、集群KibanafilebeatFilebeat轻量级的日志收集工具,使用go语言开发安装部署【不依赖java】1::releases/filebeat-6-6-12:tar -zxvf filebeat-6.6.1-linux-x86_64.tar.gz 3:配置filebeat.yml文件(配置文件详解filebeat_bak.yml) 4:启动 ./filebeat -c filebeat_console.yml帮助命令:./filebeat -h5:运行nohup ./filebeat -c filebeat_console.yml >/dev/null 2>&1

6、&Filebeat的input和outputinput通过paths属性指定要outputelasticsearch Logstash Kafkaredis file Console Cloud官网使用手册地址:的数据ng-howto-filebeat.htmlRedisRedis介绍Redis安装Redis配置Redis基本使用Redis介绍Redis是当前比较热门的NOSQL系统之一,它是一个key-value系统。和Memcache类似,但很大程度补偿了Memcache的不足,它支持的value类型相对,包括string、list、set、zset和hash。这些数据类型都支持p

7、ush/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,Redis支持各种不同方式的排序。同Memcache一样,Redis数据都是缓存在计算机内存中,不同的是, Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修改操作写入追加的的持久化。文件,实现数据Redis安装Ø 从官网Redis 压缩包,地址:稳定版即可。rootmaster # cd /home/es/app/ rootmas

8、ter app# wget 2.8.12.tar.gzØ 解压安装包rootmaster app# tar -zxvf redis-2.8.12.tar.gz rootmaster app# lsredis-2.8.12rootmaster app# cd redis-2.8.12Ø 执行make 对Redis解压后文件进行编译需要提前安装好gcc相关的包( yum install -y open-ssl-devel gcc glibc gcc-c*)rootmaster redis-2.8.12# make MALLOC=libcØ 编译后,进入src文件夹,执

9、行make install进行Redis安装rootmaster redis-2.8.12# cd src/rootmaster src# make install PREFIX=/usr/local/redisRedis配置Ø 为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中a) 创建redis.conf文件rootmaster redis# mkdir -p /usr/local/redis/etcb) cp相关文件到redis目录 cp前面加 表示拷贝直接覆盖不进行询问:rootmaster redis-2.8.12# cp redis.conf /

10、usr/local/redis/etc/rootmaster src# cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-sentinel redis-server /usr/local/redis/bin/Ø 执行Redis-server 命令,启动Redis 服务rootmaster bin# pwd/usr/local/redis/binrootmaster bin# ./redis-serverRedis基本使用用本地客户端命令连接rootmaster bin# ./redis-cli

11、6; 获取所有键:6379> keys *Ø 字符串操作:6379> SET man "一个男人“:6379> GET manFilebeat outputRedis1:修改配置filebeat_redis.yml-output.html2:启动redisrootmaster bin# pwd/usr/local/redis/binrootmaster bin# ./redis-server rootmaster bin# ./redis-cli 3:启动Filebeat 并输入测试数据./filebe

12、at -c filebeat_redis.yml4:查看redis :6379> keys *:6379> llen filebeat:6379> rpop filebeat备注:registry偏移量Logstash是一个管理日志和的工具。安装部署1:首先安装java(建议1.8)2:releases/logstash-6-6-1。3:tar -zxvf logstash-6.6.1.tar.gz4:bin/logstash -e 'input stdin output stdout '5: bin/lo

13、gstash -f config/logstash-test.confLogstash -f使用-f参数替换命令行中的-e参数bin/logstash -f logstash-simple.confbin/logstash -f logstash-simple.conf -auto- reloadLogstash inputsfile修改配置文件file_stdout.conf 启动Logstash并输入测试数据bin/logstash -f config/file_stdout.confstart_position:指定从什么位置开始也可以指定为从头开始。文件数据,默认是结束位置,logst

14、ash-6.6.1/data/plugins/inputs/file/.sincedb_b3155注意:start_position仅在该文件从未被过的时候起作用,因为logstash在当文件被一个.sincedb文件来跟踪文件的文件的时候会位置,过一次之后,下次就会从.sincedb中的位置,start_position参数就无效了。文件默认在用户目录下。注意一个坑:ignore_older属性,表示忽略老的数据,值默认为86400,表示忽略24小时以前的数据。如果你新一个24小时以上没有被修改过的老文件的话,就算把start_position设置为beginning,也无法获取之前的数据L

15、ogstash inputsredisredis.html修改配置文件redis_stdout.conf启动Logstashbin/logstash -f config/redis_stdout.conf Redis输入测试数据:6379> lpush filebeat aaa:6379> lpush filebeat bbbLogstash outputselasticsearch地址:outputs-elasticsearch.html 修改配置文件stdin_es.conf 启动Logstashbin/logstash -f config/

16、stdin_es.conf默认向es中创建的索引库是logstash-%+YYYY.MM.dd,可以利用es中的索引模板特性定义索引库的一些基础配置查看es所有index命令行:curl -u elastic:123456 '10:9200/_cat/indices?v'删除es 指定indexcurl -u elastic:123456 -XDELETE'10:9200/logstash-2019.04.22logstash读写性能调整优化源数据格式介绍Elk整个项目流程打通filebeatØ 修改配置文件fi

17、lebeat_file_redis.ymlØ 启动redisrootmaster bin# pwd/usr/local/redis/binrootmaster bin# ./redis-server rootmaster bin# ./redis-cliØ 启动filebeat./filebeat -c filebeat_file_redis.ymlØ 查看redis:6379> keys *1) "filebeat" :6379> llen filebeat (integer) 548167El

18、k整个项目流程打通LogstashØ 修改配置文件redis_es.confØ 启动Logstashbin/logstash -f config/redis_es.confØ 报错2019-04-23T10:37:41,427WARN logstash.outputs.elasticsearch Could not index event to Elasticsearch. :status=>400, :action=>"index",:_id=>nil, :_index=>"logstash-2019.04.

19、22", :_type=>"doc", :routing=>nil, #<LogStash:Event:0x14938bb6>, :response=>"index"=>"_index"=>"logsta sh-2019.04.22", "_type"=>"doc", "_id"=>"X_IOSGoB_GogXX3xRW19", "status"=>

20、;400, "error"=>"type"=>"mapper_parsing_exception", "reason"=>"failed to parse field host of type text", "caused_by"=>"type"=>"illegal_state_exception", "reason"=>"Can't get text on a

21、START_OBJECT at 1:9"Elk整个项目流程打通LogstashØ是host内包含name引起的。解决办法就是添加配置进行过滤:主要Ø 解决:重命名字段(redis_es.conf添加如下配置)filter mutate rename => "hostname" => "host" Elk整个项目流程打通KibanaØ 启动Kibanabin/kibanaØ Kibana使用Monitoring:ElasticSearch集群Discovery:数据检索logstash的filt

22、er之grokLogstash中的filter可以支持对数据进行过滤。Ø地址:grok:支持120多种内置的表达式,有一些简单常用的内容就可以使用内置的表达式进行core/blob/master/patterns/grok-patterns示例修改配置文件filter.conf 启动Logstashbin/logstash -f config/filter.conf输入测试数据logstash的filter之grok自定义的grok表达式格式(?<usetime>PATTERN) usetime:表示定义的字段名称PATTERN:此处需要写正则表达式示例修改配置文件fil

23、ter2.conf 启动Logstashbin/logstash -f config/filter2.conf输入测试数据logstash中的if else如果我们在获取日志的话是需要同时多个文件,那这多个文件的规则肯定不一样,那就需要根据不同的文件执行不同的逻辑了。spider日志和tomcat的日数据是属于那个文件规则。假设我们要志,这样就需要的,使用对应的Filebeat多数据源Filebeat-添加log_type字段-测试地址:log.html修改配置filebeat_tomcat_console.yml 修改配置filebeat_spider_console.yml 启动fileb

24、eat./filebeat -c filebeat_tomcat_console.yml./filebeat -c filebeat_spider_console.yml输入测试数据echo '26 - - 30/May/2019:17:38:20 "GET/data/cache/style_1_forum_index.css?y7a HTTP/1.1" 200 2331' >> tomcat.logecho "页面.url:.耗时1000毫秒.当前时间戳:1473056604523" >>

25、 spider.logFilebeat多数据源Filebeat-添加log_type字段-redis修改配置filebeat_tomcat_redis.yml 修改配置filebeat_spider_redis.yml 启动filebeat./filebeat -c filebeat_tomcat_redis.yml./filebeat -c filebeat_spider_redis.yml输入测试数据echo '26 - - 30/May/2019:17:38:20 "GET/data/cache/style_1_forum_index.css?y

26、7a HTTP/1.1" 200 2331' >> tomcat.logecho "页面.url:.耗时1000毫秒.当前时间戳:1473056604523" >> spider.log查看redis:6379> keys *1) "filebeat" :6379> llen filebeat (integer) 1Logstash数据Logstash-spider修改配置文件filter_spider.conf.url:(?<url>S+).耗时正则表

27、达式:页面(?<usetime>0-9+)毫秒.当前时间戳:(?<currenttime>0-9+)运行Logstashbin/logstash -f config/filter_spider.conf输入测试数据页面.url:.耗时1000毫秒.当前时间戳:1473056604523Logstash数据Logstash-tomcat修改配置文件filter_tomcat.conf正则表达式:%COMMONAPACHELOG封装好的规则:patterns-core/blob/master/patterns/grok-patterns运行Logstashbin/logst

28、ash -f config/filter_tomcat.conf输入测试数据26 - - 30/May/2019:17:38:20 "GET/source/plugin/wsh_wx/img/wsh_zk.css HTTP/1.1" 200 1482Logstash 的if else使用Logstash-if else查看es所有index列表命令行:curl -u elastic:123456 '10:9200/_cat/indices?v'删除indexcurl -u elastic:123456 -XDE

29、LETE '10:9200/logstash- 2019.04.22'修改配置文件redis_filter_es.conf 运行Logstashbin/logstash -f config/redis_filter_es.conf命令行查看es数据curl -u elastic:123456 -XGETLogstash 的if else使用Logstash-if elseKibana查看数据bin/kibanalogstash的时区问题logstash中的timestamp时间比我们当前时间相差8个小时这是因为默认情况下logstash生成的时间是使用UTC时间。而我们是UTC+8时区。解决方案是在kibana,在kibana显示的时候会浏览器的当前时区,然后在页面上转换时间内容的显示。Elk海量日志分析平台构建步骤启动redis启

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论