ひとりAdvent Calendar 19日目です。
前日の記事の半分続きで、今度はSQL Serverをdockerコンテナで動かしている場合の集め方です。
といっても集める対象のファイルは基本変わりません。今回はOpenShift上で動かしているSQL Serverコンテナを対象にするので、コンテナ内でコマンドを実行するのにoc exec
を使いますが、docker単体の場合はdocker exec
、kubernetesの場合はkubectl exec
を利用することができます。こんな感じで動いています。
OpenShift, kubernetesの場合はpod名、dockerの場合はコンテナ名を取得しておきます。
まずは、mssql.confファイルを確認してログファイルなどの場所を変更していないか確認します。mssql.confの場所はデフォルト/var/opt/mssql/mssql.conf
で、変更している場合はDockerfileや起動コマンドなどに記述があるのではないかと思います*1。
$ oc exec testservermssql-5-hfh9r -- cat /var/opt/mssql/mssql.conf
で、ログを確認します。
$ oc exec testservermssql-5-hfh9r -- tail /var/opt/mssql/log/errorlog
ログなどのファイル一覧を手元のマシンにコピーしたい場合、OpenShiftだとoc rsync
コマンドが使えます。
$ mkdir dblog $ oc rsync testservermssql-5-hfh9r:/var/opt/mssql/log/ dblog/
また、SQL ServerのPALロギングはプロセス再起動が必要ないため、コンテナ上であってもログの設定ファイルを追加するだけで有効にできて便利です。oc rsh
でログインしてファイルを作成するか、手元で用意したファイルを転送します。
$ oc rsh testservermssql-5-hfh9r # vi /var/opt/mssql/logger.ini [Output:Console] Type = StdOut [Logger] Level = Debug Outputs = Console
コンテナの標準出力に出力しているので、oc logs
(kubectl logs
docker logs
)コマンドなどで確認できます。
*1:変更することがあまりないと思うので詳細な手順は未確認