Zabbix監控神通資料庫教程

乐维_lwops發表於2024-06-19

作者:樂維社群(forum.lwops.cn) 樂樂

神通資料庫,即神舟通用資料庫(ShenTong Database),是我國自主研發的一款關係型資料庫管理系統。它在國內市場有一定的應用,尤其是在一些對資料安全、獨立性有較高要求的領域,如政府、金融、電信、能源、醫療等行業。

Zabbix是一款被廣泛應用的開源監控工具,常常被用於企業機構等IT基礎架構的監控。

本文將介紹如何使用 Docker 快速安裝和配置神舟通用資料庫,並使用Zabbix監控神舟通用資料庫。

安裝步驟參考:

https://blog.csdn.net/weixin_46603727/article/details/131300046

docker映象下載:https://pan.baidu.com/s/1-W_tuGk4waewNhr6C8Z00g

提取碼:9572

1. 安裝步驟

1.1. 安裝docker,下載神舟通用資料庫映象shentong_342_163_x86_64bit.zip並上傳至伺服器。

yum install docker

systemctl start docker

unzip shentong_342_163_x86_64bit.zip

docker load -i shentong_342_163_x86_64bit

匯入完成後,可以使用 docker images 檢視匯入的映象。結果顯示如下:

1.2. 初始化容器。

date -s "2023/06/20" #該映象有試用授權期限,因此需要調整日期

docker run -d -p 2003:2003 --name Oscar shentong_342_163_x86_64bit

#建立並執行容器,將會在後臺啟動一個名為 oscar 的容器,並將容器的2003埠對映到宿主機的2003埠,將資料目錄對映到/opt/ShenTong/。

docker ps -a #檢視容器執行狀態

正常啟動後能看到容器裡啟動了/opt/ShenTong/bin/oscar和/opt/ShenTong/bin/oscaragent程序。如果沒有/opt/ShenTong/bin/osca程序,可能是授權到期了導致啟動失敗,需要調整本機時間。

預設使用者名稱:SYSDB,密碼:szoscar55,庫:OSRDB,schema:SYSDBA

容器內可使用/opt/ShenTong/bin/isql -U SYSDBA/szoscar55 -d osrdb命令連線資料庫。

預設使用者名稱:SYSDBA,密碼:szoscar55,庫:OSRDB,schema:SYSDBA

容器內可使用/opt/ShenTong/bin/isql -U SYSDBA/szoscar55 -d osrdb命令連線資料庫。

測試連線並執行命令:(需要指定連線客戶端的字符集為UTF-8)

export LANG=en_US.UTF-8

export LC_ALL=en_US.UTF-8

/opt/ShenTong/bin/isql -U SYSDBA/szoscar55 -d osrdb sysdba

select version;

2. 準備監控神舟通用資料庫

2.1. 將神舟通用資料庫提供的python模組及需要的lib檔案複製到容器外的/opt目錄下。

docker cp Oscar:/opt/ShenTong/STPython/ /opt

docker cp Oscar:/opt/ShenTong/bin/libaci.so /lib64/

ldconfig -v | grep libaci #載入lib

2.2. 安裝python3.5用於監控神舟通用資料庫。

安裝步驟略

2.3. 安裝連線神舟通用資料庫用的python模組。

python3 -m pip install --no-index --find-links=/opt/STPython/Python35 STPython

2.4. 建立監控用的指令碼。

zabbix的外部檢查目錄下建立2個監控用的指令碼,我使用的是/itops/zabbix/share/zabbix/externalscripts/目錄,需要根據實際情況進行修改。

vi /itops/zabbix/share/zabbix/externalscripts/pyshentongdb

#!/usr/bin/bash

/usr/bin/python3 /itops/zabbix/share/zabbix/externalscripts/pyshentongdb.py --username $1 --password $2 --address $3 --port $4 --database $5 $6 $7 $8

vi /itops/zabbix/share/zabbix/externalscripts/pyshentongdb.py

#!/usr/bin/env python3
# coding: utf-8
# author: cxh

import argparse
import STPython
import inspect
import json
import re

version = 0.2


class Checks(object):

    def version(self):
        """查資料庫版本"""
        sql = "select version"
        self.cur.execute(sql)
        res = self.cur.fetchall()
        for i in res:
            print(i[0])
			
class Main(Checks):
    def __init__(self):
        parser = argparse.ArgumentParser()
        parser.add_argument('--username')
        parser.add_argument('--password')
        parser.add_argument('--address')
        parser.add_argument('--port')
        parser.add_argument('--database')
        subparsers = parser.add_subparsers()

        for name in dir(self):
            if not name.startswith("_"):
                p = subparsers.add_parser(name)
                method = getattr(self, name)
                argnames = inspect.getargspec(method).args[1:]
                for argname in argnames:
                    p.add_argument(argname)
                p.set_defaults(func=method, argnames=argnames)
        self.args = parser.parse_args()

    def db_connect(self):
        a = self.args
        username = a.username
        password = a.password
        address = a.address
        port = a.port
        database = a.database
        self.db = STPython.Connection(user=username,password=password,dsn=str(address)+':'+str(port)+'/'+str(database))
        self.cur = self.db.cursor()

    def db_close(self):
        self.db.close()

    def __call__(self):
        try:
            a = self.args
            callargs = [getattr(a, name) for name in a.argnames]
            self.db_connect()
            try:
                return self.args.func(*callargs)
            finally:
                self.db_close()
        except Exception as err:
            print("0")
            print(str(err))

if __name__ == "__main__":
    main = Main()
    main()

  

本文章僅展示了神舟通用資料庫的一個監控指標新增例子,後續需要神舟通用資料庫的DBA提供常用的監控相關的SQL語句進行監控指標的擴充。

監控結果如下:

附:

資料庫版本監控指標配置示例:

名稱:資料庫版本

型別:外部檢查

鍵值:

pyshentongdb[{$USERNAME},{$PASSWORD},{HOST.CONN},{$PORT},{$DATABASE},version]

更新間隔:7200 (按需進行設定)

需要在模板上增加以下宏:

{$USERNAME}:填寫資料庫的連線使用者名稱

{$PASSWORD}:填寫資料庫的連線密碼

{$PORT}:填寫資料庫的監聽埠

{$DATABASE}:填寫資料庫的例項名,本文是osrdb

以上就是本期文章的全部內容。大家好,我是樂樂,專注運維技術研究與分享,想要了解更多zabbix開源監控使用技巧,歡迎關注樂維社群,同時zabbix使用問題也歡迎到樂維社群留言提問~

相關文章