AnyRobot-Java 虚拟机堆内存不足,引起集群版解析规则未生效或解析失败

2019-07-01

关键字

日志解析,集群,解析规则

 

适用产品

· AnyRobot 3.0.7

 

问题描述

AnyRobot Web 界面的,点击数据管理,打开对象管理标签页,在对象管理页面中选择解析规则,然后在解析规则页面执行添加、修改解析规则操作并应用。传入日志数据后,日志并未解析,或者没有按照修改后的规则进行解析。

 

问题影响

日志无法正常解析,后续分析无法进行。

 

问题原因

此问题因 Java 虚拟机堆内存不足而导致。AnyRobot 日志解析应用 Logstash 运行在 Java 虚拟机上,随着解析规则的增加,可能出现初始堆内存不够的情况,导致解析规则并没有被加载到应用程序中,无法解析新传入的日志。

 

解决方案

步骤一,首先,通过查看 Logstash 的运行日志确定故障是否由内存不足引起,确定是内存不足之后,修改内存配置。

1. 确定Logstash的持久卷目录

1)浏览器地址栏中输入 http://master_ip:8081,打开 Marathon 页面,点击 logstash-dcos-5.2-confd-anyrobot-9601 应用,进入 Configuration 项。


2) 确定持久卷目录为 /uservolume/Mesos-path26。


      

 2. 进入主机持久卷目录最里层,查看相关日志:

1) 根据步骤1中得到的持久卷录,使用 cd 命令,切换到下图所示目录中。

cd /uservolume/Mesos-path26/volumes/roles/marathon-framework/logstash_logstash-dcos-5.0.2-confd-node179-9601#logstash-confd#afa92c74-860c-11e9-9e63-00505682372f


2) 使用命令 tail -f supervisor.log 查看日志文件, 当看到“ERROR: Your application userd more memory than the safety cap of 500M”时,可以确定是内存不足导致的解析规则加载失败。


     

3. 保存现有 Logstash 部署参数

1) 在 Marathon 界面,点击 Edit 按钮编辑,并在弹出的编辑页面点击JSON Mode,复制部署参数。



4. 点击 Destroy 按钮删除 logstash-dcos-5.0.2-confd-anyrobot-9601 任务:

    

5. 重新添加 Marathon 任务,并修改内存参数:

1)点击 Create Application。


2)在弹出的编辑页面,同步骤3,点击进入 JSON Mode,粘贴步骤3中复制的配置参数。

 

步骤二,然后,根据需要,改大 mem 项,以及环境变量中的 LS_JAVA_OPTS。

  mem : 单位 MB


          LS_JAVA_OPTS :单位 MB       

   例如,可将其中的 1024 修改为 1668,修改值不能超过设置的 mem 值。


    

步骤三,最后,点击对话框右下角的 Create Application 按钮,创建更新后的任务。


 

更多信息

应用规则解析日志时,需先给解析规则绑定过滤条件,后上传日志。

解析规则绑定过滤条件操作如下:

1.  点击侧边栏的数据管理,进入数据管理页面,点击对象管理二级标签页,默认进入解析规则对象管理页面

2.  选择待应用的解析规则,点击右侧的编辑按钮,进入解析规则编辑页面

3.  过滤条件区域,点击自定义,输入字段名和匹配的字段值。如:type == AnyShare操作日志。点击添加按钮

4.  完成过滤条件添加后,点击解析规则页面下方的保存按钮,保存编辑完成操作。

 

联系我们
在线咨询 400 821 6055