首页 / 专利库 / 电脑零配件 / 接口 / 用户界面 / web界面 / 一种基于综合诊断平台的调度主站系统的运行监测系统

一种基于综合诊断平台的调度主站系统的运行监测系统

阅读:1022发布:2020-07-10

专利汇可以提供一种基于综合诊断平台的调度主站系统的运行监测系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了基于综合诊断平台的调度主站系统运行监测系统,综合诊断平台包括商用库与实时库同步比对模 块 、综合巡检模块和安全审计模块,将各模块中的工具通过操作命令整合、shell脚本开发、人机服务编译实现图形界面操作;建立以工作模块和工作流程为 基础 的脚本控制;使用C++编程技术结合QT开源图形 接口 进行设计,实现工具集的人机 可视化 交互。提前根据故障编译程序并自动执行比对及校验,在应用到主站系统后,仅用很短一段时间就完成 软件 程序的安装调试,自动应用在后台执行后,大大提高了系统可靠性及工作效率。,下面是一种基于综合诊断平台的调度主站系统的运行监测系统专利的具体信息内容。

1.一种基于综合诊断平台的调度主站系统的运行监测系统,其特征在于,综合诊断平台包括商用库与实时库同步比对模、综合巡检模块和安全审计模块,所述运行监测系统通过如下操作建立:将各模块中的工具通过操作命令整合、shell脚本开发、人机服务编译实现图形界面操作,建立以工作模块和工作流程为基础的脚本控制,使用C++编程技术结合QT开源图形接口进行设计,实现工具集的人机可视化交互。
2.根据权利要求1所述的调度主站系统的运行监测系统,其特征在于:使用C++编程技术结合QT开源图形接口进行设计,具体包括画面功能设计、工具功能实现设计和反馈功能设计。
3.根据权利要求2所述的调度主站系统的运行监测系统,其特征在于:所述画面功能设计具体为:利用D5000图形界面将零散的Linux shell脚本进行整合,利用系统工具和进程软件复用技术,将多道批处理作业流小工具集成人机可视化交互,形成安全运行综合诊断工具集,调用执行文件,实现图形化操作和一键式执行的功能。
4.根据权利要求2所述的调度主站系统的运行监测系统,其特征在于:所述工具功能实现设计包括商用库与实时库同步比对模块设计、综合巡检模块工具集设计和安全审计模块工具集设计。
5.根据权利要求4所述的调度主站系统的运行监测系统,其特征在于:所述商用库与实时库同步比对模块设计,具体包括如下步骤:
a、实时库单应用单表导出脚本;通过脚本调用D5000系统的实时库交互工具,将对应应用下的对应表导出来,默认导出为标准csv格式;
b、商用库单表导出;脚本中使用isql交互工具,将D5000模式的表导出,默认导出为标准csv格式;
c、利用python语言中map字典和list列表的组合数据类型,实现对结果中id值的校对,调用has_key方法进行比对,利用list列表核实结果,执行程序采用定时执行机制。
6.根据权利要求4所述的调度主站系统的运行监测系统,其特征在于:所述综合巡检模块工具集设计具体为:以统计查询功能为主,按照关键字对content字段进行模糊匹配的方式编写SQL语句,经校验语法无误后打开数据库链接,发给后台服务接收端,创建缓冲池以接收返回结果。
7.根据权利要求6所述的调度主站系统的运行监测系统,其特征在于:执行实现遥信频发分析、系统应用主备机运行状态监视、服务器磁盘空间、CPU负载、进程数量、IO使用、core文件监视并自动处理的系统状态诊断功能。
8.根据权利要求4所述的调度主站系统的运行监测系统,其特征在于:所述安全审计模块工具集设计具体包括如下步骤:
a、用户密码强度检查:检查系统pam密码权限设置,通过D5000接口检查用户密码强度,长度至少8位,必须含字母数字特殊字符;
b、检查web服务、对时服务、网络请求管理服务、共享服务、邮件服务、设备负载信息服务、明文远程登录服务、文件服务、明文远程登录服务、177端口的业务是否已关闭;
c、检查生产大区所有服务器工作站上带容量usb设备是否已禁用;
d、Ukey使用状态检查。
9.根据权利要求8所述的调度主站系统的运行监测系统,其特征在于:所述Ukey使用状态检查具体为采用Linux系统Crontab定时调用程序,每隔五分钟循环遍历生产大区所有工作站及服务器,检查domain.sys文件相关配置,确定其是否使用Ukey登录方式。
10.根据权利要求2所述的调度主站系统的运行监测系统,其特征在于:所述反馈功能设计具体为:将综合诊断平台执行及确认功能结合Linux shell脚本以及友好的界面交互工具实现,反馈界面以列表的形式组织呈现,最终导出成磁盘文件的CSV-Excel格式。

说明书全文

一种基于综合诊断平台的调度主站系统的运行监测系统

技术领域

[0001] 本发明涉及供电或配电系统技术领域,尤其涉及一种基于综合诊断平台的调度主站系统的运行监测系统。

背景技术

[0002] 目前电调度主站系统,数据采集规模较大、存储方式复杂,但伴随长时间不间断运行及数据积累,出现了繁多功能模之间内控有效性降低、数据传递错误、商用库与实时库同步不及时、数据及模型不统一等系统问题,其中不乏一些没有检测手段,不能及时显现的,直至影响正常功能使用后才能处理的安全运行隐患,对系统稳定运行造成不可忽视的影响。
[0003] 此外,系统强大的同时也对主站系统运维的技术人员提出了更高的要求。对于自动化运维人员需要熟练掌握操作系统数据库电网运行、调度数据网网络、二次安全防护等关键性专业操作技能,能运维并处理日常缺陷需要很高的技术平,对人员培养提出了周期长、专业深的高槛,不利于新进员工的快速成长。

发明内容

[0004] 本发明的目的是提供一种基于综合诊断平台的调度主站系统的运行监测系统,因提前根据故障编译程序并自动执行比对及校验,在应用到主站系统后,仅用很短一段时间就完成软件程序的安装调试,自动应用在后台执行后,大大提高了系统可靠性及工作效率。
[0005] 本发明提出的主站系统运行监测系统基于综合诊断平台整合三个模块十种工具,总结所遇到的故障、梳理需要完善的工作项目,再转化为机器语言简化操作步骤而形成系统诊断实用工具平台,为调度主站系统运行提供更可靠、更便捷的检测和处理手段。
[0006] 本发明的目的通过以下技术方案来实现:一种基于综合诊断平台的调度主站系统的运行监测系统,所述综合诊断平台包括商用库与实时库同步比对模块、综合巡检模块和安全审计模块,将各模块中的工具通过操作命令整合、shell脚本开发、人机服务编译实现图形界面操作,建立以工作模块和工作流程为基础的脚本控制,使用C++编程技术结合QT开源图形接口进行设计,实现工具集的人机可视化交互,进而将多用户多命令的复杂不安全操作转换成多道批处理作业流,实现机器学习、统计分析等技术在智能电网调度控制系统上的应用。
[0007] 使用C++编程技术结合QT开源图形接口进行设计,具体包括画面功能设计、工具功能实现设计和反馈功能设计。
[0008] 所述画面功能设计具体为:利用D5000图形界面将零散的Linux shell脚本进行整合,利用系统工具和进程的软件复用技术,将多道批处理作业流小工具集成人机可视化交互,形成安全运行综合诊断工具集,调用执行文件,实现图形化操作和一键式执行的功能。
[0009] 所述工具功能实现设计包括商用库与实时库同步比对模块设计、综合巡检模块工具集设计和安全审计模块工具集设计。
[0010] 所述商用库与实时库同步比对模块设计,采用实商库同步进程和表数据容量的在线质量纠错,实现弹性双反馈纠错功能,挖掘系统数据流控制、进程控制、数据递交、数据库实例等最优控制方式,完善作业管理和文件管理的平衡机制,具体包括如下步骤:a、实时库单应用单表导出脚本。通过脚本调用D5000系统的rtio实时库交互工具,将某应用下的某张表导出来,默认导出为标准csv格式。
[0011] b、商用库单表导出,脚本中使用isql交互工具,将D5000模式的表导出,默认导出为标准csv格式。
[0012] c、利用python语言中map字典和list列表的组合数据类型实现对结果中id值的校对,调用has_key方法(python自带哈希算法)进行比对。利用list列表核实结果,执行程序采用定时执行机制。
[0013] 所述巡检模块工具集设计具体为:以统计查询功能为主,按照关键字对content字段(内容)进行模糊匹配等方式编写SQL语句,经校验语法无误后打开数据库链接,发给后台服务接收端,创建缓冲池以接收返回结果。可执行实现遥信频发分析、系统应用主备机运行状态监视、服务器磁盘空间、CPU负载、进程数量、IO使用、core文件监视并自动处理等系统状态诊断功能。
[0014] 所述安全审计模块工具集设计具体包括如下步骤:a、用户密码强度检查。检查系统pam密码权限设置,通过D5000接口检查用户密码强度,长度至少8位,必须含字母数字特殊字符。
[0015] b、检查httpd(web服务)、ntpd(对时服务)、inetd(网络请求管理服务)、samba(共享服务)、smtp(邮件服务)、snmp(设备负载信息服务)、telnet(明文远程登录服务)、ftp(文件服务)、rlogin/rsh(明文远程登录服务)、177端口(远程左面)等业务是否已关闭。
[0016] c、检查生产大区所有服务器工作站上带容量usb设备是否已禁用。
[0017] d、Ukey使用状态检查。采用Linux系统Crontab定时调用程序,每隔五分钟循环遍历生产大区所有工作站及服务器,检查domain.sys文件相关配置,确定其是否使用Ukey登录方式,如果没有使用Ukey并且启动了D5000应用则写入审计报告。
[0018] 所述反馈功能设计具体为:将综合诊断平台执行及确认功能结合Linux shell脚本以及友好的界面交互工具实现,反馈界面以列表的形式组织呈现,最终导出成磁盘文件的CSV-Excel格式。
[0019] 本发明的综合诊断平台运行时需要依赖后台硬件资源,尤其是数据库服务器及核心交换机,将会受到处理器、内存、硬盘、网络带宽、Socket连接数、可操作文件数影响。考虑到语句下发可能会扫描数个甚至数十个GB的磁盘文件,占用数百MB或上GB的内存,为了不影响系统正常业务的执行,程序上将对适用范围做出限制,例如只在调控网一区使用,后台负载较重时将放弃下发命令并告知用户。
[0020] 本发明具有如下有益效果:(1)多功能集成,综合诊断;通过综合诊断,有针对性的实现核心数据库同步、重要资源进程的在线监测,将诊断结果定时反馈并触发告警,起到自动隐患排查,高效、准确、安全。
通过模块化管理,可以自由设定所检查内容进行系统诊断。
[0021] (2)定时出诊,检测智能化;可根据事先设定的检测周期及检测内容自动完成系统巡检和报告生成工作,不需要人工干预,实现了工具检测的智能化,节约人工对数据的排查、清洗、统计工作。
[0022] (3)以诊断工具为切入点,开拓系统监测多源化工作思路;综合诊断平台采用开放性的设计理念,更好地服务于数据分析,进一步与内网安监平台等自动化系统进行接口开发,实现多数据源的合并、分析,组建大数据分析平台,实现全面的系统扫描诊断。
[0023] (4)界面化操作,降低系统专业巡检技术门槛;综合诊断平台采用统一平台可视化的操作界面,提供复选框、文本框等交互工具,方便用户操作。功能执行及生成报告采用一键式完成的方式,省时、省力、省心。
[0024] (5)综合诊断平台对调度主站系统重要资源及程序的扫描诊断,实现对系统功能质量的纠错,反应系统实时运行状态水平大大增强。
[0025] (6)提高了系统运行的安全性,降低了系统运行中隐患给电网调控运行带来的不良影响,缩短了系统故障排查时间。
[0026] (7)避免人为统计、判断的干扰因素,节省了人工操作及判定的工作量,大大提升了系统的实用化水平。
[0027] (8)化零为整,系统诊断,综合巡检,使系统维护工作系统化,集约化。
[0028] (9)深入挖掘其数据流控制,深化挖掘其进程控制、数据递交、数据库实例等最优控制方式,为电力调度专业发展提供了一种新的工作思路。

具体实施方式

[0029] 下面结合具体实施例对本发明的内容进行进一步的解释和说明,需要注意的是,以下实施例仅是本发明的较佳实施例而并非全部的实施例,不应造成对本发明保护范围的限制。
[0030] 实施例1本发明的监测方法适用于调度主站系统安全控制1区的系统诊断检测工作。一种基于综合诊断平台的调度主站系统的运行监测系统,所述综合诊断平台包括商用库与实时库同步比对模块、综合巡检模块和安全审计模块,将各模块中的工具通过操作命令整合、shell脚本开发、人机服务编译实现图形界面操作;建立以工作模块和工作流程为基础的脚本控制;使用C++编程技术结合QT开源图形接口进行设计,实现工具集的人机可视化交互。
[0031] 使用C++编程技术结合QT开源图形接口进行设计,具体包括画面功能设计、工具功能实现设计和反馈功能设计。
[0032] 所述画面功能设计具体为:利用D5000图形界面将零散的Linux shell脚本进行整合,形成安全运行综合诊断工具集,调用执行文件,实现图形化操作和一键式执行的功能。
[0033] 所述工具功能实现设计包括商用库与实时库同步比对模块设计、综合巡检模块工具集设计和安全审计模块工具集设计。
[0034] 所述商用库与实时库同步比对模块设计具体包括如下步骤:a、实时库单应用单表导出脚本。通过脚本调用D5000系统的rtio实时库交互工具,将某应用下的某张表导出来,默认导出为标准csv格式。
[0035] b、商用库单表导出,脚本中使用isql交互工具,将D5000模式的表导出,默认导出为标准csv格式。
[0036] c、利用python语言中map字典和list列表的组合数据类型实现对结果中id值的校对,调用has_key方法(python自带哈希算法)进行比对。利用list列表核实结果,执行程序采用定时执行机制。
[0037] 所述巡检模块工具集设计具体为:以统计查询功能为主,按照关键字对content字段(内容)进行模糊匹配等方式编写SQL语句,经校验语法无误后打开数据库链接,发给后台服务接收端,创建缓冲池以接收返回结果。可执行实现遥信频发分析、系统应用主备机运行状态监视、服务器磁盘空间、CPU负载、进程数量、IO使用、core文件监视并自动处理等系统状态诊断功能。
[0038] 所述安全审计模块工具集设计具体包括如下步骤:a、用户密码强度检查。检查系统pam密码权限设置,通过D5000接口检查用户密码强度,长度至少8位,必须含字母数字特殊字符。
[0039] b、检查httpd(web服务)、ntpd(对时服务)、inetd(网络请求管理服务)、samba(共享服务)、smtp(邮件服务)、snmp(设备负载信息服务)、telnet(明文远程登录服务)、ftp(文件服务)、rlogin/rsh(明文远程登录服务)、177端口(远程左面)等业务是否已关闭。
[0040] c、检查生产大区所有服务器工作站上带容量usb设备是否已禁用。
[0041] d、Ukey使用状态检查。采用Linux系统Crontab定时调用程序,每隔五分钟循环遍历生产大区所有工作站及服务器,检查domain.sys文件相关配置,确定其是否使用Ukey登录方式,如果没有使用Ukey并且启动了D5000应用则写入审计报告。
[0042] 所述反馈功能设计具体为:将综合诊断平台执行及确认功能结合Linux shell脚本以及友好的界面交互工具实现,反馈界面以列表的形式组织呈现,最终导出成磁盘文件的CSV-Excel格式。
[0043] 各模块中涉及到的源码文件如下所示:done
      else
             printf "ping不通!\n"
      fi
done
D5000系统体检结果
EOF
    let NO++
    cat >> check_result.log <$NO. 机器网络情况
EOF
    qtcheck.sh $NODE_CONF_FILE >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 机器时间校准情况
EOF
    check_time.sh $SECOND_LIMIT >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 机器CPU负荷情况
EOF
    check_load.sh  $LOAD_LIMIT  >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 机器硬盘分区使用率情况
EOF
    check_disk.sh $DISK_LIMIT >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 机器硬盘inode使用率情况
EOF
    check_inode.sh $INODE_LIMIT >> check_result.log
    let NO++
    cat >> check_result.log <$NO. CPU占用最多的进程TOP5
EOF
    check_cpu.sh >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 内存占用最多的进程TOP5
EOF
    check_memory.sh >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 虚拟内存占用最多的进程TOP5
EOF
    check_swap.sh >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 最高句柄数的进程NO.1
EOF
    check_lsof.sh >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 商用数据库连接数
EOF
    check_db.sh $DB_TYPE $DB_ADDR >> check_result.log
    let NO++
    cat >> check_result.log <$NO. app_msg.log日志情况
EOF
    check_app_msg.sh >> check_result.log
    let NO++
    cat >> check_result.log <$NO. 数据库同步复制文件堆积情况
EOF
        当前体检配置:
        * 节点文件: $NODE_CONF_FILE
        * 数据库连接参数: $DB_TYPE $DB_ADDR
        * 时间误差告警限值(秒): $SECOND_LIMIT
        * CPU负荷告警限值: $LOAD_LIMIT
        * 磁盘分区使用率告警限值: $DISK_LIMIT
        * 磁盘inode使用率告警限值: $INODE_LIMIT
        重要说明:
        * 仅在Linux上进行了完整测试!
        1:按默认设置进行系统体检
        2:人工设置体检参数后,再进行系统体检
        3:体检节点配置文件设置[$NODE_CONF_FILE_1 或 $NODE_CONF_FILE_2]
        4:数据库连接参数设置
        q:退出
EOF
      echo  "你的选择[1,2,3,q]:"
      read CHOICE
      case $CHOICE in
      1)  gen_check_result
             break;;
      2)  while :
        do
            tput clear
            echo "体检参数设置界面"
            echo "请输入机器CPU负荷告警限值[1-100]:"
            read LOAD_LIMIT
            echo "请输入机器硬盘分区使用率告警限值[1-100]:"
            read DISK_LIMIT
            echo "请输入机器硬盘inode使用率告警限值[1-100]:"
            read INODE_LIMIT
            echo "请输入时间误差告警限值(秒):"
            read SECOND_LIMIT
            CONFIRM=""
            until [ "$CONFIRM" = "n" -o "$CONFIRM" = "N" -o "$CONFIRM" = "y" -o "$CONFIRM" = "Y" ]
            do
                echo "请确认以上参数是否正确[y/n]:"
                read CONFIRM
            done
            if [ "$CONFIRM" = "y" -o "$CONFIRM" = "Y" ]; then
                gen_check_result
                break
            fi
        done
        break;;
    3)  while :
        do
            tput clear
            echo "请选择体检节点配置文件"
            echo "1.$NODE_CONF_FILE_1"
            echo "2.$NODE_CONF_FILE_2"
            echo "你的选择是[1,2]:"
            read   NODE_CONF_FILE_CHOICE
            case $NODE_CONF_FILE_CHOICE in
                1)  NODE_CONF_FILE=$NODE_CONF_FILE_1
                    break;;
                2)  NODE_CONF_FILE=$NODE_CONF_FILE_2
                    break;;
                *)  echo  "选择错误!"
                    echo  "按回车键继续!"
                    read DUMP;;
            esac
        done;;
    4)  while :
        do
            tput clear
            echo "数据库连接参数设置界面"
            echo "请输入数据库类型和连接地址[dm|kb x.x.x.x]:"
            read  DB_CONNECT_PARA
            para_num=`echo $DB_CONNECT_PARA | wc -w`
            if [ $para_num -ne 2 ]; then
                echo  "输入错误!"
                echo  "按回车键继续!"
                read DUMP
            else
                echo $DB_CONNECT_PARA > $DB_CONNECT_CONF
                break
            fi
        done;;
    Q|q)    exit 0;;
      *)  echo  "选择错误!"
        echo  "按回车键继续!"
        read DUMP;;
#!/bin/sh
#当前时间标志
DDATE=$(date +%Y%m%d)
DATE=$(date "+%Y-%m-%d %H:%M:%S")
#地区表示
local_name="$(hostname | cut -d1 -f1)"
#脚本主目录
home="/home/d5000/hebei/d5000-shell"
#节点目录
host="${home}/hosts.ini"
#检查结果目录
res_file="${home}/result"
#当前检查结果时标子目录
chk_dir="${res_file}/chk_${DDATE}"
#所有检查结果文件
chk_res_all="${chk_dir}/res_all.txt"
#对时异常结果文件
chk_res_time="${chk_dir}/res_time.txt"
#对时所有结果文件
chk_time_all="${chk_dir}/res_time_all.csv"
#硬盘空间异常结果文件
chk_res_hard="${chk_dir}/res_hard.txt"
#硬盘空间所有结果文件
chk_inode_all="${chk_dir}/res_inode_all.csv"
#Inode异常结果文件
chk_res_inode="${chk_dir}/res_inode.txt"
#Inode所有结果文件
chk_hard_all="${chk_dir}/res_hard_all.csv"
#ukey异常结果文件
chk_res_ukey="${chk_dir}/res_ukey.txt"
#ukey所有结果文件
chk_ukey_all="${chk_dir}/res_ukey_all.csv"
#无法ping通结果文件
bad_ping="${chk_dir}/bad_ping.txt"
#ping通但是22端口无法访问结果文件
bad_ssh="${chk_dir}/bad_ssh.txt"
#/etc/hosts中无配置结果文件
bad_known="${chk_dir}/bad_known.txt"
#isql命令绝对路径
ISQL="/home/kingbase/KingbaseES/bin/isql"
#file_send命令绝对路径
FILE_SEND="/home/d5000/hebei/bin/file_send"
#结果目标IP1
IP1="172.10.1.5"
#结果目标IP2
IP2="172.10.1.6"
#结果目标目录
des_dir="/home/d5000/hebei/d5000-shell/${local_name}"
#获取数据库服务端IP地址
DBHOST="$(cat /etc/sys_service.conf | awk -F"="  '/host=/{print $2;
exit}')"
#检查ukey使用情况函数
_chkukey()
{
      #节点名
      unode=$1
      #节点IP
      u_id=$2
      #获取conf下domain.sys配置文件中SGDAPI行
      d_flag=$(ssh ${unode} cat /home/d5000/hebei/conf/domain.sys | grep "SGDAP")
      #判断SGDAPI的值是否是1
      if [[ "${d_flag}" = "SGDAPI=1" ]]
             #是的话....
      then
             echo -e "${unode}节点ukey使用正常..."
             #追加信息到结果文件中...
             echo -e "${DATE},${u_id},${unode},1,${local_id}" >> ${chk_ukey_all}
             #不是的话...
      else
             echo -e "${unode}节点ukey使用异常..."
             echo -e "${unode}节点ukey使用异常..." >> ${chk_res_ukey}
             echo -e "${DATE},${u_id},${unode},0,${local_id}" >> ${chk_ukey_all}
      fi
}
#检查对时函数
_chktime()
{
      #节点名
      tnode=$1
      #节点ID
      t_id=$2
      #获取对方时间
      rtime=$(ssh ${tnode} date +%Y%m%d%H%M%S)
      #获取本地时间
      ltime=$(date +%Y%m%d%H%M%S)
      #计算时间差
      etime=$((${rtime}-${ltime}))
      #如果时间差小于3
      if [[ ${etime} -lt 3 ]]
             #是的话...
      then
             echo -e "${tnode}节点对时正常..."
             echo -e "${DATE},${t_id},${tnode},0,${local_id}" >> ${chk_time_all}
      else
             #不是的话
             echo -e "${tnode}节点对时异常...相差时间为${etime}秒..."
             echo -e "${tnode}节点对时异常...相差时间为${etime}秒..." >> ${chk_res_time}
             echo -e "${DATE},${t_id},${tnode},1,${local_id}" >> ${chk_time_all}
      fi
}
#检查硬盘空间函数
_chkhard()
{
      #节点民
      hnode=$1
      #节点ID
      h_id=$2
      #获取硬盘信息数量
      hnum=$(ssh ${hnode} df -t ext3 -h -v | grep G | wc -l)
      #循环读取硬盘信息行数,通过hnum变量记录,当数量小于等于0的时候停止
      while [ ${hnum} -gt 0 ]
      do
             #查看对方硬盘信息中的一行,然后获取该行中每一列的信息
             h_info=$(ssh ${hnode} df -t ext3 -k -v | grep "%" | grep -v "文件" | grep -v "Use" | awk 'NR=="'${hnum}'"{print $(NF-4),$(NF-3),$(NF-2),$(NF-1),$NF}')
             #awk输出最后一列
             h_name=$(echo ${h_info} | awk '{print $NF}')
             #awk输出倒数第二列
             h_uper=$(echo ${h_info} | awk '{print $(NF-1)}'|cut -d% -f1)
             #awk输出倒数第三列
             h_free=$(echo ${h_info} | awk '{print $(NF-2)}')
             #计算大小,换算为G
             h_free=$((${h_free}/1024/1024))
             #awk输出倒数第倒数第四列
             h_used=$(echo ${h_info} | awk '{print $(NF-3)}')
             #计算大小,换算为G
             h_used=$((${h_used}/1024/1024))
             #awk输出倒数第倒数第五列
             h_total=$(echo ${h_info} | awk '{print $(NF-4)}')
             #计算大小,换算为G
             h_total=$((${h_total}/1024/1024))
             #判断大小使用率是否大于79%
             if [[ ${h_uper} -gt 79 ]]
             then
                    echo -e "${hnode}节点...${h_name}目录空间越限...大小为${h_uper}%..."
                    echo -e "${hnode}节点...${h_name}目录空间越限...大小为${h_uper}%..." >> ${chk_res_hard}
                    echo -e "${DATE},${h_id},${hnode},${h_name},${h_
total},${h_used},${h_free},${h_uper},1,${local_id}" >> ${chk_hard_all}
             else
                    echo -e "${hnode}节点...${h_name}目录空间正常...大小为${h_uper}%..."
                    echo -e "${DATE},${h_id},${hnode},${h_name},${h_
total},${h_used},${h_free},${h_uper},0,${local_id}" >> ${chk_hard_all}
             fi
             hnum=$((${hnum}-1))
             #此循环主要是对df -h的硬盘信息,一行一行处理,在处理每一行时获取该行的每一列信息(全部空间,使用空间,剩余空间,使用率等等),判断越限条件是使用率是否大于79%
done
}
#检查Inode空间函数
_chkinode()
{
      #节点名称
      inode=$1
      #节点ID
      i_id=$2
      #获取目标机器inode信息行数...以下与硬盘结构一直...只不过信息变成
inode的了...
      inum=$(ssh ${inode} df -t ext3 -h -v | grep G | wc -l)
      while [ ${inum} -gt 0 ]
      do
             i_info=$(ssh ${inode} df -t ext3 -i -v | grep "%" | grep -v "文件" | grep -v "Use" | awk 'NR=="'${inum}'"{print $(NF-4),$(NF-3),$(NF-2),$(NF-1),$NF}')
             i_name=$(echo ${i_info} | awk '{print $NF}')
             i_uper=$(echo ${i_info} | awk '{print $(NF-1)}'|cut -d% -f1)
             i_free=$(echo ${i_info} | awk '{print $(NF-2)}')
             i_used=$(echo ${i_info} | awk '{print $(NF-3)}')
             i_total=$(echo ${i_info} | awk '{print $(NF-4)}')
             if [[ ${i_uper} -gt 79 ]]
             then
                    echo -e "${inode}节点...${i_name}目录inode空间越限...大小为${i_uper}%..."
                    echo -e "${inode}节点...${i_name}目录inode空间越限...大小为${i_uper}%..." >> ${chk_res_inode}
                    echo -e "${DATE},${i_id},${inode},${i_name},${i_
total},${i_used},${i_free},${i_uper},1,${local_id}" >> ${chk_inode_all}
             else
                    echo -e "${inode}节点...${i_name}目录inode空间正常...大小为${i_uper}%..."
                    echo -e "${DATE},${i_id},${inode},${i_name},${i_
total},${i_used},${i_free},${i_uper},0,${local_id}" >> ${chk_inode_all}
             fi
             inum=$((${inum}-1))
done
}
#检查数据库连接
#测试isql是否可以登录进去
#此处石向模型中心发送结果信息,并且汇报是否发送成功,结果信息会用kettle读写入数据库中,然后用移动终端进行展示。
[0044] #发送文件名称        esac
    fi
}
check_swap_priv()
{
    node_conf_file=$1
    ping_flag=1
    if [ "$2" != "" ]; then
        ping_flag=$2
    fi
    if [ "$node_conf_file" = "" ]; then
        printf "体检节点配置文件参数错误\n"
        return;
    fi
    for host in $(cat $node_conf_file)
    do
        pingret=0
        if [ "$ping_flag" = "1" ]; then
            pingret=`ping_cmd $host`
        fi
        if [ "$ping_flag" != "1" -o $pingret -eq 0 ]; then
            printf "============================== $host ==============================\n"
            swap_cmd $host
            printf "\n"
        else
            printf "$host  网络不通!\n"
        fi
    done
}
if [ $# != 0 -a $# != 1 ]
then
      echo  "用法1: $0(默认体检节点配置文件$PASSHOSTS)"
      echo  "例如:  $0"
      echo  "用法2: $0 参数1"
      echo  "例如:  $0 hostname.ini"
      exit 1
fi
case $# in
    0)  check_swap_priv $PASSHOSTS 0;;
    1)  check_swap_priv $1;;
esac
#!/bin/sh
APP_MSG_FILE="${D5000_HOME}/var/log/app_msg.log"
MSG_ERROR_FILE="`pwd`/.tmp_msg_error.log"
PASSHOSTS="`pwd`/.passhosts.txt"
SSH="ssh"
ping_cmd()
{
    pingret=-1
    host=$1
    if [ "$host" != "" ]; then
        case `uname` in
            AIX)    ping -c1 -w2 $host > /dev/null
check_msg_error_cmd()
{
    host=$1
    if [ "$host" = "" ]; then
        return
    fi
    #$SSH $host grep 消息失效 $APP_MSG_FILE > $MSG_ERROR_FILE
    num=`$SSH $host "grep 消息失效 $APP_MSG_FILE | wc -l"`
    if [ $num -gt 0 ] ; then
        printf "$host  消息失效数量=${num},请检查!\n"
    else
        printf "$host  发送和接收消息正常!\n"
    fi
}
check_app_msg_priv()
{
    node_conf_file=$1
    ping_flag=1
    if [ "$2" != "" ]; then
        ping_flag=$2
    fi
    if [ "$node_conf_file" = "" ]; then
        printf "体检节点配置文件参数错误\n"
        return;
    fi
    for host in $(cat $node_conf_file)
    do
        pingret=0
        if [ "$ping_flag" = "1" ]; then
            pingret=`ping_cmd $host`
        fi
        if [ "$ping_flag" != "1" -o $pingret -eq 0 ]; then
            check_msg_error_cmd $host
#            num1=`send_msg_error_cmd`
#            if [ $num1 -gt 0 ] ; then
#                printf "$host  发送侧消息失效数量=${num1},请检查!\n"
#            else
#
#            fi
#
#            num2=`recv_msg_error_cmd`
#            if [ $num2 -gt 0 ] ; then
#                printf "$host  接收侧消息失效数量=${num2},请检查!\n"
#            fi
#
#            if [ $num1 -eq 0 -a $num2 -eq 0 ]; then
#                printf "$host  发送和接收消息正常!\n"
#            fi
        else
            printf "$host  网络不通!\n"
        fi
    done
}
if [ $# != 0 -a $# != 1 ]
then
      echo  "用法1: $0(默认体检节点配置文件$PASSHOSTS)"
      echo  "用法2: $0 参数1"
      echo  "例如:  $0 hostname.ini"
      exit 1
fi
case $# in
 0) check_app_msg_priv $PASSHOSTS 0;;
 1) check_app_msg_priv $1;;
esac
#!/bin/sh
DB_TYPE=""
DB_ADDR=""
}
check_dm()
{
    DB_ADDR=$1
    if [ "$DB_ADDR" = "" ]; then
        return;
    fi
    isql SYSDBA/SYSDBA@$DB_ADDR <select  '达梦库, ${PREFIX}' || count(*) ||  ', 限值=' || get_para_value('max_sessions') ||  ', 占比=' || to_char(to_number(count(*))/get_para_value('max_sessions')*100, '99.99') || '%' from v\$session;
exit
EOF
    printf "\n"
}
check_kb()
{
    DB_ADDR=$1
    if [ "$DB_ADDR" = "" ]; then
        return;
    fi
    isql -h $DB_ADDR -USYSTEM -WMANAGER EMS <select  '金仓库, ${PREFIX}' || connections() ||  ', 限值=' || current_
setting('max_connections') ||  ', 占比=' || to_char(to_number(connections())/current_setting('max_connections')*100, '99.99') || '%';
\q
EOF
    printf "\n"
}
if [ $# != 2 ]; then
    echo "用法: $0 dm|kb IP"
    exit 1
fi
DB_TYPE=`echo $1 | tr '[A-Z]' '[a-z]'`
DB_ADDR=$2
pingret=`ping_cmd $DB_ADDR`
if [ $pingret -eq 0 ]; then
    case $DB_TYPE in
         'dm')   check_dm $DB_ADDR | grep -i $PREFIX | grep -iv count | awk 'BEGIN{FS=" "}{for(i=2;i<=NF;i++)printf("%s ",$i);printf("\n");}';;
        'kb')   check_kb $DB_ADDR | grep -i $PREFIX;;
        *)      echo "Unknown database type";;
    esac
else
    printf "$DB_ADDR  网络不通!\n"
fi
本发明的综合诊断平台运行时需要依赖后台硬件资源,尤其是数据库服务器及核心交换机,将会受到处理器、内存、硬盘、网络带宽、Socket连接数、可操作文件数影响。考虑到语句下发可能会扫描数个甚至数十个GB的磁盘文件,占用数百MB或上GB的内存,为了不影响系统正常业务的执行,程序上将对适用范围做出限制,例如只在调控网一区使用,后台负载较重时将放弃下发命令并告知用户。
[0045] 应用例1下面以国网沧州供电公司系统为例简要介绍:
1.在调度主站系统人机界面中直接点击执行按钮,后台将会执行对应命令或脚本输出结果。
[0046] 2.当命令需要扫描全网设备并输出文档时需要复检确认。若一键执行后展示UKEY使用异常状况,则在导出CSV文件复检确认时,点否;若一键执行后展示UKEY使用状况正常,则在导出CSV文件复检确认时,点是,成功导出CSV文件并存储指定目录。
[0047] 3.当任务执行不成功将出现返回提示框,并提示失败原因。
[0048] 4. 工具模块内设置有“帮助文档”,里面详细说明了工具执行步骤及所执行的脚本,起到培训及技术指导的作用。
[0049] 综合诊断平台采用人机交互方式快速检查得到结果,为系统诊断、故障发现、缺陷消除等运维工作提供可视化、便捷化、服务化手段。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈