システムでyum update
が最後に実行された時刻を知るための正規の方法はありますか?
私たちのセットアップでは、自動更新を実行するステージングサーバーがあり、それらがフォールオーバーしない限り、月に1回(重要な更新を除いて)運用サーバーを手動で更新します。 (私は手動で言いますが、理想的にはそれらすべての更新を手動でトリガーしたいのですが、それは別の問題です)。
しかし、あなたは忙しくなり、タスクはスリップします。それで、私がそれをあまりにも長く残している場合、私たちを悩ませ始めるnagiosチェックをセットアップしたいと思います。
ウェブを検索しても、それほど遠くはありません。システムをたたくと、私がこれまでに見つけた最良のものは次のようなものになります:
grep Updated /var/log/yum.log | tail -1 | cut -d' ' -f 1-2
これにより、Mar 12
のようなものが得られ、日付に変換できます。日付が今年であるか昨年であるかについて、いくつかの小さな問題があります。また、logrotateの直後にチェックする場合は、/var/log/yum.log.1
もチェックする必要があります。しかし、それは単なるスクリプトの詳細です。
もちろん、これは一般的な更新ではなく、単一のパッケージへの更新によって「だまされる」可能性があります。
では、yum update
がいつ実行されたかを確認するためのより標準的な方法はありますか?
編集:これで、質問で提案したアイデアを使用するNagios NRPEプラグインを作成しました。 https://github.com/aptivate/check_yum_last_update から取得できます。
Yum履歴オプションを使用すると、ユーザーは過去のトランザクションで何が起こったかを表示できます。より簡単にするために、grepできますpdate from yum history
# yum history
Loaded plugins: fastestmirror, refresh-packagekit
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
41 | root <root> | 2012-04-27 20:17 | Install | 19
40 | root <root> | 2011-11-20 10:09 | Install | 10
39 | root <root> | 2011-11-20 08:14 | Install | 1 E<
38 | root <root> | 2011-11-19 15:46 | Update | 1
確実に確認できる唯一の方法は、psacct
を実行することです。
これにより、lastcomm yum
。これを解析すると、誰がいつ実行したかがわかります。
「Dev」サーバーのセットをDev yumリポジトリにポイントしていると思いますか?
Cron/puppet/chefスクリプトで自動アップグレードを実行し、成功するとファイルに書き込むことができます。 (いう /etc/yum_last
)
次に、yum check-update
定期的に開発サーバーのcron/otherで更新が利用可能かどうかを確認します。このコマンドで0を超える更新が利用可能であると表示された場合は、現在の日付と最後に自動yumアップグレードを実行したときに作成したファイルのタイムスタンプを比較します。
この日付の差が数日で大きくなると、Nagiosアラートを受け取ることができます。
Pulp も必要に応じて確認できます。
次のコマンドは、最近インストールまたは更新されたRPMパッケージを一覧表示します。
rpm -qa --last | head
YUM外にインストールされたパッケージも含まれる場合があります。このコマンドは、root権限なしでも実行できます。