Red Hat Enterprise Linux Atomic rsyslog コンテナーイメージの使用ガイド
Red Hat Enterprise Linux rsyslog Atomic コンテナーイメージは、Red Hat Enterprise Linux Atomic (RHEL Atomic) host で実行するために作成された Docker フォーマットのイメージです。このコンテナーを使用すれば、以下のような rsyslogd デーモンを起動できます。
- Atomic host のファイルシステムに保存されている設定ファイルとログファイルを使用する
- (ログメッセージをリモートログホストに保存する機能を含む) 標準の rsyslog 機能を提供するように設定する
ここでは、RHEL rsyslog コンテナーを取得して実行する方法を説明します。
RHEL rsyslog コンテナーの概要
rsyslog パッケージは Red Hat Enterprise Linux Atomic host にインストールされていないため、rsyslog コンテナーが、このサービスを Atomic host に追加する方法を提供します。以下は、rsyslog コンテナーの主な機能です。
-
atomic コマンドからインストールする。atomic install コマンドを使用して rsyslog コンテナーを取得して実行すると、コンテナーをレジストリから取得し、rsyslog サービスが必要とするファイルとディレクトリーをホストに追加し、docker run でコンテナーを起動できます。
-
ホストから設定する。rsyslog サービスに必要なファイルは Atomic host に保存されるため、コンテナーの中に入る必要はありません。すべての設定はホストから実行できます。
-
サービスを再起動する。 設定を変更した場合、変更を取り出すためには、コンテナーを停止し、削除して再起動します (docker stop rsyslog; docker rm rsyslog; atomic run rhel7/rsyslog)。
-
スーパーユーザー特権を持つコンテナー。rsyslog コンテナーを実行すると、コンテナーからホストシステムへの権限が付与されます。コンテナーには、RHEL Atomic host への root アクセスがあり、特権が付与されている設定とログファイルへのアクセスが行われます。特権を持つコンテナーついては Running Privileged Docker Containers in RHEL Atomic を参照してください。
RHEL rsyslog コンテナーを取得して実行する
RHEL Atomic host で Atomic Container イメージを使用するには、以下の手順に従ってイメージをインストールしてロードし、実行する必要があります。
-
RHEL Atomic Host をインストールする。RHEL Atomic host をインストールして設定する方法については、Red Hat Enterprise Linux Atomic Host Documentation ページに登録されているインストールガイドを参照してください。
-
RHEL rsyslog コンテナーをインストールする。RHEL Atomic host にログインしたら、以下のコマンドを実行して RHEL rsyslog コンテナーを取得して起動する必要があります。
# docker pull rhel7/rsyslog # atomic install rhel7/rsyslog ... docker run --rm --privileged -v /:/host -e HOST=/host -e IMAGE=rhel7/rsyslog -e NAME=rsyslog rhel7/rsyslog /bin/install.sh Creating directory at /host//etc/pki/rsyslog Installing file at /host//etc/rsyslog.conf Installing file at /host//etc/sysconfig/rsyslog
-
rsyslog コンテナーを起動する。RHEL rsyslog コンテナーを実行するには atomic コマンドを実行します。以下のコマンドを実行すると、適切なオプションを追加した docker コマンドを実行してコンテナーを起動します。
# atomic run rhel7/rsyslog docker run -d --privileged --name rsyslog --net=host -v /etc/pki/rsyslog:/etc/pki/rsyslog -v /etc/rsyslog.conf:/etc/rsyslog.conf -v /etc/rsyslog.d:/etc/rsyslog.d -v /var/log:/var/log -v /var/lib/rsyslog:/var/lib/rsyslog -v /run/log:/run/log -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -e IMAGE=rhel7/rsyslog -e NAME=rsyslog --restart=always rhel7/rsyslog /bin/rsyslog.sh 5803dbade82274158f0694a19fdcd7aac044a2656b2ce96d1aebdb0e30ad5ffd
atomic コマンドを起動したら、rsyslog コンテナーを起動するために実行する docker コマンドが確認できます。rsyslogd コンテナーは、スーパーユーザー特権を持つコンテナーとして実行されます。スーパーユーザー特権を持つコンテナーについては、Running Super Privileged Docker Containers on a Red Hat Enterprise Linux Atomic Host を参照してください。
-
コンテナーが実行していることを確認する。以下のコマンドを実行して、rsyslog コンテナーが実行していることを確認します。
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5803dbade822 registry.access.stage.redhat.com/rhel7/rsyslog:7.1-3 "/bin/rsyslog.sh" 9 minutes ago Up 9 minutes rsyslog
注意: "registry.access.redhat.com/rhel7/rsyslog:7.1-3" は、ダウンロードしたレジストリの名前と、取得したイメージのバージョンが含まれたイメージの正式な名前です。コンテナー自体はローカルで実行しますが、単に rsyslog と呼ばれます。イメージとコンテナーでは、docker の動作方法が異なります。
-
rsyslog サービスが起動していることを確認する。メッセージが /var/log/messages ファイルに保存されたら、シェルで以下のコマンドを実行します。
# tail -f /var/log/messages
-
ログメッセージを生成する。以下のコマンドを実行して、ログメッセージを生成します。
# logger "Test that rsyslog is doing great"
rsyslog サービスが起動している場合は、tail コマンドを実行しているシェルからメッセージが表示されます。これで、Atomic host で rsyslog サービスを使用できるようになりました。
rsyslog コンテナーを実行する際の注意点
ここでは、RHEL rsyslog コンテナーの実行に関するその他の注意点について説明します。
-
永続的なログを理解する。デフォルトでは、Red Hat Enterprise Linux Atomic Host を設定して、/etc/systemd/journald.conf で以下の値を設定して、journald を使用してローカルの root ファイルシステムで永続ログにログを記録します。
Storage=persistent
ローカルの rsyslog ログまたはリモートの rsyslog サーバーに永続ログを設定するには、その行を以下のように変更することで、ローカルの journald 永続ログを無効にする場合があります。
Storage=volatile
そして、RHEL Atomic Host を再起動します。これを行うと journald は、ram ディスクにローカルログを保存しますが、ディスクには書き込みません。これは、データを別の場所に安全に取得されている場合は、ローカルディスクに保存できます。rsyslog コンテナーは、journald ログを取得および処理できます。
-
rsyslog 設定を変更する。rsyslog コンテナーの設定を変更するたびに、実行中の rsyslog コンテナーを停止して削除してから、新しいコンテナーを軌道する必要があります。それを行うには、以下のコマンドを実行します。
# docker stop rsyslog # docker rm rsyslog # atomic run rhel7/rsyslog
-
ログローテーション。rsyslog コンテナーイメージの初期バージョンでは、rsyslog ログファイルのローカルローテーションをサポートしません。これは、将来のアップデートで追加されます。ただし、rsyslog は、領域に余裕がある場合は、ローカルのログファイルで使用できます。
rsyslog が、リモートのログ収集ホストにのみログを送るように設定されている場合は、ローカルのログローテーションに要件はありません。rsyslog でローカルおよびリモートのログ記録を設定する方法については、Red Hat Enterprise Linux System Administrator's Guide を参照してください。
-
ログを取得するのに十分な領域があることを確認してください。
- 多くのクラウド環境に理想的な環境は、リモートの rsyslog サーバーにログを記録するように rsyslog を設定することです。
- ローカルストレージにログを記録する場合は、現在、コンテナー内でログローテーションが発生していないことを確認します。次のリリースでは、logrotate 設定ファイル (/etc/logrotate.d/ ディレクトリのファイル、および /etc/logrotate.conf ファイル) を編集して、rsyslog 設定にログファイルのサイズ制限を設定することをサポートします。この機能はサポートされていません。
- 特に、atomic host qcow2 イメージの root ファイルシステムで利用できる領域の大きさは制限されています。より大きな領域は、Red Hat Enterprise Linux Atomic host の anaconda インストーラー ISO イメージをインストールすることで提供できます。
-
イメージとコンテナーのライフサイクル
Red Hat Enterprise Linux rsyslog Atomic コンテナーイメージを新しいバージョンにアップグレードする場合は、docker pull rhel7/rsyslog コマンドを実行して新しいイメージをダウンロードするだけでは不十分です。その後、新しいイメージから新規のコンテナーを作成するには、再実行する前に、以下のコマンドを実行して既存の rsyslog コンテナーを明示的に削除する必要があります。# docker pull rhel7/rsyslog If a new image downloads, run the following: # docker stop rsyslog # docker rm rsyslog # atomic install rhel7/rsyslog # atomic run rhel7/rsyslog
Comments