[关闭]
@cdmonkey 2018-01-04T04:23:52.000000Z 字数 7609 阅读 1363

数据库监控

Zabbix


一、普通监控

首先需要安装Agent,安装后会自动创建zabbix用户,再执行下面的操作:

  1. usermod -a -G oinstall zabbix
  2. usermod -a -G asmadmin zabbix
  1. [root@bapdb1 ~]# mkdir -pv /etc/zabbix/monitor_scripts
  2. [root@bapdb1 ~]# chown zabbix.zabbix /etc/zabbix/monitor_scripts

将监控脚本放入上面的目录中。

  1. [root@bapdb1 ~]# cd /etc/zabbix/monitor_scripts/
  2. <!-- 上传脚本文件 -->
  3. [root@bapdb1 monitor_scripts]# chown zabbix.zabbix ./*
  4. [root@bapdb1 monitor_scripts]# chmod 755 ./*
  1. [root@bapdb1 ~]# visudo
  2. #Defaults requiretty
  3. zabbix ALL=(ALL) NOPASSWD: /sbin/blockdev

修改“Zabbix Agent”的配置文件,创建用户自定义参数:

  1. [root@bapdb1 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. UserParameter=mount_disk_discovery,/etc/zabbix/monitor_scripts/disk_discovery.sh
  3. UserParameter=check_ntp_time,/etc/zabbix/monitor_scripts/check_ntp_time -H pbsntp02.suixingpay.com | awk '{print $4}'
  4. UserParameter=check_tcp[*],/etc/zabbix/monitor_scripts/tcp_connect.sh $1
  5. UserParameter=ora.tab.discovery,/etc/zabbix/monitor_scripts/oracle_tabspace_discovery.sh
  6. UserParameter=tablespace[*],/etc/zabbix/monitor_scripts/oracle_tabspace_check.sh $1 $2
  7. UserParameter=ora.diskgroup.discovery,/etc/zabbix/monitor_scripts/oracle_diskgroup_discovery.sh
  8. UserParameter=diskgroup[*],/etc/zabbix/monitor_scripts/oracle_diskgroup_check.sh $1 $2
  9. UserParameter=ora.oggcheck,/etc/zabbix/monitor_scripts/check_ogg.sh
  10. UserParameter=disk_luo_discovery,/etc/zabbix/monitor_scripts/disk-luo_discovery.sh
  11. UserParameter=ora.logswcheck,/etc/zabbix/monitor_scripts/oracle_logswitches_check.sh
  12. UserParameter=lock_discovery,/etc/zabbix/monitor_scripts/lock_discovery.sh
  13. UserParameter=lock_check[*],/etc/zabbix/monitor_scripts/oracle_lock_check.sh $1 $2 $3
  14. UserParameter=listener_check,/etc/zabbix/monitor_scripts/check_oracle_listener.sh
  15. UserParameter=alert_check,/etc/zabbix/monitor_scripts/check_oracle_alert.sh
  1. [root@bapdb1 ~]# touch /tmp/mounts.tmp
  2. [root@bapdb1 ~]# chown zabbix:zabbix /tmp/mounts.tmp

最后重启服务。

Install orabbix

首先配置好JAVA环境。

  1. [root@agstestedb ~]# vim /etc/profile
  2. JAVA_HOME="/root/jdk1.8.0_101"
  3. CLASSPATH="$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
  4. PATH="$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin"
  5. [root@agstestedb ~]# source /etc/profile
  1. [root@bapdb1 ~]# mkdir -pv /opt/orabbix
  2. [root@bapdb1 ~]# cd /opt/orabbix/
  3. # Upload orabbix-1.2.3.zip
  4. [root@bapdb1 orabbix]# unzip orabbix-1.2.3.zip
  5. [root@bapdb1 orabbix]# chmod +x run.sh
  6. [root@bapdb1 orabbix]# cd /opt/orabbix/conf/
  7. [root@bapdb1 conf]# cp config.props.sample config.props
  8. # Modify config.props
  9. [root@bapdb1 conf]# vim config.props
  10. ZabbixServerList=ZabbixServer1
  11. ZabbixServer1.Address=10.1.1.225
  12. ZabbixServer1.Port=10051
  13. ...
  14. DatabaseList=trandb1 # 这个名字可以自行命名,但是需要同下面的名字保持一致。
  15. # 并且于 Zabbix Server 上面配置的主机名要和这个保持一致。
  16. ...
  17. trandb1.Url=jdbc:oracle:thin:@10.1.11.11:1521:trandb1
  18. trandb1.User=zabbix
  19. trandb1.Password=zabbix
  20. ...

若监控Oracle 12c,则配置文件内容写法稍有不同:其他的都一样,只是jdbc连接的写法不太一样。
http://blog.itpub.net/23718752/viewspace-2127174

  1. agstestedb.Url=jdbc:oracle:thin:@10.1.11.87:1521/SXP1

注意:数据库的实例名称一定要填写正确。

  1. [root@bapdb1 ~]# cp /opt/orabbix/init.d/orabbix /etc/init.d/
  2. [root@bapdb1 ~]# chmod +x /etc/init.d/orabbix

启动服务:

  1. [root@bapdb1 ~]# /etc/init.d/orabbix start
  2. # Check
  3. [root@bapdb1 ~]# ps -ef|grep orabbix
  4. root 23385 1 6 20:21 pts/3 00:00:05 /jdk/jdk1.8.0_91/bin/java -Duser.language=en...

时间同步需要解析时间同步服务器的域名:

  1. # ntp server
  2. 10.1.47.205 pbsntp01.suixingpay.com
  3. 10.1.47.206 pbsntp02.suixingpay.com

二、其他监控

Image
DB_Moniter.png-247.7kB                                                   
  Monitor script Discovery script oracle user
Disk IO oracle_disk_discovery.sh
TableSpace oracle_tabspace_check.sh oracle_tabspace_discovery.sh get_tabspace.sh
DiskGroup oracle_diskgroup_check.sh oracle_diskgroup_discovery.sh get_diskgroup.sh
Luo-Disk oracle_disk-luo_discovery.sh
LogSwitch oracle_logswitch_check.sh get_logswitch.sh
Lock oracle_lock_check.sh oracle_lock_discovery.sh get_lock.sh
OGG oracle_ogg_check.sh oracle_ogg-checkprocess_check.sh get_oggstatus.sh
LongSQL get_longsql.sh
Listener oracle_listener_check.sh
Alert oracle_alert_check.sh

1. Disk IO

该监控主要是针对不同分区的硬盘读写的监控,并且其不只是用于数据库监控,普通服务器监控同样适用。需要使用的脚本有:

Script Name Type Explain
oracle_disk_discovery.sh Discovery script 用于自动发现系统中的分区。

使用该监控项的模板:PBS_Template_Linux_DiskIO

2. TableSpace

该监控主要是针对表空间使用率的监控。需要使用的脚本有:

Script Name Type Explain
oracle_tabspace_check.sh Monitor script 获得指定表空间的大小及使用率。
oracle_tabspace_discovery.sh Discovery script 将发现的表空间输出为 Json 信息。
get_tabspace.sh oracle cron 使用定时任务,从数据库中定期查询出使用的表空间。

3. DiskGroup

该监控主要是针对磁盘组使用率的监控。需要使用的脚本有:

Script Name Type Explain
oracle_diskgroup_check.sh Monitor script 获得指定磁盘组的大小及使用率。
oracle_diskgroup_discovery.sh Discovery script 将发现的磁盘组输出为 Json 信息。
get_diskgroup.sh oracle cron 使用定时任务,从数据库中定期查询出磁盘组信息。

4. Luo-Disk

该监控主要是针对裸磁盘使用率的监控。需要使用的脚本有:

5. LogSwitch

该监控主要是针对数据库日志切换的监控。需要使用的脚本有:

Script Name Type Explain
oracle_logswitch_check.sh Monitor script 获得日志切换次数。
get_logswitch.sh oracle cron

6. Lock

该监控主要是针对锁的监控。需要使用的脚本有:

Script Name Type Explain
oracle_lock_check.sh Monitor script 获得指定锁存在的时长。
oracle_lock_discovery.sh Discovery script 将发现的锁输出为 Json 信息。
get_lock.sh oracle cron 使用定时任务,从数据库中定期查询出现的锁。

7. OGG

该监控主要是针对 OGG 健康状况的监控。需要使用的脚本有:

Script Name Type Explain
oracle_ogg_check.sh oracle_ogg-checkprocess_check.sh Monitor script
get_oggstatus.sh

该监控无需执行什么 sql 语句,只需要执行一个检测脚本进行检查即可。最后,需要将获取 OGG 信息的脚本放于后台运行,而不是通过定时任务的方法。

  1. [oracle@trandb1 ~]$ nohup sh shell/get_oggstatus.sh &

注意:监控脚本有两个,一个是获取监控数值的脚本,一个是负责检查后台那个脚本是否正常运行的脚本。

8. Long SQL

该监控主要是针对耗时较长的 SQL 语句的监控。需要使用的脚本有:

Script Name Type Explain
get_longsql.sh oracle cron 用于发现长 SQL 语句,并通过 zabbix_sender 指令发送给监控端。

注意:该监控使用的是“ Zabbix trapper”的方式。

9. Listener

该监控主要是针对监听器日志的监控。需要使用的脚本有:

Script Name Type Explain
oracle_listener_check.sh Monitor script

可通过下面的方法找到对应之 log 文件:

  1. [oracle@agstestedb ~]$ lsnrctl status
  2. ...
  3. Listener Log File /u01/app/oracle/diag/tnslsnr/agstestedb/listener/alert/log.xml
  4. ...
  5. -------------------
  6. [oracle@agstestedb ~]$ cd /u01/app/oracle/diag/tnslsnr/agstestedb/listener/
  7. [oracle@agstestedb listener]$ cd trace/
  8. [oracle@agstestedb trace]$ ls
  9. listener.log

最后还需要创建相应的定时任务:

  1. # Get table space
  2. */3 * * * * /bin/sh /home/oracle/shell/oracle_tabspace.sh &> /dev/null
  3. # Get disk group
  4. */3 * * * * /bin/sh /home/oracle/shell/oracle_diskgroup.sh &> /dev/null
  5. # Log switch
  6. */10 * * * * /bin/sh /home/oracle/shell/oracle_logswitches.sh &> /dev/null
  7. # Get lock status
  8. */1 * * * * /bin/sh /home/oracle/shell/oracle_lock.sh &> /dev/null
  9. # Get long SQL
  10. */1 * * * * /bin/sh /home/oracle/shell/oracle_longsql.sh &> /dev/null

三、MySQL

http://www.cnblogs.com/caoxiaojian/p/5706992.html
http://blog.csdn.net/mchdba/article/details/51447750
http://jaminzhang.github.io/monitoring/Monitoring-MySQL-using-Percona-Monitoring-Plugins-in-Zabbix/
https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/

Install Dependency Package

  1. yum install -y php php-mysql

可能于安装mysql-libs这个包的时候同本地的MySQL-server的版本有冲突。

  1. # 发生冲突时会有下面的报错信息:
  2. Transaction Check Error:
  3. file /usr/share/mysql/charsets/Index.xml from install of mysql-libs-5.1.73-8.el6_8.x86_64 conflicts with file from package MySQL-server-5.5.34-1.linux2.6.x86_64
  4. ...

解决方法:

http://hz999.blog.51cto.com/10862775/1754810

  1. [root@PBSTMS01 tools]# rpm -ivh MySQL-shared-5.5.54-1.el6.x86_64.rpm
  2. [root@PBSTMS01 tools]# rpm -ivh MySQL-shared-compat-5.5.54-1.el6.x86_64.rpm

上面的两个包的下载地址:
https://dev.mysql.com/downloads/mysql/5.5.html?os=31

Install Percona-MySQL

  1. [root@PBSSDL02 tools]# rpm -ivh percona-zabbix-templates-1.1.7-2.noarch.rpm
  2. warning: percona-zabbix-templates-1.1.7-2.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
  3. Preparing... ########################################### [100%]
  4. 1:percona-zabbix-template########################################### [100%]
  5. Scripts are installed to /var/lib/zabbix/percona/scripts
  6. Templates are installed to /var/lib/zabbix/percona/templates

zabbix/zabbixmonitor123

  1. [root@PBSSDL02 tools]# cd /var/lib/zabbix/percona/templates/
  2. [root@PBSSDL02 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

修改配置文件:

  1. [root@PBSSDL02 ~]# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
  2. # 主要是下面的这几项配置内容:
  3. $mysql_user = 'zabbix';
  4. $mysql_pass = 'zabbixmonitor123';
  5. $mysql_socket = '/tmp/mysql.sock';

进行测试:

  1. cd /var/lib/zabbix/percona/scripts/
  2. /usr/bin/php -q ./ss_get_mysql_stats.php --host localhost --items gg
  3. gg:12

还有一个重要的操作:

  1. chown zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注