在对HANA做troubleshooting的时候,会遇到类似这样的问题:某个告警出现的频率比较低,出现几个小时之后会自动恢复,想要了解这几个小时之间发生了什么,SAP支持又要求提供在问题发生期间的runtime dump。这个就比较讨厌了。为了解决这个问题,写了个小脚本,通过在OS层面调用hdbsql实现,代码如下:
#!/bin/bash
hdbsql -U <hdbuserstore name> "select count(*) from "_SYS_STATISTICS"."STATISTICS_ALERTS_BASE" where ALERT_TIMESTAMP > (SELECT ADD_SECONDS(CURRENT_TIMESTAMP, -3600) FROM DUMMY) and ALERT_ID=75" >> /tmp/triggerdump/$(date +%Y%m%d%H).log 2>&1
result=$(sed -n '2p' /tmp/triggerdump/$(date +%Y%m%d%H).log)
if [ $result -gt 0 ]; then
mail -s "HANA ID75 Alert report" test@test.com < /tmp/triggerdump/$(date +%Y%m%d%H).log
python /usr/sap/SID/HDB00/exe/python_support/fullSystemInfoDump.py --rtedump --tenant=SID --sets=3 --interval=5 --services=indexserver
else
rm -f /tmp/triggerdump/$(date +%Y%m%d%H).log
fi
exit 1
这个脚本中的SQL是捕捉在当前时间到3600秒之前是否产生了告警ID为75的记录。如果产生,则运行runtime dump并发送邮件通知管理员。根据需要可以调节捕捉的频率和捕捉的ID,注意同时在cron job更改脚本的运行频率。脚本owner需要为sidadm,并有x权限。