Solaris log的管理 - 使用logadm


在�_始之前有��故事要和大家分享。有一次我朋友的公司�e有一台Sun的�C器疑似crash後重�_�C,他的第一��反��是去看 messages log,�Y果使用vi�黹_��messages�n�r,vi跑了二分多�後,�G出一���息"�n案太大了,它�_不了"。他�D�^����我怎�N���@�樱快妒俏医邮�兔μ�理。�绦�uptime的�Y果�_�J是有重�_�C�^,但�楹沃亻_�C?�t要看messages的�热莶��知道,���}是vi�_不了messages,所以我只好用tail+more�砺�慢看。�槭颤N�_不了呢?一看才知messages�@���n案竟然超�^ 2G,最早的一�P��是四年多前的。天呀!
接著想了解在�C器�斓糁�前有�l在�上操作,�Y果last一跑......�s五分�後�幕才�_始有�|西跑出�怼�槭颤N呢?因�楹�last相�P的�n案wtmpx也超�^500MB......。最早的��的�r�g我已�不想知道了。(messages不是有newsyslog��去�Q�n案�幔渴堑模�但不知在何�rcrontab�e已��]有�@一�存在了。唉,天兵管理�T!)

早期的Solaris(9 以前)�K�]有一��真正可用的log�替程式�碜鱿到ylog的管理。所以如果管理�T�]有自己做�m��的�理,硬碟空�g很容易就被吃光了。不然就���l生像上述的事情,�n案大到很�y�_��。
以往的Solaris就只有一支newsyslog的���script�碜�messages的�替的工作。不然就要自己安�blogrotate的套件�碜鲞@一�的工作。�m然logrotate很好用,但�是�要抓下�戆惭b。不�^自��Solaris 9�_始,Sun�K於�到使用者的�音了。

Solaris 9�_始提供了一支程式logadm�iT用�碜鱿到ylog的管理工作。��人�X得它和logrotate�有�c相像,只是它的�O定是一��log�n一行,而logrotate是一��log�n一���^�K。下面就�砜纯�logadm要如何使用。

logadm有一���O定�n/etc/logadm.conf,��n是一���文字�n,所以你可以直接用vi去��它,或是使用logadm�碜�更�O定。�m然可以直接���O定�n,不�^使用logadm�碜�更�O定�rlogadm���z查�Z法是否正�_,所以建�h�是使用指令去�更�O定。
Solaris在安�b完成後,root的crontab�A�O就��有一些�|西定期的去�绦校�其中一��就是logadm。你可以用crontab -l�聿榭础K�以只要把�O定�n��好後,系�y就��自��绦校�你也不用再操心了。接下�砭�砜纯�logadm要如何使用。
logadm的�Z法大致上看起�砭拖裣旅孢@���幼樱�

logadm /var/adm/sshdlog -p now

第一����凳�log�n的名字(不全然是,後面���f明),�@�e我��用的是/var/adm/sshdlog。-p指的是�L期(period),�@��值是�底纸�d(day)、w(week)、m(month)、y(year)。如10d,表10天;2w,表二��星期,14天。m�m然是指月,但���H是三十天哦!它可不��自�臃直娲笮≡隆A硗膺�有二��特�e的�r�g值,一��就是上面用的now,另外一��是never 。now就是不管如何,�F在�R上�o我�Q掉;never�t是永�h都不要�Q,除非其他�l件成立。
logadm的��岛芏啵�下表列出���常用的���

-C n 保留的�盗浚�如果�]有指定任何的�^期�l件,�A�O��-C 10。
-p n[dwmy] �替�L期
-s n[bkmg] �n案大小,��指定的log�n的大小大於等於�@��值�r就更�Q。
-z n 使用gzip��嚎s被更�Q掉的�f�n。
-a log�n更�Q後要�绦械闹噶睢�
-b log�n更�Q前要�绦械闹噶睢�
-g 新�n案的�碛腥航M,不�o就和原�n案一�印�
-o 新�n案的�碛腥耍�不�o就和原�n案一�印�
-m 新�n案的�嘞蓿�不�o就和原�n案一�印�
-w �⒋嗽O定��入�O定�n。
-r �⒋嗽O定�脑O定�n中移除。
-V 列出�O定�n的�热荨�

假�Oapache的error_log,希望每10MB�Q一次,最少保留8份;另外�榱吮苊饫速M空�g,�f的�n案要�嚎s。下面的�例可以�M足我��的需求。

# logadm -w /var/apache/logs/error_log -C 8 -s 10m -z0 -a 'kill -HUP `cat /var/run/apache2/httpd.pid`'
# logadm -V| grep error
/var/apache/logs/error_log -C 8 -s 10m -z 0 -a 'kill -HUP `cat /var/run/apache2/httpd.pid`'

然後是access_log,由於log要留做分析使用,所以最少要保留2��月:也�榱吮苊�我�n案太大,所以每��星期要�Q一��新的�n案。

# logadm -w /var/apache/logs/access_log  -C 9 -p 1w -a 'kill -HUP `cat /var/run/apache2/httpd.pid`'
# logadm -V|grep acce
/var/apache/logs/access_log -C 9 -p 1w -a 'kill -HUP `cat /var/run/apache2/httpd.pid`'

logadm在�n案名�Q部份也支援*,?,{}。所以上面的例子也可以改成下面的方式

# logadm -w apache_log -C 9 -p 1m -a 'kill -HUP `cat /var/run/apache2/httpd.pid`' /var/apache/logs/{access,error}_log
# logadm -V| grep apache_log
apache_log -C 9 -a 'kill -HUP `cat /var/run/apache2/httpd.pid`' -p 1m /var/apache/logs/access_log /var/apache/logs/error_log�@��例子好像和前面�v的不太一�樱�-w 後面接的不再是�n案名�Q,取而代之的是apache_log。其��apache_log�@是一��自取的�R�e字,logadm��自�优�嗄憬o的�R�e字是否��n案名�Q(�_�^是否��/);如果是,你可以省略後面的�n案名�Q��怠H绻�不是�t後面的�n案名�Q就一定要�o。前面二��例子的�R�e字我��都用�n案名�Q�泶�替,而�@��例子因�橛卸��目的�n案,所以要特�e再取一���R�e字。
��全部都�O定好之後,只要直接�绦�logadm不用加任何的��担�logadm��自�尤プx取/etc/logadm.conf,�K�⒎�合�l件的 log�n�M行更�Q。系�y安�b好後root的crontab即已排定每天的3:10���绦�logadm,所以只要等�r�g到log自然就��被�Q掉。

----------------------------------
以下是自己实验的一个例子:
# crontab  -l |grep logadm
10 3 * * * /usr/sbin/logadm
# du -sh messages*
 14K   messages
240K   messages.0
9.9M   messages.1
 30M   messages.2
2.5M   messages.3
# logadm   /var/adm/messages  -p  now
# du -sh messages*
  0K   messages
 14K   messages.0
240K   messages.1
9.9M   messages.2
 30M   messages.3


你可能感兴趣的:(Unix运维)