作者:樂維社群(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使用問題也歡迎到樂維社群留言提問~