ZMC KPI Missing 情况分析和处理
KPI MISSING常见原因:
1.KPI探针任务配置不正确
原因:
现场探针均采用导入方式,ZMC提供的探针,有些任务属性为空,有些属性跟项目现场并不一致,需要现场根据项目实际情况修改,但是现场忽略了这一步,导致MISSING。比如132探针。
解决方法:
客户端上查看agent_probe_app.log日志,使用“KPI_XXX”遍历日志,查看日志提示,会发现如路径下无文件,监控对象不存在等信息,到web页面进行修改即可。
2.KPI探针配置正确,业务侧没有产生流量文件
原因:没有生成流量文件,或者流量文件路径配置错误。
对于KPI_400,40302,40304,430,506,510等业务指标,是通过采集和解析流量文件来生成KPI数据,这些KPI需要业务侧输出,并且在ZMC中配置Path和Filename Mask,需要根据这两个配置项去查找原始的流量文件。
如果没有流量文件则需要在业务侧打开相应的开关,如果有生成,则需要检查文件格式是否匹配。
3.客户端被卸载,但是客户端任务并没有被删除
原因:
服务端依据任务列表来检查KPI表,实际上客户端被卸载,无采集数据,导致MISSING。
解决方法:
先删除probe agent对应客户端上所有的探针任务,删除后需要执行Apply操作。
然后去application Environment下面删除客户端信息,提示客户端有关联,删除对应关联后再删除。
4.网络故障,客户端数据传输失败
解决网络问题。是否ftp/sftp端口未开。
5.客户端进程挂死
内存不足,文件系统不足,版本bug,都有可能导致进程无法正常运行,场景分析:
>空间不足,df -h命令查看分区,文件系统不足导致无法生成日志和数据
>内存不足,检查日志,遍历Java heap space(find zmc_agent/control -name heapdump*.phd)
>简单的进程被误kill
>进程还在,僵死不工作,检查可发现客户端进程日志不再更新
解决方法:
分区空间:清理分区文件系统,给客户端充足的存储空间。
内存空间:修改/zmc_agent/control/agentadmin.sh文件,将APP_XMX_SIZE的值放大,不能超过512M。
进程被误杀:添加Crontab定时任务检查客户端进程状态
进程僵死:重启客户端进程
6.ZMC数据库表空间满,写入失败
ZMC通常使用免费的Oracle XE数据库,只有11GB的表空间容量,表空间满的情况下很容易导致所有的KPI写入失败,同时也无法生成KPI missing的告警。
检查服务端server_app.log和server_sql.log会发现相关日志:
2247681974 2017-08-19 16:45:16.933 [KPIProcessorThread] ERROR c.z.z.c.s.i.CatchServiceExceptionInterceptor—> Fail to recode error log to db.
Caused by: java.sql.SQLException: ORA-01653: unable to extend table ZMC.TFM_ERROR_LOG by 128 in tablespace TAB_ZMC
Caused by: java.sql.SQLException: ORA-01654: unable to extend index ZMC.IDX_KPI_104_KPI_DATE by 1024 in tablespace TAB_ZMC
Rollback.
7.客户端任务执行超时,数据积压
场景分析:
或者系统性能,或者监控对象文件过大数量过多,或者由于版本问题探针不完善,使任务执行时间过长,导致其他任务积压,不能及时的入库。
解决方法:
查看agent_probe_app.log日志,遍历EXECUTE TIME,找到执行超长的任务。
8.告警审核超时,审核时,表中数据已经不存在。
执行SQL检查:
select * from kpi_104 t where t.app_env_id = &appenvid and t.create_date between (sysdate-1) and sysdate order by t.create_date desc;
ZMC数据库性能较低,来不急处理的时候,通常会导致审核超时,进而产生告警。
解决方法是定期清理数据,重建索引(rebuild online),优化数据库配置,或者更新新的硬件。
9.大量的日志和流量文件导致客户端来不急处理
部分项目业务侧每秒生成一次流量记录输出到流量文件,大量的日志和流量文件都没有清理过,最多可能会达到7千多个流量文件没清理。开始配置和启用ZMC采集日志和流量文件的时候,ZMC探针会扫描所有的流量文件,无法及时处理完成,导致无法生成KPI数据。
解决方法:检查探针对应的文件系统目录中的文件数量。
常见KPI错误的处理方法:
KPI_102
KPI_102用于采集和监控端口连接状态和连接数,格式是 port;port2;port3,现场想采集哪个端口的信息就配置哪个端口。采集命令是’netstat -an’。
没有配置端口,或者配置了无效的端口,会导致采集不到kpi102, kpi模板里面默认的端口你可能没有,所以导致kpi missing的告警。
比如OCS应该配置监听端口5000,5001,OLC应该配置监听端口6000;6001;6002;6003等。
KPI_104
KPI_104的探针没有配置项,执行和解析‘sar -d 1 3’命令的结果,常见的原因是没有执行权限,需要检查OS类型以及命令执行结果格式。检查探针执行日志(agent_probe_app.log)中有没有发生错误,在需要的时候可以使用cmd_config.txt来获取命令执行结果。
KPI_110
KPI_110探针采集Process CPU,要配进程名称作为监控对象,常见的问题是没有配置进程或者配置的进程名不正确。
解决方法:要根据采集目标环境运行的进程填Process List,不填没有数据的。
KPI_132
KPI_132用于采集网络ping的响应时间和连通信息,使用了第三方的PingExt组件,该组件是以源码(zmc_agent/control/plugin/ping)形式提供,目前需要自行编译(./build_linux.sh)和部署(./deploy.sh),检查zmc_agent/control/PingExt是否顺利生成。对于没有编译器的环境,可以从相同OS类型的机器上拷贝(ftp/sftp/scp)一个PingExt过来。对于找不到相同环境的,可以使用版本中预编译好的文件PingExt.AIX.s,PingExt.Lin.s等,用root用户执行deploy.sh复制到zmc_agent目录使用。
PingExt部署好之后,还需要检查探针的Process List要配置正确的IP地址,不填没有数据的。
KPI_136
KPI_136的工作原理是向配置的目录(mount point)写一个512Bytes的小文件,根据获取返回的时间测算IO Write的性能,通常不应该超过100ms,默认配置是500ms,常见的原因是没有配置Mount Point导致无法生成KPI数据。
KPI_212
现在现场212报kpi missing,我看这个探针采集数据库本地事务信息,212探针采集的sql应该是:
SELECT local_tran_id, fail_time, host, db_user
FROM dba_2pc_pending
where state = ‘prepared’;我手动查看CC、rb和nms数据库发现都没有数据,应该就是导致kpi missing的原因,麻烦问一下这个探针在哪种场景会产生啊?
会产生数据
你的是采集未提交的长事务
dba_2pc_pending没有记录应该是正常的情况吧
没有更好
因为这个探针的采集周期比较长,默认的1 day,所以感觉也采集不到什么数据吧
有什么办法去解决他kpi missing的问题么
你可以让它没采集到不告警
你这KPI Missing的问题,需要配置屏蔽规则
KPI_266
TimesTen数据库的DataStore状态,通过KPI_266采集,该探针必须配置在tt用户下,或者向ocs用户分配tt用户组的相关权限。
KPI_284
现象通常表现为配置探针并且生效后数据库KPI_284表都没有,通常是QMDB的连接串设置错误,请手工执行mdbSQL命令检查连接串是否正确。
KPI_286
KPI_286通过链接到QMDB数据库后执行SQL查询系统表获取内存使用信息,保存到KPI_286表,通常是QMDB的连接串设置错误,请手工执行mdbSQL命令检查连接串是否正确(同KPI_284)。
KPI_288
KPI_288通过链接到QMDB数据库后执行SQL查询系统表获取单张表的内存使用信息,保存到KPI_288表,通常是QMDB的连接串设置错误,请手工执行mdbSQL命令检查连接串是否正确(同KPI_284)。
KPI_400
kpi400 突然采集不到数据了 一直报文件没改变,可能的情况是你配了另一个任务,这个任务也读这个文件。
对于KPI采集的说明是:一个agent里只能有一个任务处理相同的文件
否则会冲突,所以首先检查mask配置有没有冲突
KPI_40302
PHUB使用KPI_40302探针监测业务TPS,但是生成数据很不稳定:十点十五的时候我重启了一下客户端,生产了几十条记录。然后正常了一段时间,但是后面又停止生成数据了。而且不是每次重启都有这种效果。
经常就卡住了,然后某次重启才能生效
这段时间在这个agentinfo_olc_caps*里可以找到记录的
可以看到流量文件还是稳定输出,daemon显示心跳还行,Alarm页面没有Heartbeat告警,/zmc/zmc_agent/control/probedata/swap/undeal有UNdeal的文件,Undeal里面确实有这个task。
这种情况首先需要检查探针的Path和File Mask配置是否正确,然后检查有没有多个探针处理同一个文件的情况。
KPI_40304
KPI_40304同KPI_40304的情况类似,KPI丢失的情况首先需要检查探针的Path和File Mask配置是否正确,然后检查有没有多个探针处理同一个文件的情况。
KPI_406
需要注意的是KPI_406属于定制需求,只适用于V71定制版本,如果错误的适用版本, 可能会导致无法采集到数据,或者无法识别文件格式,导致不能生成结果数据。
KPI_480
业务KPI_480探针采集QDG的流量文件(info/ServerStatic_yyyymmdd.txt),在出现KPI missing的时候首先需要检查流量文件的目录配置是否和项目的一致。
KPI_502
业务KPI_502探针采集UIP的流量文件,需要配置的部分包括文件路径和文件名(格式掩码),同时选择列分隔符,在出现KPI missing的时候首先需要检查流量文件的路径名称和内容格式是否和定义的一致。
KPI_510
业务接口数据KPI_510探针采集Dubbo接口生成的流量文件,需要配置的部分包括文件路径和文件名(格式掩码),同时选择列分隔符,在出现KPI missing的时候首先需要检查流量文件的路径名称和内容格式是否和定义的一致,其次检查该路径下有没有生成文件,或者文件有没有更新。