# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. category: db app: oracle name: zh-CN: Oracle数据库 en-US: Oracle DB params: - field: host name: zh-CN: 主机Host en-US: Host type: host required: true - field: port name: zh-CN: 端口 en-US: Port type: number range: '[0,65535]' required: true defaultValue: 1521 - field: timeout name: zh-CN: 查询超时时间(ms) en-US: Query Timeout(ms) type: number required: false hide: true defaultValue: 6000 - field: database name: zh-CN: 服务名 en-US: Service Name type: text required: false - field: username name: zh-CN: 用户名 en-US: Username type: text limit: 20 required: false - field: password name: zh-CN: 密码 en-US: Password type: password required: false - field: url name: zh-CN: URL en-US: URL type: text required: false hide: true metrics: - name: basic # 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集 # 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度 priority: 0 # 指标组中的具体监控指标 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: database_version type: 1 instance: true - field: hostname type: 1 - field: instance_name type: 1 - field: startup_time type: 1 - field: status type: 1 # (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换 aliasFields: - VERSION - HOST_NAME - INSTANCE_NAME - STARTUP_TIME - STATUS # (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值 # eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime calculates: - database_version=VERSION - hostname=HOST_NAME - instance_name=INSTANCE_NAME - startup_time=STARTUP_TIME - status=STATUS protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: oneRow # sql sql: select * from sys.v_$instance url: ^_^url^_^ - name: tablespace priority: 1 # 指标组中的具体监控指标 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: file_id type: 1 instance: true - field: file_name type: 1 - field: tablespace_name type: 1 - field: status type: 1 - field: bytes type: 0 unit: MB - field: blocks type: 0 unit: 块数 protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: oneRow # sql sql: select file_id, file_name, tablespace_name, status, bytes / 1024 / 1024 as bytes, blocks from dba_data_files url: ^_^url^_^ - name: total_sessions priority: 1 # 指标组中的具体监控指标 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: count type: 0 protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: oneRow # sql sql: select count(*) as count from v$session url: ^_^url^_^ - name: active_sessions priority: 1 # 指标组中的具体监控指标 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: count type: 0 protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: oneRow # sql sql: select count(*) as count from v$session where username is not null and status = 'ACTIVE' url: ^_^url^_^ - name: background_sessions priority: 1 # 指标组中的具体监控指标 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: count type: 0 protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: oneRow # sql sql: select count(*) as count from v$session where username is null url: ^_^url^_^ - name: connection priority: 1 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: username type: 1 instance: true - field: count type: 0 protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: oneRow # sql sql: SELECT username, count( username ) as count FROM v$session WHERE username IS NOT NULL GROUP BY username url: ^_^url^_^ - name: performance priority: 1 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: qps type: 0 unit: qps - field: tps type: 0 unit: tps - field: mbps type: 0 unit: mbps # (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换 aliasFields: - I/O Requests per Second - User Transaction Per Sec - I/O Megabytes per Second # (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值 # eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime calculates: - qps=I/O Requests per Second - tps=User Transaction Per Sec - mbps=I/O Megabytes per Second protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql sql: select metric_name, value from gv$sysmetric where metric_name = 'I/O Megabytes per Second' or metric_name = 'User Transaction Per Sec' or metric_name = 'I/O Requests per Second' url: ^_^url^_^ - name: percentage priority: 1 fields: - field: tablespace_name type: 1 instance: true - field: total type: 1 - field: used type: 1 - field: free type: 1 - field: used_percentage type: 0 unit: '%' - field: free_percentage type: 0 unit: '%' protocol: jdbc jdbc: host: ^_^host^_^ port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ queryType: multiRow # DBA_TABLESPACE_USAGE_METRICS可以查出表空间used_max值,它的大小计算单位是block,1kb=8block,把block*8/1024转化为MB单位 sql: "SELECT tablespace_name,ROUND ( (TABLESPACE_SIZE * 8 / 1024), 0) AS total,ROUND ( (USED_SPACE * 8 / 1024), 0) AS used,ROUND ( ( (TABLESPACE_SIZE * 8 / 1024) - (USED_SPACE * 8 / 1024)), 0) AS free,ROUND ( (USED_PERCENT), 0) AS used_percentage,100 - ROUND ( (USED_PERCENT), 0) AS free_percentage FROM sys.dba_tablespace_usage_metrics ORDER BY used_percent DESC" url: ^_^url^_^ - name: process priority: 1 # 指标组中的具体监控指标 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: process_count type: 0 protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: oneRow # sql sql: select count(*) as process_count from v$process url: ^_^url^_^ - name: transaction priority: 1 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: commits type: 0 unit: '次/s' - field: rollbacks type: 0 unit: '次/s' # (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换 aliasFields: - User Commits Per Sec - User Rollbacks Per Sec # (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值 # eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime calculates: - commits=User Commits Per Sec - rollbacks=User Rollbacks Per Sec protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql sql: select metric_name, value from gv$sysmetric where metric_name = 'User Commits Per Sec' or metric_name = 'User Rollbacks Per Sec' url: ^_^url^_^ - name: wait priority: 1 fields: # 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位 - field: concurrent_wait_time type: 0 unit: ms - field: commit_wait_time type: 0 unit: ms - field: app_wait_time type: 0 unit: ms - field: network_wait_time type: 0 unit: ms - field: system_io_wait_time type: 0 unit: ms - field: user_io_wait_time type: 0 unit: ms - field: configure_wait_time type: 0 unit: ms - field: scheduler_wait_time type: 0 unit: ms # (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换 aliasFields: - System I/O - Application - User I/O - Commit - Concurrency - Configuration - Idle - Other # (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值 # eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime calculates: - system_io_wait_time=System I/O - app_wait_time=Application - user_io_wait_time=User I/O - commit_wait_time=Commit - concurrent_wait_time=Concurrency - configure_wait_time=Configuration - scheduler_wait_time=Idle - network_wait_time=Other protocol: jdbc jdbc: # 主机host: ipv4 ipv6 域名 host: ^_^host^_^ # 端口 port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql sql: select wait_class, sum(time_waited) total_wait_time from v$active_session_history where session_state = 'WAITING' GROUP BY wait_class ORDER BY total_wait_time DESC url: ^_^url^_^ - name: cpu_stats priority: 1 fields: - field: type type: 1 instance: true - field: num type: 1 protocol: jdbc jdbc: host: ^_^host^_^ port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ queryType: multiRow sql: select stat_name as type, value as num from v$osstat where stat_name like '%CPU%' or stat_name like '%TIME' url: ^_^url^_^ - name: mem_stats priority: 1 fields: - field: type type: 1 instance: true - field: num type: 1 protocol: jdbc jdbc: host: ^_^host^_^ port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ queryType: multiRow sql: select stat_name as type, value as num from v$osstat where stat_name like '%BYTES' url: ^_^url^_^ - name: cache_hit_ratio priority: 1 fields: - field: lib_cache_hit_ratio type: 0 - field: buffer_cache_hit_ratio type: 0 # (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换 aliasFields: - Library Cache Hit Ratio - Buffer Cache Hit Ratio # (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值 # eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime calculates: - lib_cache_hit_ratio=Library Cache Hit Ratio - buffer_cache_hit_ratio=Buffer Cache Hit Ratio protocol: jdbc jdbc: host: ^_^host^_^ port: ^_^port^_^ platform: oracle username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ timeout: ^_^timeout^_^ queryType: columns sql: select metric_name, value from gv$sysmetric where metric_name like '%Cache Hit Ratio' order by end_time asc url: ^_^url^_^