• 使用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

  • 相关阅读:
    JSON初试
    for ...in 、for each ...in、 for...of(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)
    WPF MVVM 模式下的弹窗
    『简易日志』NuGet 日志包 SimpleLogger
    WPF 让一组 Button 实现 RadioButton 的当前样式效果
    IIS 错误解决:当前标识没有对 Temporary ASP.NET Files 的写访问权限
    [读书笔记] 《大话设计模式》
    WPF 原生绑定和命令功能使用指南
    ASP.NET Core MVC 网站学习笔记
    在香蕉派的树莓派系统上配置 Syncthing 自启动
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/15245991.html
Copyright © 2020-2023  润新知