阳光明媚,昨日完成上线,本想安然入睡,又临时处理问题,弄的失眠,早晨刚到公司就得知,内存溢出,【微服务刚上线,监控还在完善】,上去一看进程还在,日志产生大量报错,与开发简短沟通后,重启服务,业务临时恢复,过了几分钟又出现error,顺势添加进程管理器,形成监控图表,发现内存有溢出现象,当前设定的最大内存参数已无法支持,业务运行,与老大沟通,提升内存到1G,目前正常,接下来就是来聊聊这次时间背后,我们运维应该做写什么???
一、添加java进程的监控{CPU 内存 }
[root@Micro-service01 ~]# ps -aux|grep "mx1024m"|grep "notify"
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 1344 7.6 2.1 4788412 716492 ? Ssl 10:40 1:12 java -Xms128m -Xmx1024m -jar fuqinfinance-service-notify.jar
可以写个shell 脚本,只要内存大于设定阈值 1024M (1048576 kb) 就报警
二、添加进程管理器
2.1 添加监控
2.2 监控阈值调整
三、添加微信报警推送功能
上面的shell脚本,可以配置zabbix进行监控,如果觉得麻烦,可以直接掉用微信的api接口,进行发送告警。
企业微信报警配置方法
配置上面的shell脚本判断内存,拟写了下面的脚本
#!/bin/bash
#---------------------------------------------------------
# $Name: check.sh
# $Version: v1.0
# $Author: qiuyuetao
# $organization: www.dgstack.cn
# $Create Date: 2019-5-6
# $Description: Check Queue, Yepay Call, DB Lock
#---------------------------------------------------------
DATE=`date +%F-%H-%M`
#source ~/.bash_profile
source /etc/profile
export PATH=/www/jdk1.8.0_60/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#WeiXin ENV-------------------------------------------------------------------------------------
CropID='wx3ac3fe****de'
Secret='-RhtEtW1hU-0D46***7lNmWv2MRkCvIc'
APIURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
TOKEN=$(/usr/bin/curl -s -G $APIURL | awk -F\" '{print $10}')
POSTURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$TOKEN"
##WeiXin body--------------------------------------------------------------------------------------
function body() {
local int AppID=1000006
local UserID=用户id名
local PartyID=2
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'"$AppID"\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
##Check Queue--------------------------------------------------------------------------------------
function ckqueue() {
CKLIST="/server/scripts/check-vfw-mem/cklist.txt"
PIDLOG="/server/scripts/check-vfw-mem/ckqulog.txt"
LOG="/server/scripts/check-vfw-mem/log.txt"
for line in `cat $CKLIST`
do
ps aux|grep -w $line|grep "Xmx1024"|grep -v "grep"|awk '{print $6}'> $PIDLOG
if [ `cat $PIDLOG` -gt 81920 ]; then
echo "---------------------------------------"
echo "微服务01-"$line"-"$DATE"-内存使用率过高,为防止内存异常,请人为介入检查" >>$LOG
echo "---------------------------------------"
sleep 1
Msg="service-notify Memory user High-$DATE "
echo "$(body guozhiheng0123 $2 )" $POSTURL
/usr/bin/curl --data-ascii "$(body guozhiheng0123 $2)" $POSTURL
fi
done
}
##Main--------------------------------------------------------------------------------------
main(){
ckqueue;
}
main
3.2 测试报警接收
3.3 定时任务
手动执行脚本没问题,在添加定时任务即可
####vfs 监控 每10分钟1次 检测内存的使用量###
*/10 * * * * sh /server/scripts/check-vfw.sh >/dev/null 2>&1
四、微信推送中文乱码
主要是文件的字符编码问题
,通过如下步骤进行调整
1,查看当前系统字符集(保证终端、系统、文件字符集统一
)
[root@Admin ~]# locale
[root@Admin ~]# echo $LANG
zh_CN.UTF-8
如果没有进行安装
2,查看文件编码格式
vim 文件 在最后执行下面命令
:set fileencoding
3,处理方法:单文件编码转换
:e ++enc=utf-8
#然后wp 保存
4,网上另外一种方法
3.处理方法二(vim配置文件修改)
vim /etc/vimrc
强制使用以上编码格式打开文件,一劳永逸
验证结果
以上是我的方法,如果您有更好的方式,可以告知我,谢谢。
如果是代码问题,请转给开发处理。
- QQ精品交流群
-
- 微信公众号
-