zoukankan      html  css  js  c++  java
  • 使用zabbix监控oracle数据库

    使用zabbix监控oracle数据库

     

    一、概述

    zabbix是一款非常强大,同时也是应用最为广泛的开源监控软件,本文将给大家介绍如何利用zabbix+python监控oracle数据库。

    二、环境介绍

    以下是我安装的环境,实际部署时并不需要跟我的环境一样。

    1. 监控机 Redhat Linux 6.5 + Zabbix server 3.4.10 + Python 2.6.6 (操作系统自带) + Oracle Client 11.2 (x86_64)

    2. 被监控机 Oracle 11.2.0.4

    三、选择监控方式

    zabbix监控的方式主要有以下三种类型

    Zabbix agent

    在被监控机上面安装zabbix agent,zabbix agent将被监控机采集到的数据发送给zabbix server。这种方式最常用,一般用来采集服务器的cpu、内存等信息。

    SNMP

    一些网络设备如交换机,上面无法安装zabbix agent,所以只能通过snmp的方式收集监控数据如端口状态,流量等。

    External check

    在zabbix server上面运行查询脚本,直接查询被监控机上的数据。此种方式在被监控机上面不需要做任何部署,所有查询全部从zabbix server上面发出,所以对zabbix server的性能要求较高,官方不推荐大量使用该方式。对于少量的oracle数据库服务器,可以采用该方式。

    本文介绍的就是使用external check方式去监控oracle数据库。

    四、规划监控项

    监控数据库的目的是为了保障数据库稳定运行,一旦出现故障,dba能够及时发现并介入处理,监控项分为以下两类

    1. 数据库空间不足或数据库发生故障,DBA需要立即处理。

    监控项包括表空间、用户状态、实例状态、锁、大量等待事件、闪回区使用率等。此类监控项需要给其设置触发器,一旦出现异常,及时告警。

    2. 数据库运行状态的一些统计信息,为DBA定位数据库性能问题发生的时间和类别提供参考。

    监控项包括常见的等待事件发生的次数,命中率、硬解析比例等。

    下面表格中列出附件中模板的监控项

    五、安装

    上面闲话扯完,进入正式安装环节,我假定你已经安装了zabbix server,因此这里略过zabbix server的安装步骤。

    以下所有操作均在zabbix服务器上面执行

    安装oracle客户端

    从官网下载如下三个rpm包

    oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

    oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

    oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

    使用root安装oracle客户端

    rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

    rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

    rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

    配置环境变量

    vi + /etc/profile

    ---------------------------------------------

    export ORACLE_HOME=/usr/lib/oracle/11.2/client64

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    export PATH=$PATH:$ORACLE_HOME/bin

    执行下面的命令让配置生效

    source /etc/profile

    添加动态库配置文件

    vi + /etc/ld.so.conf.d/oracle.conf

    ---------------------------------------

    /usr/lib/oracle/11.2/client64/lib

    执行命令ldconfig

    连接oracle进行测试

    SQL> sqlplus scott/tiger@192.168.56.101:1521/orcltest

    SQL*Plus: Release 11.2.0.4.0 Production on Wed Apr 24 18:24:28 2019

    Copyright (c) 1982, 2013, Oracle. All rights reserved.

    Connected to:

    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL>

    出现上面的提示证明oracle client安装成功

    安装python相关包

    安装cx_Oracle(python连接oracle的包)

    wget http://downloads.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm

    rpm -ivh cx_Oracle-5.1.2-11g-py26-1.x86_64.rpm

    安装argparse

    wget https://bootstrap.pypa.io/2.6/get-pip.py --no-check-certificate

    python get-pip.py

    pip install argparse

    上传python脚本

    将附件中的pyora.py脚本放入/usr/lib/zabbix/externalscripts/目录下

    赋权限,让zabbix用户能够执行该脚本

    chmod 755 /usr/lib/zabbix/externalscripts/pyora.py

    [注意:先在被监控机的oracle数据库中创建监控用户,用户名和密码可以自己随意指定

    create user zabbix identified by zabbix;

    grant connect, select any dictionary to zabbix;]

    测试脚本

    python pyora.py --username zabbix --password zabbix --address 10.30.10.32 --port 1521 --database office show_tablespaces

    上面测试脚本的参数说明

    username: 用户名

    password: 密码

    address: 被监控机ip地址

    port: 端口号

    database: oracle service name

    有返回结果表示脚本能正常运行

    上传template文件

    将附件中的Pyora_ExternalCheck_11G.xml模板导入到zabbix server中

    在zabbix页面中,依次点击Configuration – Templates – Import – 选择文件 – Import,即完成了导入

    clip_image002_thumb3

    clip_image004_thumb4

    添加机器,并链接到模板

    在zabbix页面中,依次点击Configuration – Hosts – Create host – Hostname (输入ip地址) – groups (选Linux servers) – Templates (选择Pyora_ExternalCheck_11G) – 点击上面的Add – Macros – 点击上面的Add添加宏,全部添加完毕后,点击下面的Add,主机即添加完毕

    clip_image006_thumb1

    clip_image008_thumb2

    clip_image010_thumb1

    clip_image012_thumb1

    查看监控数据

    Monitoring – Latest Data – Host (选择对应的主机),则可以看到监控的数据了

    clip_image014_thumb1

    添加自定义监控项

    如果你想监控其它的数据,则只需要在pyora.py中添加一个函数,然后在模板中创建一个监控项,Key末尾对应相应的函数名即可,十分方便

    clip_image016_thumb1

    上图中函数名为check_active,则下图对应的Key为pyora.py[--username,{$USERNAME},--password,{$PASSWORD},--address,{$ADDRESS},--database,{$DATABASE},--port,{$PORT},check_active]

    clip_image018_thumb1

    参考: https://github.com/bicofino/Pyora

    附件:

    pyora.py,Pyora_ExternalCheck_11G.xml地址放在github上

    https://github.com/YangBaohust/zabbix_templates

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 特等奖学金(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 GPA(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    第一届云原生应用大赛火热报名中! helm install “一键安装”应用触手可及!
    云原生时代,2个方案轻松加速百万级镜像
    Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/15245991.html
Copyright © 2011-2022 走看看