国产数据库的可观测性能力本身就偏弱,很多问题分析必须结合OS的监控数据,才能做的比较彻底,特别是需要做故障定位的时候,更是离不开OS的监控数据。我也希望国产数据库厂商能够自研一个OS性能监控数据的自动采集工具。不过目前我们还无法从国产数据库厂商处获得这样的工具。国产数据库服务器,也只能安装一套OSW才行啊,这也是我们给国产数据库用户提出的一个建议。
OSW(OSWatcher)是Oracle公司研发的一个免费软件,一个通用的操作系统性能监控工具,它可以用于监控任何支持的操作系统。作为一个ORACLE DBA,我在差不多二十年前就开始在性能优化项目中使用OSW。从Oracle 11.2.0.4开始,用户不需要自己下载安装OSW,因为它已经随着Oracle数据库自动安装在你的数据库服务器上了。我们习惯于在Oracle数据库服务器上用OSW来监控操作系统,不过实际上Oracle的免费使用许可证允许你在非Oracle数据库服务器上使用OSW来监控系统的性能,例如CPU利用率、内存使用情况、磁盘I/O等。Oracle公司的使用协议不会对使用OSW进行操作系统性能监控和分析的用户施加任何限制。OSW可以在任何操作系统上自由使用,并且可以免费下载和安装。
使用OSW来监控非Oracle数据库服务器的性能是完全合法和可行的,但是需要注意,您需要遵守操作系统和其他软件的许可协议和使用规定。
根据Oracle公司的使用协议,其他公司可以在其商业环境中使用OSW(OSWatcher)软件来监控操作系统性能,但需要遵守以下几个要求:
1、保留版权声明:必须在使用、分发或修改OSW软件时保留Oracle公司的版权声明。
2、不允许进行修改:不允许修改OSW的代码,除非获得Oracle公司的书面许可。
3、非独占使用权:不允许将OSW软件独占使用或分发给第三方,除非获得Oracle公司的书面许可。
4、免责声明:OSW软件是按“原样”提供的,没有任何明示或暗示的担保或条件。使用者必须自行承担风险。
从上面的使用协议声明可以看出,用户可以下载OSW工具,并安装在一台运行国产达梦数据库的服务器上,用于OS监控数据的采集,这是完全合法的。不过Oracle并不允许在未经授权的时候,第三方的软件中直接分发OSW,因此OSW无法随着D-SMART发行版或者数据库厂商的数据库产品分发。Nmon在这方面要比OSW宽泛,nmon允许随着第三方软件自由分发。
OSWatcher是一种跨平台的数据收集工具,可以用于监控和诊断Linux、UNIX和Windows操作系统。它可以收集系统资源使用情况的数据,例如CPU利用率、内存使用情况、网络使用情况等。这些数据可以帮助管理员分析系统性能问题,并作出优化和调整的决策。下面是OSW可以采集的一些更具体的指标信息:
lCPU 使用率:可以采集所有 CPU 核心的使用率,包括用户空间、内核空间、空闲等各个状态的使用率。
lCPU 负载:可以采集 CPU 负载的平均值以及每个 CPU 核心的负载情况。
l内存使用情况:可以采集内存总量、空闲内存、缓存和缓冲区、交换空间等各个方面的情况。
l磁盘 I/O 情况:可以采集每个设备的读写带宽、读写 IOPS、平均响应时间、读写字节数等各种指标信息。
l网络 I/O 情况:可以采集每个网络接口的带宽、数据包传输率、传输错误、丢包等情况。
l进程和线程信息:可以采集进程号、进程状态、虚拟内存使用量、RSS、CPU 和内存使用情况等各种信息。
l文件系统使用情况:可以采集文件系统容量、已用容量、可用容量、磁盘空间使用率等信息。
l资源利用率:可以采集系统各种资源的利用率,例如 CPU、内存、磁盘、网络等等。
l数据库性能:可以采集数据库的各种性能指标,例如会话数量、等待事件、I/O 性能等等。
OSW采集的信息十分丰富,包括网卡的信息、IOSTAT、meminfo、mpstat、netstat、进程信息、slabinfo、vmstat等信息。都是数据库系统出现故障时,OS层面容易出问题或者需要关注的方面。这是Oracle公司在售后服务中积累下来的经验。国产数据库厂商完全可以模仿这些内容开发一个工具。
OSW的默认采集周期是30秒钟,采集粒度对于大多数问题分析来说是足够的。OSW原汁原味的保留了OS相关采集命令输出的结果,对于事后分析十分有价值。
二十多年的优化生涯中多次因为用户安装了OSW而在黑暗的探索中找到了方向,因此我已经习惯了用OSW的数据而不是用不一定靠谱的推测去分析数据库异常与操作系统状态的关联性,有了这一块拼图,才让整个故障分析变得真正的无懈可击。希望有兴趣的朋友可以在非Oracle数据库上体验一下OSW,也建议国产数据库用户也在自己的服务器上装上一套OSW,没准什么时候就用得上呢。