ELK学习记录

学习日志分析相关的技术,参考文档:https://my.oschina.net/itblog/blog/547250

介绍

开源实时日志分析平台ELK能够解决1.日志分散;2.日志量大,查找麻烦。ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。ElasticSearch主要优化日志搜索,Logstash主要解决日志收集,Kiabana主要是可视化。

这三个主要关系如图:

环境搭建:

ELK下载链接:https://www.elastic.co/downloads/

ElasticSearch

启动elasticsearch

遇见的一些问题以及解决办法:

http://www.cnblogs.com/woxpp/p/6061073.html

另外停止elasticsearch的时候不要直接kill -9,最好kill -15,因为一旦数据有问题,就找不出来哪原因(暂时没找到),就要把之前所有数据都删了才行。

安装插件

需要安装个head插件:https://github.com/mobz/elasticsearch-head(旧的版本可以直接通过es自带的plugin安装,但是我的是6.X版本,已经不支持了,只能自己安装)

(外网访问不需要考虑。公司内网没办法使用npm安装,只能搞一个bignet或者是用公司内搞的npm,参考文章

elasticsearch版本过高的话,只能用server的形式和head通信,需要更新下ea-head和es的配置,参考文章。需要配置下es-head的服务端口以及es的端口,需要注意的是,因为我是在虚机部署的ELK,然后在浏览器访问的,所以配置es-head的es的地址,不能写localhost,需要写ip。

可以通过红框判断es和es-head是否交互成功。

分布式的elasticsearch是这样的:

部署多台机器

我是部署了3台机器,每个机器都拷贝同一个版本的elasticsearch,然后更改配置文件,都启动起来就行,主要配置文件比较麻烦。

# cluster同一个集群是相同的
cluster.name: es_cluster
#每个机器的node.name设置不同的来区分
node.name: node0 
path.data: ./data0
path.logs: ./logs

# 当前hostname或IP,这个不能写0.0.0.0,单机的时候可以写,多个机器的时候其他节点会找不到
network.host: 10.64.13.24
http.port: 8200

# 增加跨域的配置
http.cors.enabled: true
http.cors.allow-origin: "*"

# 是否是master,是否存储数据,3台机器一般要有2个master(n/2+1个)
# data我是都存了,可以只有两台机器来存
node.master: true
node.data: true

# 这是其实没搞的太明白,但是不配置会错
discovery.zen.ping.unicast.hosts: ["10.64.13.24", "10.99.204.219", "10.100.47.192"]
#一般要有(n/2+1个)个master
#discovery.zen.minimum_master_nodes: 2

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

Logstash

下载的话上面的链接有,需要注意的几点:

  1. logstash是需要安装在日志所在机器。
  2. 需要添加个配置,要搞清楚input,filter,output的概念,input是怎样输入的,filter是日志过滤的一些方式,output我这里配置的就是传输到elasticsearch上面。配置详解参考文章,很多类似文章,随便搜。
  3. 传输的时候是一行行传输的,文件稍微一丢丢大就卡死了,解决ing ------> 这是机器不稳定的问题,nohup后台启动就没问题了。
  4. 日志合并的问题:使用logstash的Multiline插件,参考文章。需要注意的是,我是使用的正则表达式,logstash的正则是ruby的正则,所以语法搜ruby就好了。

Kibana

自己贼傻逼的开了个9000多的端口号和5000多的端口号,用Chrome连不上,纠结了好多天,后来我浩哥告诉说,外面连基本上是8000-9000的端口才行,我就xxx...

其他的安装之类的参考文章最开始的链接就全部都可以搞定

权限

其中可以再kibana.yml里面配置日志文件

# 指定kibana的log写在哪个文件
logging.dest: ./kibana.log

遇见个报错如下:

原因:kibana异常了,跟elasticsearch链接出问题了,看下日志就找出来了。

其他

下面记录下其他需要考虑的优化方面的问题。

  1. 日志的合并。因为是几条一起过来的,但是合并的好像有点问题,最好是能同一条请求合并一条。  ---->参见logstash
  2. 日志过滤。需要看看拿debug还是什么日志,然后日志取那一部分。
  3. 正则
  4. 模糊匹配改成精准匹配

一些优化方案:

问题:

这个message太长了,然后比如按照request id搜索,结果根本没搜索出来的字段(实际是有的,就是没展示出来),而且有一些字段是无效的,所以打算在logstash(因为是在logstash进行字段合并以及过滤匹配的)上面做些处理,过滤一些字段,然后字段细化下

 

其他的还未通,继续搞,不断更新

filebeat

目前遇到的问题是,logstash能够读取出来日志,但是可能会占用机器太多资源,还有log4j2这个东西我用不明白,导致日志格式很乱。所以考虑直接用filebeat好了。

filebeat下载地址链接

下载之后解压,修改filebeat.yml文件进行配置。

同时更改下logstash的配置,这个参考文章

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值