# 主机监控产品

## 传统监控产品

OceanBase 本质上是一个单进程软件，进程名是：`observer` 。进程启动时，默认会将主机的 CPU、内存和磁盘空间（指数据盘，启动参数里可以定义）大部分资源都占据。其中 CPU 的占用是声明式的，并不会实际占有。内存的占用是预分配的，默认会占用 80% 主机可用内存（参数`memory_limit_percentage` 指定）。通常 OceanBase 进程所在主机不适合在跑其他数据库或者应用软件等。磁盘的占用也是预分配的，默认会占用 90%（参数 `datafile_disk_percentage` 指定）。进程正常启动后会监听两个端口：默认是 `2881` 和 `2882`。

跟其他传统数据库一样，可以使用已有的监控平台监控 OceanBase 主机的：

+ 主机可用性，可以 `ping` 。
+ 主机 `load`。
+ 主机 `cpu`。
+ 主机 `mem`。注意监控可用内存就行。可用内存低于 1G ，进程`observer` 有 OOM 风险。
+ 主机磁盘，包括 IO利用率、IO延时、IO 吞吐量等。分数据盘和日志盘等。
+ 主机网络监听端口，包括 `ssh` 的端口（默认 22 ，可以改）、`observer` 的连接端口（默认 2881，可以改）、`observer` 的 RPC 端口（默认 2882，可以改）。
+ 主机网卡流量。包括进程 `observer` 监听的那个网卡。当网卡流量接近能力上限（通常是10000Mb)， SQL 性能变慢，load 变高。

## `tsar` 工具

`tsar` 很早就在 `github` 上开源了，项目地址是：`https://github.com/alibaba/tsar` 。
`tsar` 是淘宝的一个用来收集服务器系统和应用信息的采集报告工具，如收集服务器的系统信息（`cpu`，`mem` 等），以及应用数据（`nginx`、`swift` 等），收集到的数据存储在服务器磁盘上，可以随时查询历史信息，也可以将数据发送到 `nagios` 报警。`tsar` 带来的性能影响很小，存储空间也很小。可以独立运行，作为现有监控手段的一个补充。

`tsar` 还能够比较方便的增加模块，只需要按照 `tsar` 的要求编写数据的采集函数和展现函数，就可以把自定义的模块加入到`tsar` 中。
