# 宝兰德BES中间件一键巡检

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:19:00.000Z
> 分类: 解决方案
> 标签: 网络, AI, 数据库
> 原文链接: http://117.50.162.249:3000/yun/articles/1541

---

# 宝兰德BES中间件一键巡检

> 来源: https://www.ucloud.cn/yun/129387.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:19

宝兰德BES中间件一键巡检

**点击上方“IT那活儿****”公众号，关注后了解更多内容，不管IT什么活儿，干就完了！！！**

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_000.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_001.png)

随着宝兰德BES中间件的逐步上线，对其各实例的健康状态进行监控巡检是重中之重，**本文详细说明下我们在自动化运维平台部署的宝兰德BES一键巡检**。

****“******A********MP平台********简介********：**********自动化运维管****理平台--内置大量运维操作原子场景，支持常见数据库、中间件、云平台、网络设备等运维操作自动化能力****。******支撑八大运维场景自动化，覆盖常见运维工作**。****”****

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_002.png)

## **巡检对象及内容**

**一键巡检的目的是**针对宝兰德BES的CPU状态、SERVER运行状态、JVM堆运行情况、线程运行情况、队列运行情况以及JDBC的运行状态进行一个全面巡检。

## **数据来源**

巡检脚本的原始数据为BES监控程序采集的bes.log日志，该日志每十秒写入新的采集数据，如下图所示：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_003.png)

## **实现脚本**

脚本通过对上述提到的bes.log日志进行数据提取加以判断。

```
#!/bin/bash##获取要巡检的最新一轮的数据信息LOG_DIR="/bes/monitor_shsnc/BES95xMon.V01/bin"V_TIME_1=`cat $LOG_DIR/bes.log | tail -1 | awk -F "[" {print $2}| awk -F "]" {print $1}`V_TIME_2=`date -d "10 second ago $V_TIME_1" +"%Y-%m-%d %H:%M:%S"`V_LOGNUM=`cat $LOG_DIR/bes.log|grep "$V_TIME_2"| wc -l`##定义出参，0代表巡检结果正常，反之则为异常。MONI_CPU_COUNT=0MONI_STATUS_COUNT=0MONI_JVM_COUNT=0MONI_THREAD_COUNT=0MONI_QUEUE_COUNT=0MONI_JDBC_COUNT=0##判断各项巡检指标是否正常if [ $V_LOGNUM -eq 24 ]thencat $LOG_DIR/bes.log | grep "$V_TIME_2" |grep -v "Connected to" |while read linedoInstanceName=`echo ${line} | awk -F | {print $2}`MonitorItem=`echo ${line} | awk -F | {print $3}`if [ "${MonitorItem}" == "Status" ] ##对SERVER状态进行判断thenStatus=`echo ${line} | awk -F | {print $4}`if [ "${Status}" != "OK" ]then((MONI_STATUS_COUNT++))echo "${InstanceName} Status is ${Status},Please check! "fielif [ "${MonitorItem}" == "CpuUsed" ] ##对CPU运行状态进行判断thenCpuUsed_1=`echo ${line} | awk -F | {print $4}`CpuUsed=`awk BEGIN{printf ($CpuUsed_1)*100}`if [ $CpuUsed -ge 20000 ]then((MONI_CPU_COUNT++))echo "${InstanceName} CpuUsed is ${CpuUsed},Please check! "fielif [ "${MonitorItem}" == "JVMUsed" ] ##对JVM运行状态进行判断thenJVMUsed=`echo ${line} | awk -F | {print $4}`JVMMax=`echo ${line} | awk -F | {print $6}`JVMUsage_1=`echo ${line} | awk -F | {print $8}`JVMUsage=`awk BEGIN{printf ($JVMUsage_1)*100}`PermUsed=`echo ${line} | awk -F | {print $10}`PermMax=`echo ${line} | awk -F | {print $12}`PermUsage_1=`echo ${line} | awk -F | {print $14}`PermUsage=`awk BEGIN{printf ($PermUsage_1)*100}`if [ $JVMUsage -ge 8000 -o $PermUsage -ge 8000 ]then    ((MONI_JVM_COUN++))    echo "${InstanceName} JVMUsed is ${JVMUsed},Please check! "fielif [ "${MonitorItem}" == "CurrentThread" ] ##对线程运行状态进行判断thenCurrentThread=`echo ${line} | awk -F | {print $4}`MaxThread=`echo ${line} | awk -F | {print $6}`ThreadUsage_1=`echo ${line} | awk -F | {print $8}`ThreadUsage=`awk BEGIN{printf ($ThreadUsage_1)*100}`BusyThread=`echo ${line} | awk -F | {print $10}`if [ $ThreadUsage -ge 8500 ]then    ((MONI_THREAD_COUNT++))    echo "${InstanceName} CurrentThread is ${CurrentThread},Please check! "fielif [ "${MonitorItem}" == "CurrentQueue" ] ##对队列运行状态进行判断thenCurrentQueue=`echo ${line} | awk -F | {print $4}`MaxQueue=`echo ${line} | awk -F | {print $6}`QueueUsage_1=`echo ${line} | awk -F | {print $8}`QueueUsage=`awk BEGIN{printf ($QueueUsage_1)*100}`if [ $QueueUsage -ge 8000 ]then((MONI_QUEUE_COUNT++))echo "${InstanceName} CurrentQueue is ${CurrentQueue},Please check! "fielif [ "${MonitorItem}" == "dataSourceName" ] ##对JDBC数据源运行状态进行判断thendataSourceName=`echo ${line} | awk -F | {print $4}`CurrentActiveNum=`echo ${line} | awk -F | {print $6}`createJDBCCount=`echo ${line} | awk -F | {print $8}`maxJDBCCount=`echo ${line} | awk -F | {print $10}`spareJDBCCount=`echo ${line} | awk -F | {print $12}`JDBCUsage_1=`echo ${line} | awk -F | {print $14}`JDBCUsage=`awk BEGIN{printf ($JDBCUsage_1)*100}`if [ $JDBCUsage -ge 9500 ]then    ((MONI_JDBC_COUNT++))    echo "${InstanceName} dataSourceName is ${dataSourceName},Please check! "fielseecho "${MonitorItem}" is error!fidoneelseecho "$LOG_DIR"/bes.log is wrong,please check!fi
```

## **具体配置以及结果展示**

**1.** 新建原子操作，引用的脚本为上述脚本，输出参数如下图所示：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_004.png)

**2.** 新建六个巡检项，引用的为上述原子操作，分别对应不同的巡检内容，具体如下图所示：

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_005.png)

**3.** 新建巡检任务，引用上述六个巡检项，具体执行结果如下图所示。

通过执行一键巡检，点击查看详情，很清晰明了的知道当前宝兰德BES中间件状态是否有异常，结果展示的两个分布图全为绿色则表明状态正常，如若有红色则说明存在异常的实例状态，点击异常项查看具体的异常信息具体解决。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_006.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_007.png)

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_008.png)

## 本文作者：程  红（上海新炬王翦团队）

## 本文来源：“IT那活儿”公众号

![](https://ucloud-blog.cn-bj.ufileos.com/articles/129387/images/129387_009.png)