ACOS统一监控之达梦数据采集
署名-汪勇(苏夏)
一、前言
基于目前的互联网环境趋势和国家的倡导,在将来软件基础新的工具或应用国产化是一大方向。而在运维可视化这个行业来说,我们ACOS产品也是需要达梦数据的运行状态做一定的监控,从而完善产品能力。接入方式:
a、将logkit agent安装在达梦数据所在的主机采集主机的性能信息
b、通过配置达梦采集任务并下发到相关的logkit agent 从而采集达梦数据的运行状态
二、达梦数据库采集方式
达梦数据库的运行状态数据主要是通过物化视图的方式对外体现出来,因此我们只需要通过python语言查询达梦的物化视图数据,从而实现对达梦数据的运维监控
达梦数据库python开发环境准备:
编译安装DM驱动:这里主要是通过达梦官方提供的python 环境源码编译安装python-126594-20201027.zip
[root@RS1821 /]# unzip python-126594-20201027.zip [root@RS1821 /]# cd python/dmPython_C/dmPython/ [root@RS1821 dmPython]# python setup.py install ... ... ... Installed /usr/lib64/python2.7/site-packages/dmPython-2.3-py2.7-linux-x86_64.egg Processing dependencies for dmPython==2.3 Finished processing dependencies for dmPython==2.3 [root@RS1821 dmPython]#
成功安装 dmPython 之后可以获取 dmPython 版本,查询方式有以下两种方法:
方法一:通过驱动内置常量获取版本号信息。
(1)在操作系统执行 python 命令,进入 python 交互式开发界面;
(2)在交互式开发界面执行 import dmPython,导入驱动;
(3)在交互式开发界面执行 dmPython.version,获取当前的版本号常量,如图,当前 dmPython 为 2.3 版本。
方法二:通过 python 包管理工具 pip 查看各 python 包的版本(需要预先安装 pip),在操作系统执行 pip list 命令查询各 python 包版本,其中也包含 dmPython 的版本信息,如图所示:
三、达梦数据python采集(dmPython)
import dmPython conn=dmPython.connect(user='SYSDBA',password='SYSDBA001',server= '127.0.0.1',port=5236) cursor = conn.cursor() cursor.execute('select CLNT_IP,CLNT_HOST,USER_NAME,SESS_ID,APPNAME from V$SESSIONS' where USER_NAME not in) values = cursor.fetchall() cols = cursor.description print cols print(values) cursor.close() conn.close()
四、达梦采集指标说明
a、V$SQL_STAT
语句级资源监控内容。记录当前正在执行的SQL语句的资源开销。需要ENABLE_MONITOR=1才开始监控。其中5~58列中的监控项,可以通过SP_SET_SQL_STAT_THRESHOLD()设置监控阀值,超过阀值才开始监控。具体使用参考《DM8_SQL语言使用手册》。
列号 | 列名 | 类型 | 说明 |
1 | SESSID | BIGINT | 会话id |
2 | SESS_SEQ | INTEGER | 会话序列号,用来唯一标识会话 |
3 | SQL_TXT | VARCHAR(1024) | 语句 |
4 | SQL_ID | INTEGER | 语句编号 |
5 | EXEC_TIME | BIGINT | 执行时间(MS) |
6 | PARSE_CNT | BIGINT | 解析次数 |
7 | PARSE_TIME | BIGINT | 解析时间(MS) |
8 | HARD_PARSE_CNT | BIGINT | 硬解析次数 |
9 | HARD_PARSE_TIME | BIGINT | 硬解析时间(MS) |
10 | SEL_SQL_CNT | BIGINT | 执行的查询语句总数 |
11 | INS_SQL_CNT | BIGINT | 执行的插入语句总数 |
12 | DEL_SQL_CNT | BIGINT | 执行的删除语句总数 |
13 | UPD_SQL_CNT | BIGINT | 执行的更新语句总数 |
14 | DDL_SQL_CNT | BIGINT | 执行的DDL语句总数 |
15 | SEL_IN_PL_CNT | BIGINT | 执行的语句块中的查询语句总数 |
16 | INS_IN_PL_CNT | BIGINT | 执行的语句块中的插入语句总数 |
17 | DEL_IN_PL_CNT | BIGINT | 执行的语句块中的删除语句总数 |
18 | UPD_IN_PL_CNT | BIGINT | 执行的语句块中的更新语句总数 |
19 | DYN_EXEC_CNT | BIGINT | 执行的语句块中的动态执行语句总数 |
20 | DDL_EVT_TRG_CNT | BIGINT | DDL事件触发器触发次数 |
21 | STMT_BF_TRG_CNT | BIGINT | 语句级BEFORE触发器触发次数 |
22 | STMT_AF_TRG_CNT | BIGINT | 语句级AFTER触发器触发次数 |
23 | ROW_BF_TRG_CNT | BIGINT | 行级BEFORE触发器触发次数 |
24 | ROW_AF_TRG_CNT | BIGINT | 行级AFTER触发器触发次数 |
25 | INSTEAD_OF_TRG_CNT | BIGINT | INSTEAD OF触发器触发次数 |
26 | OPTIMIZED_SORT_CNT | BIGINT | 最优排序次数 |
27 | ONE_WAY_SORT_CNT | BIGINT | 单路排序次数 |
28 | MULTI_WAY_SORT_CNT | BIGINT | 多路排序次数 |
29 | RUNTIME_OBJ_ALLOC_CNT | BIGINT | 运行时对象创建次数 |
30 | RUNTIME_OBJ_SIZE_CNT | BIGINT | 运行时对象占用空间大小 |
31 | RUNTIME_OBJ_RECLAIM_CNT | BIGINT | 运行时对象回收次数 |
32 | LONG_ROW_CVT_CNT | BIGINT | 超长记录字段压缩次数 |
33 | LOGIC_READ_CNT | BIGINT | 逻辑读页次数 |
34 | PHY_READ_CNT | BIGINT | 物理读页次数 |
35 | PHY_MULTI_READ_CNT | BIGINT | 物理读多页次数 |
36 | RECYCLE_LOGIC_READ_CNT | BIGINT | 临时表空间逻辑读次数 |
37 | RECYCLE_PHY_READ_CNT | BIGINT | 临时表空间物理读次数 |
38 | HBUF_LOGIC_READ_CNT | BIGINT | HBUF逻辑读次数 |
39 | HBUF_PHY_READ_CNT | BIGINT | HBUF物理读次数 |
40 | HBUF_PHY_WRITE_CNT | BIGINT | HBUF物理写次数 |
41 | HBUF_PHY_READ_SIZE | BIGINT | HBUF物理读总大小 |
42 | HBUF_PHY_WRITE_SIZE | BIGINT | HBUF物理写总大小 |
43 | UNDO_PAGE_CHANGES_CNT | BIGINT | undo页变化次数 |
44 | RECYCLE_PAGE_CHANGES_CNT | BIGINT | 临时页变化次数 |
45 | DATA_PAGE_CHANGES_CNT | BIGINT | 数据页变化次数 |
46 | IO_WAIT_TIME | BIGINT | I/O等待时间(MS) |
47 | TAB_SCAN_CNT | BIGINT | 统计全表扫描次数 |
48 | HASH_JOIN_CNT | BIGINT | 统计哈希连接的次数 |
49 | BTR_SPLIT_CNT | BIGINT | B树分裂次数 |
50 | BTR_PAGE_DISCARD_CNT | BIGINT | 数据页丢弃次数 |
51 | BTR_LEVEL_DISCARD_CNT | BIGINT | B树层丢弃次数 |
52 | BTR_LEFT_TRY_CNT | BIGINT | B树左移次数 |
53 | BTR_DIRECT_UPDATE_CNT | BIGINT | B树直接更新次数 |
54 | BTR_INSDEL_UPDATE_CNT | BIGINT | B树插入删除更新次数 |
55 | BTR_UPDATE_2ND_CONFLICT_CNT | BIGINT | 二级索引更新冲突次数 |
56 | UPDATE_MVCC_RETRY_CNT | BIGINT | 多版本更新重试次数 |
57 | DELETE_MVCC_RETRY_CNT | BIGINT | 多版本删除重试次数 |
58 | MAX_MEM_USED | BIGINT | 内存使用峰值(K) |
b、表空间信息
通过以下语句可查看表空间基本信息:表空间大小,剩余空间大小,表空间使用率等。
SELECT a.tablespace_name as tablespace_name , total / (1024 * 1024) as space_total_M, free / (1024 * 1024) as space_free_M, (total - free) / (1024 * 1024 ) as space_use_M, total / (1024 * 1024 * 1024) as space_total_G, free / (1024 * 1024 * 1024) as space_free_G, (total - free) / (1024 * 1024 * 1024) space_use_G, round((total - free) / total, 4) * 100 as use_rate FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;
指标说明
指标 | 说明 | |
tablespace_name | 表空间名称 | |
space_total_M | 表空间大小(M) | |
space_free_M | 表空间剩余大小(M) | |
space_use_M | 表空间使用大小(M) | |
space_total_G | 表空间大小(G) | |
space_free_G | 表空间剩余大小(G) | |
space_use_G | 表空间使用大小(G) | |
use_rate | 使用率 % |
C、mate 指标(select NAME,VALUE FROM V$PARAMETER)
参数 | 默认值 | 参数描述及建议 | 属性 |
MEMORY_POOL | 500 | 共享内存池大小,以 M 为单位。共享内存池是由 DM 管理 | 静态 |
MEMORY_TARGET | 15000 | 共享内存池在扩充到此大小以上后,空闲时收缩回此指定大 | 动态, |
BUFFER | 1000 | 系统缓冲区大小,以 M 为单位。推荐值:系统缓冲区大小为 | 静态 |
PWD_POLICY | 2 | 用来设置新建用户的密码策略,建议生产中按照生产规范来做 | 动态, |
SORT_BUF_SIZE | 20 | 原排序机制下,排序缓存区最大值,以 M 为单位,有效值范围 | 动态, |
BUFFER_POOLS | 19 | BUFFER 系统分区数,一般配置为质数,并发较大的系统需要配 | 静态 |
RECYCLE | 300 | RECYCLE 缓冲区大小,以 M 为单位。有效值范围 | 静态 |
RECYCLE_POOLS | 19 | RECYCLE 缓冲区分区数,一般配置为质数,并发较大的系统需 | 静态 |
DICT_BUF_SIZE | 50 | 字典缓冲区大小,以 M 为单位。系统中对象个数较多时可适当 | 静态 |
WORKER_THREADS | 16 | 工作线程的数目,建议设置为 CPU 核数或其两倍。 | 静态 |
MAX_SESSIONS | 10000 | 系统允许同时连接的最大数,同时还受到 LICENSE 的限制,取 | 静态 |
OLAP_FLAG | 2 | 启用联机分析处理,0:不启用;1:启用;2:不启用,同时 | 动态, |
TEMP_SPACE_LIMIT | 0 | 临时表空间大小上限,单位为 MB,如果有大量排序、临时表 | 动态, |
SVR_LOG | 0 | 是否打开 SQL 日志功能,0:关闭;1:打开,并按照 | 动态, |
ENABLE_MONITOR | 1 | 用于打开或者关闭系统的监控功能。1:打开;0:关闭。打开 | 动态, |
ARCH_INI | 0 | 是否启用归档,0:不启用;1:启用。生产环境务必打开,否 | 动态, |
D、数据库死锁历史信息记录 select*from V$DEADLOCK_HISTORY
E、数据库历史sql执行记录统计V$SQL_HISTORY
F、数据库历史Session 统计V$SESSION_HISTORY
五、配置采集任务
配置达梦监控可视化仪表板