跳到主要内容

使用elk科学的分析Minecraft日志[1]

· 7 分钟阅读
月子喵

最近除了投简历也没啥事情做, 闲的蛋疼, 刚搭好了 es 丢哪里白白占着内存还不如利用起来, 这次还是那 Minecraft 的数据开刀, 这次先是原始的日志.

log日志
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.logRollingRandomAccessFile, 如果需要及时的将log传递给es需要增加一个 immediateFlush="true"(出现日志立即刷新到磁盘)的属性(据说这个属性性能损失大), 或者设置一个较小的buffer

然后把修改好的文件, 丢回到jar包里面

Logstash 配置

安装过程忽略, 这个是对部分常用日志进行了针对的处理

  • 玩家登陆,离开信息, 执行命令, 发言消息
  • TPS, 实体, Tick, Tiles (定时执行 gc, um tps 等命令)
  • 报错信息
加载中.....

kibana

将日志导入到es后, 使用kibana随便查看一下信息

log日志
Preview

效果还是蛮不错的

比如搜索一下因为反作弊mod被踢出游戏的玩家, 设置reason.keyword = 请勿自行安装mod

加载中.....

反作弊踢掉的用户
Preview

注意

要注意一点 latest.log这个文件, 服务器重启之后, 会重新创建, 但是! logstash 会记录上次读取到的位置, 所以说, MC服务端一旦重启需要手动删除data\plugins\inputs\file\.sincedb_*这些缓存文件, 重置读取进度, 然后重启 logstash