1. SQL Server数据库监控SNMP代理配置
SQL Server采用扩展代理的方式来实现SNMP代理功能,需要对注册表作相应修改。使得SNMP服务启动时可以自动加载扩展代理。
SQL Server 2000以上的版本,安装时默认都自动注册扩展代理,无须手工配置。扩展代理DLL为sqlsnmp.dll。
目前发现只有V1才能完全支持SQL Server的所有SNMP参数。其中的部分参数不支持Get Bulk导致。
对于SQL Server 2000一下的版本,手工添加扩展代理方法如下,注意区分大小写的匹配:
(1) 添加扩展代理注册信息
找到HKEY_LOCAL_MACHINE/
SYSTEM/
CurrentControlSet/
Services/
SNMP/
Parameter/
ExtensionAgents
新增如下字符串值:格式为:名称、类型、数值
1 : REG_SZ : SOFTWARE/Microsoft/MSSQLServer/SNMP/CurrentVersion
(2) 配置扩展代理DLL对于的路径
转到HKEY_LOCAL_MACHINE/SOFTWARE
创建主键:Microsoft/MSSQLServer/SNMP/CurrentVersion
新增字符串值:Pathname:REG_EXPAND_SZ:d:/Program Files/Microsoft SQL Server/MSSQL/BINN/sqlsnmp.dll
2. Sybase ASE数据库监控SNMP代理配置
在“第三方程序/sybase”目录下带了一个Sybase ASE12.5 的SNMP子代理,它是Net-snmp的AgentX扩展代理。
首先需要安装和配置Net-snmp代理,并且配置Net-snmp支持agentx,简单来说就是snmpd.conf文件中有一行是“master agentx”,具体参考第3章。
2.1. Linux
将“第三方程序/sybase”目录下的SNMP-1_0.tar通过FTP方式拷贝到目标Linux机器上,放在下面的目录中/opt/Sybase-12.5下。
注意:Sybase
安装时,标准的做法是自动创建一个用户sybase
,因此Sybase
的安装目录的权限属于sybase
用户,建议使用sybase
用户登录后来安装这个包。
运行下面的命令解压:
tar xvf SNMP-1_0.tar
进入/opt/Sybase-12.5/SNMP-1_0目录,用vi打开文件snmpagent.cfg,修改其中的配置:
#
# Sybase SNMP Sub-Agent example configuration file
# This file defines the behavior of the Sybase sub-agent.
#
# Global values affecting the behavior of the sub-agent
#
# logFile=logfile
# Full path to the agent's logfile
#
# masterAgentLocation=host:port
# The host and port number that the master agent is listening on for
# agentX connections. When using the net-snmp agent, this is the
# "-x" value.
#
# rpcPort=port
# The port to listen on for remote procedure calls. Used by ASE or
# other servers to call sp_errornotify. You would use this same value whe
n you
# create an interfaces file entry for the Sybase Agent so that an ASE can
send it
# an RPC.
#
#
#
# Server sections
# Some configuration values are specific to the server that is being monitored.
# A section is defined with the server name in brackets, followed by the configu
ration
# values for that server.
#
# login=loginname
# The login name the SNMP agent will connect with.
#
# password=pwd
# The password value the SNMP agent will connect with.
#
# serverLocation=host:port
# The network location of a Sybase server to monitor.
#
# fastPollTime=seconds
# The number of seconds in between collection of frequently
# changing data such as performance counters.
#
# slowPollTime=seconds
# The number of seconds in between collection of slowly changing
# data such as configuration values.
#
# description=line of text
# Value to return as a description of the server.
#
# applUrl=line of text
# Value to return in applUrl field of ApplTabl in the Network Services MIB
. It will default
# to blank.
#
# serverType=ase or openserver
# Indicates whether this is an ASE or an Open Server based application suc
h as backup server.
#
#
# Global Values
#
masterAgentLocation=localhost:705
rpcPort=5210
logFile=/opt/sybase-12.5/SNMP-1_0/SybaseAgent.log
#
# Server definitions
#
#[locahost_BACKUP]
[linux_back]
fastPollTime=60
slowPollTime=3600
#sybase backupserver服务启动的端口,具体可以看/opt/sybase-12.5/interfaces文件配置
#将下面的“linux”修改成本机的IP地址
serverLocation=linux:4200
description=Example backup server
serverType=openserver
#[localhost_ASE]
[linux]
login=sa
password=xxxxx #这里输入连接数据库的密码
fastPollTime=60
slowPollTime=3600
#sybase dataserver服务启动的端口,具体可以看/opt/sybase-12.5/interfaces文件配置
#将下面的“linux”修改成本机的IP地址
serverLocation=linux:4100
description=Example Sybase ASE
serverType=ase
|
配置完成后,运行下面命令可以启动sybase子代理
java –jar /opt/sybase-12.5/SNMP-1_0/lib/SybaseAgent.jar –c /opt/sybase-12.5/SNMP-1_0/snmpagent.cfg &
为了在系统重启后能够自动启动子代理,需要在/etc/rc.d/rc.local文件中增加启动子代理的命令,要注意的是rc.local中的java命令必须写全路径,如下所示:
/opt/sybase-12.5/shared-1_0/jre-1.2.2/bin/java -jar /opt/sybase-12.5/SNMP-1_0/lib/SybaseAgent.jar -c /opt/sybase-12.5/SNMP-1_0/snmpagent.cfg &
注意:snmpd
和Sybase
的子代理必须按照顺序启动,并且一旦其中一个退出则必须全部重启snmpd
和Sybase
子代理,否则子代理的工作不正常(无法返回相应的查询结果)
3. Oracle数据库监控SNMP代理配置
Oracle 以OracleIntelligent Agent(智能代理,AGNTSVC.EXE)作为操作系统SNMP主代理的方式来工作,将所有的标准SNMP参数请求转发给“操作系统自身的SNMP代理(如NET-SNMP或者是WINDOWS标准SNMP代理)”,并且通过SNMPPeerEncapsulator(协议转换服务,ENCSVC.EXE)与标准SNMP进行通讯。
3.1. 部署案例
3.1.1 Windows
Oracle8i:8.1.3.6
Oracle9i:2.2.4
3.1.2 Unix
Oracle8i:
Oracle9i:
3.2. 验证方法
用OID查询工具看看能否获得如下参数值:
Oracle参数:oraDbTablespaceSizeUsed 1.3.6.1.4.1.311.1.4.1.1.6.1.8,如果不能获取表示Oracle的SNMP参数不能获取;
3.3. Windows配置
SNMP版本支持,目前发现只支持SNMP V1。
3.3.1 修改Windows标准SNMP服务端口
需要将Windows标准SNMP服务端口修改为1161(snmp)、1162(snmptrap)。具体操作参见8.1Windows标准SNMP服务端口修改。
3.3.2 修改Oracle配置文件
主代理服务配置文件master.cfg(OracleOraHome90SNMPPeerMasterAgent,在ORACLE_HOME/Network/admin目录下):
TRANSPORT ordinary SNMP
OVER UDP SOCKET
AT PORT 161 (Oracle Master Agent的服务端口)
COMMUNITY public
ALLOW ALL OPERATIONS
USE NO ENCRYPTION
MANAGER localhost (Trap目标地址)
SEND ALL TRAPS
WITH COMMUNITY public
子代理兼容协议转换服务配置文件encaps.cfg(在ORACLE_HOME/Network/admin目录下):
AGENT AT PORT 1161 WITH COMMUNITY public (表示子代理(Windows标准SNMP服务)使用1161端口)
SUBTREES 1.3.6.1.2.1.1,
1.3.6.1.2.1.2,
1.3.6.1.2.1.3,
1.3.6.1.2.1.4,
1.3.6.1.2.1.5,
1.3.6.1.2.1.6,
1.3.6.1.2.1.7,
1.3.6.1.2.1.8,
1.3.6.1.2.1.25, (HOSTRESOURCE-MIB,必须加入,否则不支持主机监控)
1.3.6.1.4.1.77,
1.3.6.1.2.1
FORWARD ALL TRAPS;
注意:不支持子节点。如设置了1.3.6.1.2.1,如果需要访问1.3.6.1.2.1.25下的资源,还是需要单独设置。
3.3.3 启动
按照如下顺序启动服务,否则可能导致取值异常。
启动Oracle服务(OracleServiceORCL[ORACLE.EXE]),当已经启动时忽略此项
启动Oracle主代理(OracleOraHome90SNMPPeerMasterAgent[AGNTSVC.EXE])
启动 OEM代理服务(OracleOraHome90Agent [dbsnmp.exe])
启动Oracle协议转换服务(OracleOraHome90SNMPPeerEncapsulator[ENCSVC.EXE])
启动Windows SNMP标准服务
注意:如果需要自动启动Oracle及其SNMP服务,只需要将上面的服务全部设置为“自动”则可。
3.4. Linux配置
以AS4(Linux 2.6.9-5.EL,红帽企业 Linux 4)为例进行说明。
SNMP版本支持,目前发现只支持SNMP V1。
3.4.1 关闭SELinux
红帽企业 Linux 4 包括了一个 SELinux 的实现。SELinux 代表了用户,程序以及进程间相互交流的主要变化。在这个发行版本中,SELinux 被默认安装并被开启使用,需要关闭,否则无法正确采集主机监控信息。
正确配置如下:
[root@AS4 selinux]# more /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=Disabled (不能设置为enforcing)
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
3.4.2 安装NET-SNMP
使用如下命令可以查出安装的NET-SNMP包,rpm -qa | grep snmp
AS4自带如下NET-SNMP包:
net-snmp-libs-5.1.2-11
net-snmp-5.1.2-11
net-snmp-utils-5.1.2-11
对于别的平台,参见3.2Linux平台上的安装配置。
3.4.3 修改Linux标准SNMP服务端口(此项需要验证修改的必要性?)
保证操作系统自身的SNMP不占用标准端口(161、162),以空出给作为主代理的ORACLE使用。
其中的配置文件为“/etc/services”,类似于Windows标准SNMP服务端口的修改。
此处设置如下:
snmp 1161/udp #SNMP (修改本地SNMP服务端口为1161,只要不是161则可)
snmptrap 1162/udp snmp-trap #SNMP trap(修改本地SNMP TRAP服务端口为1162,只要不是162则可)
3.4.4 配置NET-SNMP
参见3.2.2配置Net-SNMP代理的设置。
其中必须确保已将NET-SNMP的端口设置为161以外的端口,系统缺省为161,可以在/etc/snmp/snmpd.conf中新增如下行来修改:
agentaddress 1161
注意:/usr/sbin/snmpd加载配置文件的搜索顺序是“/etc/snmp/snmpd.conf /usr/share/snmp/snnpd.conf”
3.4.5 安装Oracle智能代理
3.4.5.1编译智能代理
(1) stop all the instances of this ORACLE_HOME,stop listener
(2) relink the agent
#relink oemagent
(3) you should find agentctl and dbsnmp in $ORACLE_HOME/bin, it's date show they are new files
(3) you should find agentctl and dbsnmp in $ORACLE_HOME/bin, it's date show they are new files
3.4.5.2运行root.sh,修改dbsnmp的属性
成功安装智能代理后,必须运行root.sh脚本,以修改智能代理的权限,以更新或者是创建一份oratab文件,以保证dbsnmp能够
#cd $ORACLE_HOME/bin
#ls -al dbsnmp
紫色部分表明已经成功执行了root.sh脚本。
3.4.5.3修改Oracle配置文件
与Windows下的Oracle配置基本相同。
主代理服务配置文件CONFIG.master:
TRANSPORT ordinary SNMP
OVER UDP SOCKET
AT PORT 161 (Oracle Master Agent的服务端口)
COMMUNITY leagsoft
ALLOW ALL OPERATIONS
USE NO ENCRYPTION
MANAGER localhost (Trap目标地址)
SEND ALL TRAPS
WITH COMMUNITY leagsoft
子代理兼容协议转换服务配置文件CONFIG.encaps:
AGENT AT PORT 1161 WITH COMMUNITY leagsoft (表示子代理(Windows标准SNMP服务)使用1161端口)
SUBTREES 1.3.6.1.2.1.1,
1.3.6.1.2.1.2,
1.3.6.1.2.1.3,
1.3.6.1.2.1.4,
1.3.6.1.2.1.5,
1.3.6.1.2.1.6,
1.3.6.1.2.1.7,
1.3.6.1.2.1.8,
1.3.6.1.2.1.25 (HOSTRESOURCE-MIB,必须加入,否则不支持主机监控)
FORWARD ALL TRAPS;
3.4.6 启动Oracle智能代理
按照如下顺序启动服务,否则可能导致取值异常。
(1) 启动Oracle主代理以及操作相同标准代理
1.首先通过如下命令来确认相应代理没有启动
#ps –d | grep snmpd
#ps –d | grep peer
2. cd $ORACLE_HOME/network/snmp/peer
3. verify that a script start_peer exists.
将start_peer中启动语句修改为
4. su root
5. ./start_peer -a (starts the Master Peer agent, the encapsulator and the native SNMP daemon, 可以使用./start_peer –help 来获得帮助信息)
可以通过如下语句来检查是否启动成功
#ps –d | grep snmpd
#ps –d | grep peer
6. Exit from root.
如果snmpd启动失败,则检查是否不支持
/usr/sbin/snmpd –c snmpd.conf –p 1161的启动方式,如果不支持,需要修改root.sh脚本,找到最后一行,去掉-p $SNMPD_PORT的命令行参数。
本AS4的应用环境就需要删除此项不支持的参数。
(2) 启动智能代理
$cd ORACLE_HOME/bin
$agentctl start
Then use ps -ef|grep dbsnmp
to check the agent started successful or not.