OCI DBCSで動いているOSWatcherの起動停止、ログの位置情報

# OS Watcher(oswbb)について

OS Watcherはサーバー上のOS稼働情報(iostatやpsなどど)をバックグラウンドで定期取得するツールで、ログメンテナンスまでおこなってくれます。
便利なツールではあるのですが、知る人ぞ知るツールだった印象。また、インストールの仕方が複数あり環境によってどこにログがおいてある場所が違う、実行されているスクリプトの名前が違う、などがあり混乱を招く部分もあると思います。
そこで、OCI ComputeやDBCSを使ってみて初めてこのツールの存在を知った、という方を対象として、OSWatcherの起動停止、各種ログがどこに置いてあるのかという情報をまとめます。

# OS Watcher(oswbb)の動作状況でみかける3パターン

1.Oracle Linuxにパッケージインストールされたパターン
（OCI Computeはこちら。下記記事を参考にしてください）

https://qiita.com/ketsuji1/items/fb9f1d3b5e052dabcf3c

2.TFAデータベースサポートツールの一部としてインストールされているパターン
（DBCSはこちら。**今回の内容** ）
3.MOSドキュメント(ID 301137.1)からtarをダウンロードして解凍実行したパターン
（任意のディレクトリで解凍してstartOSWbb.shを実行。MOSドキュメントOS Watcher User's Guide (ドキュメントID 1531223.1)のoswbbの開始/停止などは、こちらを想定して書かれているため、このドキュメントだけ見て上記1,2のパターンに当てはめようとすると違うやん、となる）

# OCI ComputeでのOS Watcher情報
コマンドによる確認はDBCS 19c SEにして実施しました。

### TFAデータベースサポートツールについて

TFAとはTrace File AnalyzerのOracleデータベースのヘルスチェックツール群のこと。ツール群と書きましたが、今回注目するOSWatcherという機能以外に、ORAchk(Oracleの構成診断)、oratop(DBパフォーマンスのリアルタイム分析)、SRDCのコマンド一発取得（サポート推奨のORAエラー他に合わせた情報採取依頼に合わせたログ取得）などなどの便利機能があります。少し古いですが、以下のpdfスライドがわかりやすかったです。

[Oracle Trace File Analyzer（TFA）クラウド向けの診断12.2.1.3.0](https://www.oracle.com/technetwork/jp/database/options/clustering/overview/tfa-customer-slides-3752135-ja.pdf)

こちらのTFAデータベースサポートツールは、Grid Infrastructureをインストールすると同時にインストールされるものになります。そのため、Grid Infrastructure前提のDBCSでもインストールされ、DBCSのOSWatcherはtfactlで扱うということになります。

### 起動停止はtfactlコマンドで実施
実行はgridユーザーでの実施をお勧めします。rootユーザーで起動パラメータを指定した場合、そのパラメータがDBCS再起動後に反映されていない状態が起こることを回避するためです。

[Oracle DatabaseRelease 19 ユーザーズ・ガイド
21.8 再起動後に、またはそれ以外の場合に予期せずOSWatcherパラメータが異なる]
(https://docs.oracle.com/cd/F19136_01/atnms/troubleshoot-tfa.html#GUID-11964D53-74C9-4754-9E80-9DB22557FF4E)

#### 実行状態の確認は`tfactl toolstatus`
oswbbのStatusがRUNNINGであれば実行中、NOT RUNNINGであれば停止中

```
[grid@testdb ~]$ tfactl toolstatus

.------------------------------------------------------------------.
|                   TOOLS STATUS - HOST : testdb                   |
+----------------------+--------------+--------------+-------------+
| Tool Type            | Tool         | Version      | Status      |
+----------------------+--------------+--------------+-------------+
| Development Tools    | orachk       |   20.2.2.0.0 | DEPLOYED    |
|                      | oratop       |       14.1.2 | DEPLOYED    |
+----------------------+--------------+--------------+-------------+
| Support Tools Bundle | darda        | 2.10.0.R6036 | DEPLOYED    |
|                      | oswbb        |        8.3.2 | RUNNING     |
|                      | prw          | 12.1.13.11.4 | NOT RUNNING |
+----------------------+--------------+--------------+-------------+
| TFA Utilities        | alertsummary |   20.2.2.0.0 | DEPLOYED    |
|                      | calog        |   20.2.2.0.0 | DEPLOYED    |
|                      | dbcheck      |   18.3.0.0.0 | DEPLOYED    |
|                      | dbglevel     |   20.2.2.0.0 | DEPLOYED    |
|                      | grep         |   20.2.2.0.0 | DEPLOYED    |
|                      | history      |   20.2.2.0.0 | DEPLOYED    |
|                      | ls           |   20.2.2.0.0 | DEPLOYED    |
|                      | managelogs   |   20.2.2.0.0 | DEPLOYED    |
|                      | menu         |   20.2.2.0.0 | DEPLOYED    |
|                      | param        |   20.2.2.0.0 | DEPLOYED    |
|                      | ps           |   20.2.2.0.0 | DEPLOYED    |
|                      | pstack       |   20.2.2.0.0 | DEPLOYED    |
|                      | summary      |   20.2.2.0.0 | DEPLOYED    |
|                      | tail         |   20.2.2.0.0 | DEPLOYED    |
|                      | triage       |   20.2.2.0.0 | DEPLOYED    |
|                      | vi           |   20.2.2.0.0 | DEPLOYED    |
'----------------------+--------------+--------------+-------------'

Note :-
  DEPLOYED    : Installed and Available - To be configured or run interactively.
  NOT RUNNING : Configured and Available - Currently turned off interactively.
  RUNNING     : Configured and Available.
```

#### 停止は` tfactl stop oswbb`

```
[grid@testdb ~]$ tfactl stop oswbb
Stopped OSWatcher
```

#### 起動は`tfactl start oswbb`

```
[grid@testdb ~]$ tfactl start oswbb
Starting OSWatcher
```
デフォルトでは以下のpsコマンドで確認できるように、取得間隔30秒、48時間分アーカイブ、圧縮なしの設定になっています。

```
[grid@testdb ~]$ ps -ef|grep osw
grid     88908     1  0 01:05 pts/0    00:00:00 /bin/sh ./OSWatcher.sh 30 48 NONE /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive
grid     89200 88908  0 01:05 pts/0    00:00:00 /bin/sh ./OSWatcherFM.sh 48 /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive
```

### 設定変更はtfactlコマンドの起動時のパラメータで実施
設定変更は以下のように一旦停止して、起動時にパラメータを指定します。
この例では、取得間隔30秒、72時間アーカイブに保持、gzipに圧縮となります。
このコマンドで、DBCSのノード再起動後も設定が保持されます。

```
[grid@testdb grid]$ tfactl stop oswbb
Stopped OSWatcher
[grid@testdb grid]$ tfactl start oswbb 30 72 gzip
Starting OSWatcher
[grid@testdb grid]$ ps -ef|grep osw
grid     94710     1  0 01:10 pts/0    00:00:00 /bin/sh ./OSWatcher.sh 30 72 gzip /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive
grid     95006 94710  0 01:11 pts/0    00:00:00 /bin/sh ./OSWatcherFM.sh 72 /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive

```

### PSでのOSWatcher実行プロセスの見え方

```
[grid@testdb ~]$ ps -ef|grep osw
grid     88908     1  0 01:05 pts/0    00:00:00 /bin/sh ./OSWatcher.sh 30 48 NONE /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive
grid     89200 88908  0 01:05 pts/0    00:00:00 /bin/sh ./OSWatcherFM.sh 48 /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive
```
`OSWatcher.sh 30 48 NONE /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive`
から以下であることがわかります
取得間隔 30秒
保存期間 48時間
圧縮形式 なし
出力先ディレクトリ /u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive

また、プロセスが2つ見えてきて、OSWatcher.shはわかるけど、OSWatcherFM.shは何者かという感じがします。実際にOSWatcherFM.shを開くと説明が書いてあります。どうやらFM＝FileManagerの略で、1分毎に起動され、第一引数（この場合48）の時間経過したファイルは削除するという役割を担っているようです。OSWatcherの動作を補助するものなので、あまり気にする必要はなさそうです。

```
######################################################################
# OSWatcherFM.sh
# This is the file manager program called by OSWatcher.sh. This program
# wakes up once a minute to look to see if the hour has changed. If we
# are starting a new hour we look to see how many files we have in
# archive and remove any that are greated than what was specified by
# $1 archiveInterval
######################################################################
```


### ログファイルの出力先は`/u01/app/oracle.ahf/data/repository/suptools/testdb/oswbb/grid/archive`

以下のような稼働情報ログが出力されています

```
[grid@testdb archive]$ ll
total 64
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswarp
drwxr-xr-x 2 grid oinstall 4096 May 17 01:02 oswcpuinfo
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswifconfig
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswiostat
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswmeminfo
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswmpstat
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswnetstat
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswnfsiostat
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswpidstat
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswpidstatd
drwxr-xr-x 2 grid oinstall 4096 Apr 24 08:41 oswprvtnet
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswps
drwxr-xr-x 2 grid oinstall 4096 Apr 24 08:41 oswslabinfo
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswtop
drwxr-xr-x 2 grid oinstall 4096 May 17 01:06 oswvmstat
drwxr-xr-x 2 grid oinstall 4096 Apr 24 08:41 oswxentop
```

oswiostatを試しに開くと保存されているファイルは以下のような形でした。

```
[grid@testdb oswiostat]$ ll
total 10892
-rw-r--r-- 1 grid oinstall 223699 May 15 01:59 testdb_iostat_21.05.15.0100.dat
・・・（中略）
-rw-r--r-- 1 grid oinstall 143348 May 17 01:46 testdb_iostat_21.05.17.0100.dat
```