質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
logrotate

logrotateはログの世代管理やサイズ制限を行うLinux標準のツールです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

1392閲覧

logrotate の lastaction で AWS Cli コマンドを実行する方法

退会済みユーザー

退会済みユーザー

総合スコア0

logrotate

logrotateはログの世代管理やサイズ制限を行うLinux標準のツールです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2018/12/13 02:45

編集2019/01/04 08:03

logrotate.d/rails で

/.../staging.log { weekly rotate 15 missingok notifempty copytruncate dateext compress lastaction aws s3 mv /.../staging.log*.gz s3://... endscript }

というログを圧縮してS3に転送する設定をかいたのですが圧縮までされるけど転送がされません
logrotate 中にでたエラーはどこに保存されるのでしょうか

疑わしいのは aws コマンドのアカウント設定がされていないのかなと思い
ps -ef | grep cron をすると cron コマンドは root で動いてるようなのですが
root になる権限をもっていません

ただ logrotate で作成されるログファイルの所有者は別のユーザになっていて
そのユーザになる権限はもっているので

aws s3 mv /.../staging.log*.gz s3://...

コマンドをたたくとちゃんと転送されます

roglotate の lastaction にかいたコマンドが cron からよばれた場合実行者は誰になるのでしょうか
またそれが root だった場合この aws コマンドだけ指定したユーザ権限で実行する
あるいは root 権限で指定ユーザの AWS アカウント情報 ~user/.aws/config を利用するにはどうすればいいのでしょうか

追記:

logrotate -d /etc/logrotate.d/rails

empty log files are not rotated, old logs are removed considering log /...../staging.log log does not need rotating not running last action script, since no logs will be rotated

となります
1行目にかかれているログファイルの中身は less すれば見えるので空ではないのですが
なぜか空扱いになってしまっているようです

ただ日曜日になると圧縮まではされてるはずなのでよくわかりません…

追記:

やはり圧縮まではされるのですがログが転送されません
lastaction 内に別のコマンドをかくと実行されます
lastaction 内のコマンドをはりつけると転送されます
コマンド内のパスは絶対パスでかいています

aws コマンドのアカウント情報をうまくみにいってくれていないとしか考えられないんですが…
logroteta から起動した場合に aws コマンドがうまく動く方法はないでしょうか

やりたいことは 1週間ごとにログを圧縮→S3へ転送だけなんですが
自分だけではこれ以上原因がわからないので
logrotate や AWS コマンド以外に
(Rails のログ機能内に圧縮とS3へ転送を行うコードを追加するとか)方法はないでしょうか

追記:

lastaction 内に
cp /.../staging.log*.gz /tmp/
というコマンドを追加したところコピーはされたのですが /tmp/ に生成されたファイル所持者は root になっています
log ディレクトリに生成される圧縮ファイルはログイン権限のある別の <user> なのですが

lastaction 内のコマンドを
sudo -u <user> aws s3 mv /.../staging.log*.gz s3://...
と変更してみましたがやはり転送されません

<user> になって aws 以降のコマンドをうてば転送されます
sudo から全体をうっても転送されます

cron から lastaction にかいた aws コマンドだけがどうしても実行できません…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

https://hit.hateblo.jp/entry/linux/runuser

sudo -H -u <user> aws s3 ...

と -H をつけたところ転送されるようになりました

aws コマンドは $HOME/.aws/config の認証情報を参照するみたいで
root だとそれがないために認証失敗していたんでしょうか

投稿2019/01/07 02:04

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

awsのIAMはサーバーに関連付いているので
サーバー上のユーザーは誰か、というのは関係ないように思います。
CLIで以下を実行すると現在関連付いている設定が確認できます。

aws configure

原因は分かりませんが、logrotateを手動で実行してみてはいかがでしょうか。

logrotate /.../logrotate.conf

または

logrotate -d /.../logrotate.conf #-dはテスト実行オプション

何かしらの処理がエラーになっているのであれば、コンソール上に表示されます。

その先の切り分けとしては、lastactionの部分が正しく呼ばれているかの確認ですかね。
例えば以下みたいにして正しく実行されるのかを確認してみてください。

(中略) lastaction mv /.../staging.log*.gz /tmp/ endscript

投稿2018/12/13 03:57

take_3306

総合スコア242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/13 05:21

>サーバー上のユーザーは誰か、というのは関係ないように思います そうなのですね ~/.aws/config をみにいくと思っていたので aws configure をしたユーザしかこのファイルが作成されずにアカウント情報を参照できないと思っていました テスト実行してみるとなぜかログファイルが空扱いになって last action script がよばれなかったのでもう少し調べてみます ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問