今月は、Linux Administratorの最初のストリームを終了し、2番目のストリームをゆっくりと開始します。これは、新しい教師によって大幅に改訂および強化されます。 それらの1つ-Alexey Tsykunovは 、今日、小さな便利なメモを共有しています。
行こう
挑戦する
ディレクトリにログを保存するプログラムを実行するサーバーがいくつかあります。
これらのすべてのログを、サーバー名ごとにサブディレクトリに一元的に保存し、ファイル名を保持する必要があります。
syslogでロギングプログラムをすぐに再設定する方法はありません。
周辺:
- サーバー-centos7
- クライアント-centos6
クライアントとサーバーの両方がrsyslogを最新バージョンに更新する必要があります。
cd /etc/yum.repos.d/ wget http://rpms.adiscon.com/v8-stable/rsyslog.repo yum update rsyslog
解決策
Rsyslogには次の標準モジュールがあります。
- imfile-ファイルから読み取る
- omfwd-リダイレクト(たとえば、ネットワークへ)
- imtcp-tcpを介してネットワークから読み取る
- omfile-ファイルへの書き込み、組み込みモジュール
これらを使用して、クライアントマシンとサーバーで構成が実行されました。
クライアントで
module(load="imfile" mode="inotify") # template (name="LongTagForwardFormat" type="string" string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%$.suffix%%msg:::sp-if-no-1st-sp%%msg%") # ruleset(name="sendToLogserver") { action(type="omfwd" Target="192.168.1.1" Port="514" protocol="tcp" Template="LongTagForwardFormat") } # . input(type="imfile" File="/your_app_path_logs/log/*.log" tag="apptag__" ruleset="app_logs" addMetadata="on") # , ruleset(name="app_logs") { set $.suffix=re_extract($!metadata!filename, "(.*)/([^/]*)", 0, 2, "app.log"); call sendToLogserver }
サーバー上
サーバーで、/ etc / rsyslog.confを直接構成しました
# unix socket module(load="imuxsock") # journald module(load="imjournal") # module(load="imtcp" MaxSessions="500") # input(type="imtcp" port="514" ruleset="remote") # , template(name="RemoteHost" type="string" string="/opt/pabkss/%HOSTNAME%/%$.logpath%") # template(name="OnlyMsg" type="string" string="%msg:::drop-last-lf%\n") # ruleset(name="remote") { # , set $.logpath = replace($programname, "__", "/"); action(type="omfile" dynaFile="RemoteHost" template="OnlyMsg") }
新たな問題
- 一重引用符を使用する
- サーバーの再起動中に構文にエラーがある場合、正しいステータスが表示されますが、実際には機能しません。 注意してください、多くの神経を台無しにします。
systemctl restart rsyslog
終わり
いつものように、私たちはここでコメント、質問を待っています。または、公開レッスンを見て、教師を苦しめることができます。