我的BasisAgent运维监控工具(一)telnet

官方安装文档解读SAP S4 HANA架构

SAP HANA原生备份与恢复

自己攒一台SAP S4 HANA服务器硬件配置参考

BASIS模块管理

为什么SAP ECC的系统,数据库总是和SAP的应用安装在一起

SAP PI服务器,版本731 SYBASE数据库运维故障解决2粒

ERP-SAP服务器集群架构技术沿革

IBM小型机厉害的高级功能

AIX下 SYBASE 数据库无法启动解决一例

C#连接SAP HANA数据库读取数据

SAP系统性能测试

最简单可靠的机房温度电话报警

我的BasisAgent运维监控工具(一)telnet

SAP HANA原生备份与恢复

SAP官方HANA管理员手册之savepoints

HANA之列存储

甩不掉的BASIS

TCPIP 网络科普 (james-lx)

32位和64位的区别(james-lx)

BasisAgent   (basis运维监控工具)

SAP BASIS运维需要监控服务器主机的运行状态,多年以来,

我都是手工到系统去检查和统计操作系统层的信息,

这次,我准备自己来做一个,因为我面对了10个aix和50个suse。

我给自己提出了工具的需求:

1、telnet登录主机收集shell命令数据,AIX主机需要收集的指标数据是df -g和errpt

2、SSH登录主机收集shell命令数据,suse主机需要收集的指标数据是df -h和/var/message

3、数据存储在SQLlite文件数据库中,主机密码有加密

4、工具定时统计主机信息,检测异常给管理员邮箱发邮件

5、主机shell数据用模板库来管理

6、完成后放在github上

工具还是用C# WINFORM来搞,最简单。

首先,为了实现telnet登录,我找到了 https://download.csdn.net/download/qianlicao412/9670090

需要在项目中引用入 Dart.Telnet.dll,Dart.Telnet.xml

程序取到了完整的df -g文件系统数据,接下了需要把这个结构化的字符串,

按模版识别分解后放到关系型的Sqllite数据库里。

实现telnet shell完整的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Dart.Telnet;

namespace telnet23
{
    public partial class Form1 : Form
    {
        static Telnet telnet1 = new Telnet();
        static TelnetModel telnetModel = new TelnetModel(); 

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Wire-up events
            telnet1.Data += new EventHandler<DataEventArgs>(telnet1_Data);
            telnet1.Error += new EventHandler<ErrorEventArgs>(telnet1_Error);          

            telnetModel = new TelnetModel();
            telnetModel.Telnet = telnet1;

            try
            {             
                telnetModel.Session.RemoteEndPoint.HostNameOrAddress = "主机IP";
                telnetModel.Session.RemoteEndPoint.Port = 23;
                telnetModel.Credentials.Username = "用户名";
                telnetModel.Credentials.Password = "密码";
                telnetModel.Credentials.CommandPrompt = "#";
                telnetModel.CommandString = "df -g";                                
                telnetModel.Execute(null);               
               
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }

        }        

         void telnet1_Error(object sender, ErrorEventArgs e)
        {
            string expText = e.GetException().ToString();
            if (e.GetException() is NotImplementedException)
                expText = "NOTE: A NotImplementedException may be thrown when running under Mono.\r\n\r\n" + expText;
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(expText);
            Console.ForegroundColor = ConsoleColor.Gray;
        }

         void telnet1_Data(object sender, DataEventArgs e)
        {
            textBox1.Text = textBox1.Text + Encoding.ASCII.GetString(e.Data.Buffer, e.Data.Offset, e.Data.Count);
        }

    }
}

关于模板库:

prd2:root[/]#df -g
Filesystem    GB blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4           5.00      4.52   10%    13651     2% /
/dev/hd2          10.00      5.36   47%    80728     7% /usr
/dev/hd9var        2.00      1.30   35%    10899     4% /var
/dev/hd3          10.00      8.55   15%     2555     1% /tmp
/dev/hd1           2.00      1.99    1%      117     1% /home
/dev/hd11admin      0.50      0.50    1%        9     1% /admin
/proc                 -         -    -         -     -  /proc
/dev/hd10opt       0.50      0.28   45%     7114    10% /opt
/dev/livedump      0.50      0.50    1%        9     1% /var/adm/ras/livedump
/dev/lvsaphome     10.00      8.99   11%     1087     1% /usr/sap
/dev/lvsapaas     10.00      2.56   75%    28777     5% /usr/sap/EP2
/dev/vol_nbu      15.00     11.17   26%     2142     1% /usr/openv
prd:/export/usr/sap/trans     50.00     33.71   33%    17418     1% /usr/sap/trans
prd:/export/sapmnt/EP2     20.00     17.17   15%    16359     1% /sapmnt/EP2

今天终于找到分解df -g的方法,
Filesystem    GB blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4           5.00      4.40   12%    13646     2% /


把telnet命令得到的大文本,按头“/dev/hd4”和尾“/”查找,可以得到中间5个字段。
按每一个文件系统建立一个关键字模版,程序每次完整的得到5个字段串,然后转成5个字段。

按模块来设计我的监控工具,大致有这几个模块:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值