如何设计一个mysql性能监控的软件

如何设计一个mysql性能监控的软件,第1张

首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。

pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:

1 OS 层面的 CPU、IO、内存、磁盘、网络等信息;

2 MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。

而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。

三、使用

接着我们来看下如何使用这个工具。

pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。

触发条件相关的参数有以下几个:

function:

∘ 默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;

∘ 也可以设置为 processlist,代表监控 show processlist 的输出;

variable:

∘ 默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;

threshold:

∘ 默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;

∘ 监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;

cycles:

∘ 默认为 5,表示连续观察到五次满足触发条件时,才触发收集;

连接参数:host、password、port、socket。

其他一些重要参数:

iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。

run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。

sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。

interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。

dest:监控数据存放路径,默认为 /var/lib/pt-stalk。

retention-time :监控数据保留时长,默认 30 天。

daemonize:以后台服务运行,默认不开启。

log:后台运行日志,默认为 /var/log/pt-stalklog。

collect:触发发生时收集诊断数据,默认开启。

∘ collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。

∘ collect-strace:收集跟踪数据,需要 strace 工具。

∘ collect-tcpdump:收集 tcpdump 数据,需要 tcpdump 工具。

利用TTL起始值判断 *** 作系统,不同类型的 *** 作系统都有默认的TTL值(简陋扫描,仅作参考)

TTL起始值:Windows xp(及在此版本之前的windows)  128 (广域网中TTL为65-128)

    Linux/Unix64(广域网中TTL为1-64)

    某些Unix:255

    网关:255

使用python脚本进行TTL其实质判断

使用nmap识别 *** 作系统:nmap -O 19216845129 #参数-O表示扫描 *** 作系统信息,nmap基于签名,指纹,特征,CPE编号等方法去判断目标系统的信息

CPE:国际标准化组织,制定了一套标准,将各种设备, *** 作系统等进行CPE编号,通过编号可以查询到目标系统

使用xprobe2进行 *** 作系统识别,专门用来识别目标 *** 作系统:xprobe2 19216845129,但结果并不是很精确

被动 *** 作系统识别:不主动向目标主机发数据包,基于网络监听原理

通过抓包分析,被动扫描,使用kali中的p0f工具进行网络监听

p0f:p0f是一种被动指纹识别工具,可以识别您连接的机器,连接到您的盒子的机器,甚至连接在盒子附近的机器,即使该设备位于数据包防火墙后面。

p0f的使用:只要接收到数据包就可以根据数据包判断其信息,首先输入p0f,然后在浏览器里面输入目标系统的网址,便会获得目标系统的信息

或者使用p0f结合ARP地址欺骗识别全网OS

snmp扫描:简单网络管理协议,明文传输,使用网络嗅探也可获取到信息

SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。

snmp的基本思想是为不同种类、不同厂家、不同型号的设备定义一个统一的接口和协议,使管理员可以通过统一的外观面对这些需要管理的网管设备进行管理,提高网管管理的效率,简化网络管理员的工作。snmp设计在TCP/IP协议族上,基于TCP/IP协议工作,对网络中支持snmp协议的设备进行管理。

在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为管理站,负责网管命令的发出、数据存储、及数据分析。被监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通信。如下图

管理站与代理端通过MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现了相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站,完成一次管理 *** 作。

已有的设备,只要新加一个SNMP模块就可以实现网络支持。旧的带扩展槽的设备,只要插入SNMP模块插卡即可支持网络管理。网络上的许多设备,路由器、交换机等,都可以通过添加一个SNMP网管模块而增加网管功能。服务器可以通过运行一个网管进程实现。其他服务级的产品也可以通过网管模块实现网络管理,如Oracle、WebLogic都有SNMP进程,运行后就可以通过管理站对这些系统级服务进行管理。

使用UDP161端口(服务端),162端口(客户端),可以监控网络交换机,防火墙,服务器等设备

可以查看到很多的信息,但经常会被错误配置,snmp里面

有一些默认的Community,分别是Public/private/manager

如果目标的community是public,那么就可以发送SNMP的查询指令,对IP地址进行查询

在kali中存在对snmp扫描的工具,为onesixtyone

在Windows XP系统安装SNMP协议:

1,在运行框输入appwizcpl

2,找到管理和监控工具,双击

3,两个都勾选,然后点OK

使用onesixtyone对目标系统进行查询:命令为:onesixtyone 19216845132  public

  onesixtyone -c  字典文件  -I  主机  -o 倒入到的文件 -w 100

onesixtyone默认的字典在:/usr/share/doc/onesixtyone/dicttxt

使用snmpwalk查找目标系统的SNMP信息:snmpwalk 19216845129 -c public -b 2c

snmpcheck -t  19216845129

snmpcheck -t  19216845129 -w  参数-w检测是不是有可写权限

SMB协议扫描:server message block,微软历史上出现安全问题最多的协议,在Windows系统上默认开发,实现文件共享

在Windows系统下管理员的Sid=500,

SMB扫描:nmap -v -p 139,445 19216845132 --open 参数-v表示显示详细信息,参数--open表示显示打开的端口

nmap 19216845132 -p 139,445 --script=smb-os-discoverynse

smb-os-discoverynse:这个脚本会基于SMB协议去判别 *** 作系统,主机名,域名,工作组和当前的时间

nmap -v -P 139,445 --script=smb-check-vulns  --script-args=unsafe=1 19216845132

脚本smb-check-vulns:检查已知的SMB重大的漏洞

后面给脚本定义参数 --script-args=unsafe=1,unsafe可能会对系统有伤害,导致宕机,但要比safe准确

nbtscan -r 192168450/24参数-r使用本地137端口进行扫描,兼容性较好,可以扫描一些老版本的Windows

nbtscan可以扫描同一局域网不同的网段,对于局域网扫描大有裨益

enum4linux -a 19216845132 :

SMTP扫描:目的在于发现目标系统的邮件账号

使用nc -nv 19216845132 25

VRFY root :确定是不是有root用户

nmap扫描SMTP服务:

nmap smtp163com -p25 --script=smtp-enum-usersnse --script-args=smtp-enum-

usersmethods={VRFY}

脚本smtp-enum-usersnse用于发现远程系统上所有user的账户

nmap smtp163com -p25 --script=smtp-open-relaynse,如果邮件服务器打开了open-relay功能,那么黑客可以拿管理员的邮箱去发送钓鱼邮件

防火墙识别:通过检查回包,可能识别端口是否经过防火墙过滤

设备多种多样,结果存在一定的误差

第一种情况:攻击机向防火墙发送SYN数据包,防火墙没有给攻击机回复,攻击机再发送ACK数据包,若防火墙返回RST数据包,那么证明该端口被防火墙过滤

第二种类似

第三种:攻击机向防火墙发送SYN数据包,防火墙返回SYN+ACK或者SYN+RST数据包,攻击者再发送ACK数据包,若防火墙返回RST数据包,那么就可以证明防火墙对于该端口没被过滤unfiltered=open

第四种情况类似,证明该端口是关闭的,或者防火墙不允许其他用户访问该端口

使用python脚本去判定:

使用nmap去进行防火墙识别:nmap有系列防火墙过滤检测功能

nmap -sA 19216845129 -p 22 参数-sA表示向目标主机发送ACK数据包,参数-sS表示向目标发送SYN数据包,通过抓包分析收到的数据包判断是否有防火墙检测功能

负载均衡识别:负载均衡可以跟为广域网负载均衡和服务器负载均衡

在kali中使用lbd命令用于识别负载均衡机制

格式:lbd +域名/IP地址,如lbd   >SNMP
Simple Network Management Protocol
简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。
简单网络管理协议(SNMP)是最早提出的网络管理协议之一,它一推出就得到了广泛的应用和支持,特别是很快得到了数百家厂商的支持,其中包括IBM,HP,SUN等大公司和厂商。目前SNMP已成为网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。
一、 SNMP概述
SNMP的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。
SNMP的体系结构是围绕着以下四个概念和目标进行设计的:保持管理代理(agent)的软件成本尽可能低;最大限度地保持远程管理的功能,以便充分利用Internet的网络资源;体系结构必须有扩充的余地;保持SNMP的独立性,不依赖于具体的计算机、网关和网络传输协议。在最近的改进中,又加入了保证SNMP体系本身安全性的目标。
另外,SNMP中提供了四类管理 *** 作:get *** 作用来提取特定的网络管理信息;get-next *** 作通过遍历活动来提供强大的管理信息提取能力;set *** 作用来对管理信息进行控制(修改、设置);trap *** 作用来报告重要的事件。
二、 SNMF管理控制框架与实现
1.SNMP管理控制框架
SNMP定义了管理进程(manager)和管理代理(agent)之间的关系,这个关系称为共同体(community)。描述共同体的语义是非常复杂的,但其句法却很简单。位于网络管理工作站(运行管理进程)上和各网络元素上利用SNMP相互通信对网络进行管理的软件统统称为SNMP应用实体。若干个应用实体和SNMP组合起来形成一个共同体,不同的共同体之间用名字来区分,共同体的名字则必须符合Internet的层次结构命名规则,由无保留意义的字符串组成。此外,一个SNMP应用实体可以加入多个共同体。
SNMP的应用实体对Internet管理信息库中的管理对象进行 *** 作。一个SNMP应用实体可 *** 作的管理对象子集称为SNMP MIB授权范围。SNMP应用实体对授权范围内管理对象的访问仍然还有进一步的访问控制限制,比如只读、可读写等。SNMP体系结构中要求对每个共同体都规定其授权范围及其对每个对象的访问方式。记录这些定义的文件称为“共同体定义文件”。
SNMP的报文总是源自每个应用实体,报文中包括该应用实体所在的共同体的名字。这种报文在SNMP中称为“有身份标志的报文”,共同体名字是在管理进程和管理代理之间交换管理信息报文时使用的。管理信息报文中包括以下两部分内容:
(1)共同体名,加上发送方的一些标识信息(附加信息),用以验证发送方确实是共同体中的成员,共同体实际上就是用来实现管理应用实体之间身份鉴别的;
(2)数据,这是两个管理应用实体之间真正需要交换的信息。
在第三版本前的SNMP中只是实现了简单的身份鉴别,接收方仅凭共同体名来判定收发双方是否在同一个共同体中,而前面提到的附加倍息尚未应用。接收方在验明发送报文的管理代理或管理进程的身份后要对其访问权限进行检查。访问权限检查涉及到以下因素:
(1)一个共同体内各成员可以对哪些对象进行读写等管理 *** 作,这些可读写对象称为该共同体的“授权对象”(在授权范围内);
(2)共同体成员对授权范围内每个对象定义了访问模式:只读或可读写;
(3)规定授权范围内每个管理对象(类)可进行的 *** 作(包括get,get-next,set和trap);
(4)管理信息库(MIB)对每个对象的访问方式限制(如MIB中可以规定哪些对象只能读而不能写等)。
管理代理通过上述预先定义的访问模式和权限来决定共同体中其他成员要求的管理对象访问( *** 作)是否允许。共同体概念同样适用于转换代理(Proxy agent),只不过转换代理中包含的对象主要是其他设备的内容。
2.SNMP实现方式为了提供遍历管理信息库的手段,SNMP在其MIB中采用了树状命名方法对每个管理对象实例命名。每个对象实例的名字都由对象类名字加上一个后缀构成。对象类的名字是不会相互重复的,因而不同对象类的对象实例之间也少有重名的危险。
在共同体的定义中一般要规定该共同体授权的管理对象范围,相应地也就规定了哪些对象实例是该共同体的“管辖范围”,据此,共同体的定义可以想象为一个多叉树,以词典序提供了遍历所有管理对象实例的手段。有了这个手段,SNMP就可以使用get-next *** 作符,顺序地从一个对象找到下一个对象。get-next(object-instance) *** 作返回的结果是一个对象实例标识符及其相关信息,该对象实例在上面的多叉树中紧排在指定标识符;bject-instance对象的后面。这种手段的优点在于,即使不知道管理对象实例的具体名字,管理系统也能逐个地找到它,并提取到它的有关信息。遍历所有管理对象的过程可以从第一个对象实例开始(这个实例一定要给出),然后逐次使用get-next,直到返回一个差错(表示不存在的管理对象实例)结束(完成遍历)。
由于信息是以表格形式(一种数据结构)存放的,在SNMP的管理概念中,把所有表格都视为子树,其中一张表格(及其名字)是相应子树的根节点,每个列是根下面的子节点,一列中的每个行则是该列节点下面的子节点,并且是子树的叶节点,如下图所示。因此,按照前面的子树遍历思路,对表格的遍历是先访问第一列的所有元素,再访问第二列的所有元素……,直到最后一个元素。若试图得到最后一个元素的“下一个”元素,则返回差错标记。
SNMP树形表格结构示意图
SNMP中各种管理信息大多以表格形式存在,一个表格对应一个对象类,每个元素对应于该类的一个对象实例。那么,管理信息表对象中单个元素(对象实例)的 *** 作可以用前面提到的get-next方法,也可以用后面将介绍的get/set等 *** 作。下面主要介绍表格内一行信息的整体 *** 作。
(1)增加一行:通过SNMP只用一次set *** 作就可在一个表格中增加一行。 *** 作中的每个变量都对应于待增加行中的一个列元素,包括对象实例标识符。如果一个表格中有8列,则set *** 作中必须给出8个 *** 作数,分别对应8个列中的相应元素。
(2)删除一行:删除一行也可以通过SNMP调用一次set *** 作完成,并且比增加一行还简单。删除一行只需要用set *** 作将该行中的任意一个元素(对象实例)设置成“非法”即可。但该 *** 作有一个例外:地址翻译组对象中有一个特殊的表(地址变换表),该表中未定义一个元素的“非法”条件。因此,SNMP中采用的办法是将该表中的地址设置成空串,而空字符串将被视为非法元素。
至于删除一行时,表中的一行元素是否真的在表中消失,则与每个设备(管理代理)的具体实现有关。因此,网络管理 *** 作中,运行管理进程可能从管理代理中得到“非法”数据,即已经删除的不再使用的元素的内容,因此管理进程必须能通过各数据字段的内容来判断数据的合法性。
NMS
NMS是Network Management System的缩写,意思是网络管理系统,简称网管。告警,性能,配置,安全,计费是网管的五大功能。
只能找到这么多了

是默认开启的,

网络故障第一时间是客户报障,不能全局发现问题,面向企业园区网络,还一款面向运营商的

SNMP架构:分为NMS和Agent两部分(agent读取内部MIB库)

国际标准定义:MIB2、RMON标准库

agent它是一个进程,主要负责信息采集读取、执行 *** 作,通知,帮助管理站获取信息



一、功能原理



二、工作原理



SNMP的结构包括:NMS网络管理站点、SNMP代理

SNMP规定了NMS和Agent之间如何传递管理信息的应用层协议

Agent只是进程,作用:执行 *** 作、通知



三、消息、版本

V1:三大 *** 作:Read、Write、Trap,Trap唯一是被管设备主动发起的

V2C:批量取数据,

V3:增加了身份验证和加密处理,增强网管安全设置,传输加密,权限控制



SNMP实际上是一个特殊的「要求/响应」协议,可支持两种要求讯息:



get及put,前者是用来从某些节点取出状态信息,而后者则是用来在某些节点上储存一份新的状态信息



通过NMS来更改设备上的配置,查询设备信息,发送的数据包为Get,更改设备的配置为Set(MIB相当于索引)



华为的SNMP的配置步骤



SNMP基本配置流程:

1、配置设备与NMS系统间通信正常(保证路由可达)

2、开启设备SNMP agent功能(缺少为开启)

3、配置snmp协议版本

4、配置设备snmp读写团体名

5、配置设备发送trap报文的参数信息

6、配置设备发送告警和错误码的目的主机

7、配置设备管理员的****的位置


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10894249.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-12
下一篇2023-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存