2017年5月22日 星期一

syslog 與 newsyslog 的設定方式

環境參數:
* 工作:設定 tinyproxy.log整合於syslog並自動壓縮 (logrotate)
* OS:FreeBSD i386 , 10.3-RELEASE-p11
* CPU:Intel(R) Core(TM)2 Duo CPU @ 3.00GHz
* RAM:4096 MB

整合於syslog與壓縮歸檔

常常在發生問題或需要資訊時,log檔就變的很重要;但是平時它卻是個佔用空間的元凶。如果你還沒遇上過動輒幾GB的寵然大檔,可能未曾心動,當然不會心痛。
因為一旦空間被吃掉,很多工作就停擺,雖然現在的儲存空間的成本大大降低,不過我們還是養成好習慣,把log整理,方便查詢追踪也不用擔心空間被佔用太多。
日後應該建置 Log Server 來統一存檔,但今天先把syslog與newsyslog ( Log Rotate )搞定!

tinyproxy

tinyproxy是套輕便的 Proxy 服務,簡單的安裝說明:

$ pkg install tinyproxy

設定檔存放在 /usr/local/etc/tinyproxy.conf
在設定檔中的Log設定,為了要整合在syslog中,也就是將log交給系統處理而不是tinyproxy自行寫入,設定如下:

User nobody
Group nobody
Port 8889
Listen 10.11.11.2
Bind 10.11.11.2
Timeout 600
DefaultErrorFile "/usr/local/share/tinyproxy/default.html"
StatFile "/usr/local/share/tinyproxy/stats.html"
# LogFile "/var/log/tinyproxy.log"
#
# Syslog: Tell tinyproxy to use syslog instead of a logfile.  This
# option must not be enabled if the Logfile directive is being used.
# These two directives are mutually exclusive.
# 整合在syslog中,則下行是必要的。如果要單獨交給tinyproxy寫入,則取消這行,改由 LogFile 取代之。
Syslog On
LogLevel Info
# 這個PidFile很重要,在newsyslog.conf中會用到
PidFile "/var/run/tinyproxy.pid"
MaxClients 30
MinSpareServers 5
MaxSpareServers 30
StartServers 10
MaxRequestsPerChild 0
# 允許來源存取IP
Allow 192.168.1.0/24
ViaProxyName "tinyproxy"
ConnectPort 443
ConnectPort 563
ConnectPort 22000

設定 syslog.conf

$ vi /etc/syslogd.conf
# 加入這二行,代表將tinyproxy執行序相關資訊寫入 /var/log/tinyproxy.log
!tinyproxy
*.*                                             /var/log/tinyproxy.log

如果還沒建立 /var/log/tinyproxy.log,可以用二種方式:
1. $ touch /var/log/tinyproxy.log
2. 在 newsyslog.conf中設定即可。

設定 newsyslog.conf

man newsyslog.conf 可知newsyslog的格式設定為:
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]

$ vi /etc/newsyslog.conf
# 加入底下這行
/var/log/tinyproxy.log  644  10    100  *     JC  /var/run/tinyproxy.pid 1

參數說明:

  1. 644是檔案屬性。
  2. 10 則代表保留10份歸檔 (即/var/log/tinyproxy.log現行記錄外,再加上 /var/log/tinyproxy.log.0.bz2 ~ /var/log/tinyproxy.log.9.bz2共有11個記錄檔)
  3. 100則代表當檔案大小為100k時就進行歸檔壓縮。
  4. 100後面的*號代表不限時間,只要檔案超過100k就壓縮歸檔。
  5. C 代表 /var/log/tinyproxy 若不存在則自動建立此檔。
  6. J 代表 歸檔時以 bzip2格式壓縮,gzip則使用Z
  7. /var/log/tinyproxy.pid是newsyslog在歸檔後會重啟這個PID。
  8. 最後一個1代表 /var/log/tinyproxy.pid只有1個執行緒;有時候像squid proxy會有多個,此時則需設定相同的數量。

重啟 syslog服務

$ service syslogd restart

$ killall -HUP syslogd

大工完成,看看log檔就可收到成效:

$ tail /var/log/tinyproxy.log
參考來源:

1.https://www.newsyslog.org/manual.html

本文大網

活本來沒有什麼好與壞,只要你願意怎樣填滿它,它就隨同而行。


EmoticonEmoticon