ELK学习10_ELK系列--实时日志分析系统ELK 部署与运行中的问题汇总
前记:
去年测试了ELK,今年测试了Storm,最终因为Storm需要过多开发介入而放弃,选择了ELK。感谢互联网上各路大神,目前总算是正常运行了。
logstash+elasticsearch+kibana的搭建参考:http://wsgzao.github.io/post/elk/。由于搭建过程比较简单就不赘述,主要分享几个坑。
正文:
1、日志如何获取
无论是storm方案还是elk,都涉及这个关键问题。为减少和运维、开发的交叉,尽可能独立、快速,加之当时发现了justniffer这个“神器”,遂决定采用交换机流量镜像的方式。
但是在经历了申请机器、增加网卡之后,痛苦的发现存在掉包问题。一旦流量超过30--40M狂掉包,就别提TCP流还原了。justniffer是调用修改过的libnids,而libnids调用libpacap。因此转向libpcap优化。
看了很多国内外的论文和研究文档,使用pf-ring会有大幅改善掉包情况。在同事协助下经历了N次的源码调试后,无奈的发现:即使启用了pf-ring,掉包情况依然。可能是网卡太差了。。。
询问了青藤云安全的大牛,他们的包捕获与流还原技术不卖- -|
由于涉及justniffer、libpacap、pf_ring的版本对应问题、网卡驱动和源码调试,上述过程耗时其实非常长,最终的结果让人心碎,自己能力不够啊
无奈放弃流量镜像,转而采用在应用服务器上安装客户端的做法。如果有童鞋有好的方案,希望能分享,谢谢!
2、缺乏访问权限控制
由于kibana默认没有设置访问权限控制,因此,直接访问url即可访问。同时elasticsearch也缺乏权限控制,提交相关请求即可查看索引、模板,删除索引。 所以需要设置权限保护,分2个层面:
1)阻止未授权的用户对ELK平台的访问
2)为用户设置的index访问权限
详情参考:http://eligao.com/shield-on-elasticsearch/
3、无法搜索特殊字符
由于混杂了kibana、elasticsearch、lunece,导致这个问题比较复杂。谷歌之可以发现,很多内容都是提到:在kibana中搜索时,搜索特殊符号需要使用转义符号转义。但是问题是方法无效!!!
幸得搜索同事指导,加上自己学习,基本搞清楚情况:
1)Kibana的搜索完全是传递给Elasticsearch处理的,因此问题出在Elasticsearch;
2)在创建索引的时候,Elasticsearch默认的索引模板使用了默认的分析器(analyzer)standard对logstash提交的数据进行分析。,而standard默认的分词器(tokenizer)是会剔除特殊字符。也就是说,特殊字符在建立索引的过程中就被剔除了,因此即使使用转义符号也无法搜索特殊字符;相关概念解释见文末说明。
解决方法:
1)定制分析器
官方文档参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html。
借助Elasticsearch提供的nGram分词器,定制了一个单字符分析器。
官网的做法是通过API提交。我偷个懒,直接修改了Elasticsearch的配置文件elasticsearch.yml,在最后增加:
index:analysis:tokenizer:my_ngram_tokenizer:type: nGrammin_gram : 1max_gram : 1token_chars : []analyzer:special_analyzer:type: customfilter: [lowercase]tokenizer: my_ngram_tokenizer
修改后,需要重启Elasticsearch
2)修改默认模板
(不推荐新增索引模板,使用非logstash开头的索引模板会导致raw字段丢失。如果已经遇到这个问题,参考https://bbrauns1.wordpress.com/2015/06/04/missing-raw-fields-in-logstashkibana-after-new-index-creation/)
注意,通过http://localhost:9200/_template/logstash?pretty获取的索引模板和我们需要改的索引模板稍有不同,去掉 "logstash" : {及倒数第二个}保存成logstash.json
修改上面获得的模板,主要是修改dynamic_templates部分,默认的模板是将所有string类型字段内容进行分析和索引,使用的是默认的standard分析器。同时对raw字段不分词(如cookie.raw等,是logstash自动生成的)
参考官方文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/custom-dynamic-mapping.html
"mappings" : {"_default_" : {"dynamic_templates" : [ {"string_fields" : {"mapping" : {"index" : "analyzed","omit_norms" : true,"type" : "string","fields" : {"raw" : {"index" : "not_analyzed","ignore_above" : 256,"type" : "string"}}},"match" : "*","match_mapping_type" : "string"}}
因此,我们需要增加指定特定字段,比如:
{"request" : {"mapping" : {"index" : "analyzed","analyzer" : "special_analyzer","type" : "string","fields" : {"raw" : {"index" : "not_analyzed","ignore_above" : 256,"type" : "string"}}},"match" : "request","match_mapping_type" : "string"}},
代表我们对request字段内容使用special_analyzer进行分析,同时保留对raw不分析。如果缺少二次映射,则无法获取raw字段,则会对visualize造成影响。
如果不需要对相关字段进行是分词,则如此配置:
{"cookie" : {"mapping" : {"index" : "not_analyzed","type" : "string","fields" : {"raw" : {"index" : "not_analyzed","ignore_above" : 256,"type" : "string"}}},"match" : "cookie","match_mapping_type" : "string"}},
3)提交索引模板:
cd /path/to/logstash.json
curl -u user -XPUT localhost:9200/_template/logstash -d @logstash.json
成功后,会返回:{"acknowledged":true}
4)删除索引,索引模板
查看现有的所有索引:http://localhost:9200/_cat/indices?v
删除所有索引:curl -u user -XDELETE localhost:9200/index
通过kibana的设置功能,删除之前建立的index pattern
5)重新添加index pattern
注:配合kibana的搜索语法,使用双引号""搜索完全匹配,即可解决搜索特殊字符的问题。如果不带双引号,则会搜索字符串中的每个字符。
4、logstash无法启动,提示bind address
原因:
1)配置目录下存在多个配置文件,而logstash会加载所有conf格式的文件
解决方案:删除不必要的文件,保留一个conf文件即可
2)进程未结束
解决方案:kill -9 pid 强制结束进程,再启动服务即可
5、字段无法解析 _grokparsefailure
kibana无法解析出相应的字段
原因:正则存在问题或者日志不符合正则格式
解决方案:在http://grokdebug.herokuapp.com/上调试正则,同时确保日志中不存在多余空格等异常
还有一种常见原因:空格、空格、空格,重要的事情说三遍!
6、日志量大,磁盘紧张
日志量增加非常快,磁盘空间不够用怎么办?可以通过删除较早的索引来缓解
因此,logstash的配置文件中最好早设置索引带有时间后缀:如logstash-%{+YYYY.MM.dd}"
说明:
分析器相关概念:全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词), 文档中包含了几个这样的Term被称为Frequency(词频)。 引擎会建立Term和原文档的Inverted Index(倒排索引), 这样就能根据Term很快到找到源文档了。 文本被Tokenizer处理前可能要做一些预处理, 比如去掉里面的HTML标记, 这些处理的算法被称为Character Filter(字符过滤器), 这整个的分析算法被称为Analyzer(分析器)。
详情请参考:http://www.cnblogs.com/buzzlight/p/elasticsearch_analysis.html
7、Kibana4 dashboard无法保存拖动的visualization位置
原因:
解决方法:
手动在设置中,手动编辑dashboard的json,调整排序
参考:https://github.com/elastic/kibana/issues/3328
8、Courier Fetch: shards failed
原因:
解决方法:
编辑elasticsearch.yml,添加threadpool.search.queue_size: 10000
重启elasticsearch即可解决
参考:http://stackoverflow.com/questions/30053967/courier-fetch-shards-failed
9、kibana瓦片图(Tile map)无法使用国内地图
原因:
kibana自带的是地图是openstreetmap,http://www.openstreetmap.org。需要更换成国内地图。
解决方法:
https://otile{s}-s.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpeg
为
http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}
说明:网上搜索到内容为style=8,内容空白,经过自己测试,确认style=7可用
原文来自:
http://www.cnblogs.com/phoenix--/p/4935778.html
和
http://www.cnblogs.com/phoenix--/p/5000165.html
来源:http://blog.csdn.net/wang_zhenwei/article/details/50372000
ELK学习10_ELK系列--实时日志分析系统ELK 部署与运行中的问题汇总相关推荐
- 实时日志分析系统-ELK
一.ELK简介 1.什么是日志 日志就是程序产生的,遵循一定格式(通常包括时间戳)的文本数据. 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志. 应用日志.安全日志.这些日志分散地存储在不 ...
- 大数据主题分享第三期 | 基于ELK的亿级实时日志分析平台实践
猫友会希望建立更多高质量垂直细分社群,本次是"大数据学习交流付费群"的第三期分享. "大数据学习交流付费群"由猫友会联合,斗鱼数据平台总监吴瑞诚,卷皮BI技术总 ...
- 运维实操——日志分析系统ELK(中)之logstash采集数据、伪装rsyslog、多行过滤、grok切片
日志分析系统ELK(中)之logstash 1.什么是logstash? 2.Logstash安装 3.logstash简单命令行测试 4.logstash文件测试 (1)命令行输入,输出到文件 (2 ...
- 企业级日志分析系统ELK(Elasticsearch , Logstash, Kibana)
企业级日志分析系统ELK(Elasticsearch , Logstash, Kibana) 前言 一.ELK概述 1.ELK日志分析系统 2.ELK日志处理特点 3.Elasticsearch概述 ...
- 分布式实时日志分析解决方案ELK部署架构
分布式实时日志分析解决方案ELK部署架构 参考文章: (1)分布式实时日志分析解决方案ELK部署架构 (2)https://www.cnblogs.com/zhangjianbin/p/7965867 ...
- linux流式访问日志,流式实时日志分析系统的实现原理
我们知道网站用户访问流量是不间断的,基于网站的访问日志,即 Web log 分析是典型的流式实时计算应用场景.比如百度统计,它可以做流量分析.来源分析.网站分析.转化分析.另外还有特定场景分析,比如安 ...
- 基于Flink的实时日志分析系统实践
前言 目前业界基于 Hadoop 技术栈的底层计算平台越发稳定成熟,计算能力不再成为主要瓶颈. 多样化的数据.复杂的业务分析需求.系统稳定性.数据可靠性, 这些软性要求, 逐渐成为日志分析系统面对的主 ...
- ELK实时日志分析平台环境部署--完整记录
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- 分布式实时日志分析解决方案 ELK 部署架构
一.前言 ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Beats.Logstash.Elasticsearch.Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决 ...
最新文章
- 遮罩,在指定元素上进行遮罩
- vivado使用自带IP核和创建自己定义的IP核
- QT的QGLFunctions类的使用
- MySQL 字符集相关问题
- 做数据分析还在死磕Excel?用这个简单工具,摆脱复杂函数和公式
- [BZOJ1565]植物大战僵尸
- 洛谷P2114 [NOI2014]起床困难综合症
- redis 高可用切换_Redis高可用架构演进
- 推荐免费的Windows Mobile截屏软件
- Linux中Docker部署MySQL
- CopyOnWriteArrayList原理
- 【Caffe安装】Caffe安装(有GPU)--wanglei
- elasticjob接入方式和管理端使用
- MapInfo中MIF文件和MID文件的格式
- 融云 即时通讯 集成相关问题
- 广州华龙展贸考场——科目三
- SVN commit时,提示“remains in conflict”错误:
- 最长上升子序列 CSU - 1047 ( LIS LCS )
- LabVIEW图表之双坐标轴
- 计算机电缆芯数,DJYVP22电缆|电线(直径、重量、芯数)
热门文章
- Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家
- linux redis -p,linux 安装redis
- Python面向对象案例汇总
- 打开高效文本编辑之门_Linux Awk之条件判断与循环
- Hadoop手动升级HA配置手册
- Slax Linux安装——备忘篇
- 程序设计中的驼峰原则
- Linux之命令行快捷键(记住的我没写)
- PCB设计必知:布局及设计规范
- 测试微信小程序图片预览功能(因初步接触之了解到了不能使用本地图片,以下为公司产品图片)...