最近除了投简历也没啥事情做, 闲的蛋疼, 刚搭好了 es 丢哪里白白占着内存还不如利用起来, 这次还是那 Minecraft 的数据开刀, 这次先是原始的日志.
Preview
目的
使用elk分析mc日志主要有3个目的
问题排查
监控预警
数据分析
日志文件
Minecraft 服务器的日志只需要分析 latest.log
就行, 我们服务器的服务端Uranium
(万年1.7.10)
这里我们对日志的格式进行一个处理, 我们进行修改logstash配置时, 需要经常重新导入日志进行重新index. 添加一个日期方便回溯原始文件(不处理也行)
加载中.....
使用7zip 右键以打开压缩包的方式打开Uranium-dev-5-B271.jar
(如果是其他的端, 也是一样), 修改里面的 log4j2.xml
- 将里所有的
[%d{HH:mm:ss}]
修改为[%d{yyyy-MM-dd:HH:mm:ss}]
增加年月日的信息, - 调整
logs/latest.log
的RollingRandomAccessFile
, 如果需要及时的将log传递给es需要增加一个immediateFlush="true"
(出现日志立即刷新到磁盘)的属性(据说这个属性性能损失大), 或者设置一个较小的buffer
然后把修改好的文件, 丢回到jar包里面
Logstash 配置
安装过程忽略, 这个是对部分常用日志进行了针对的处理
- 玩家登陆,离开信息, 执行命令, 发言消息
- TPS, 实体, Tick, Tiles (定时执行 gc, um tps 等命令)
- 报错信息
加载中.....
kibana
将日志导入到es后, 使用kibana随便查看一下信息
Preview
效果还是蛮不错的
比如搜索一下因为反作弊mod
被踢出游戏的玩家, 设置reason.keyword
= 请勿自行安装mod
加载中.....
Preview
注意
要注意一点 latest.log
这个文件, 服务器重启之后, 会重新创建, 但是! logstash 会记录上次读取到的位置, 所以说, MC服务端一旦重启需要手动删除data\plugins\inputs\file\.sincedb_*
这些缓存文件, 重置读取进度, 然后重启 logstash