linux远程日志rsyslog服务端和客户端安装

用rsyslog的缘由:

1.防止系统崩溃无法获取系统日志分享崩溃原因,用rsyslog可以把日志传输到远程的日志服务器上
2.使用rsyslog日志可以减轻系统压力,因为使用rsyslog可以有效减轻系统的磁盘IO
3.rsyslog使用tcp传输非常可靠,可以对日志进行过滤,提取出有效的日志,rsyslog是轻量级的日志软件,在大量日志写的情况下,系统负载基本上在0.1以下

 
一、安装前准备
1.下载rsyslog-5.6.2
2.准备两台机器(linux或者unix),一台客户端,一台服务端

 
服务端和客户端的安装步骤:

 


  1. #指定安装目录  
  2. ./configure --prefix=/Application/rsyslog  
  3.  
  4. #编译  
  5. make  
  6.  
  7. #安装  
  8. make install  
  9. #添加lib  
  10. echo "/Application/rsyslog/lib/rsyslog" >> /etc/ld.so.conf  
  11. #更新lib  
  12. ldconfig  
  13.  
  14. #产生配置文件  
  15. cp /etc/syslog.conf /etc/rsyslog.conf 
#产生服务文件
vi /etc/init.d/rsyslog
 

  1. #!/bin/bash  
  2. #  
  3. # rsyslog Starts rsyslogd/rklogd.  
  4. #  
  5. #  
  6. # chkconfig: - 12 88  
  7. # description: Syslog is the facility by which many daemons use to log \  
  8. # messages to various system log files. It is a good idea to always \  
  9. # run rsyslog.  
  10. ### BEGIN INIT INFO  
  11. # Provides: $syslog  
  12. # Required-Start: $local_fs $network $remote_fs  
  13. # Required-Stop: $local_fs $network $remote_fs  
  14. Default-Stop: 0 1 2 3 4 5 6  
  15. # Short-Description: Enhanced system logging and kernel message trapping daemons  
  16. # Description: Rsyslog is an enhanced multi-threaded syslogd supporting,   
  17. # among others, MySQL, syslog/tcp, RFC 3195, permitted   
  18. # sender lists, filtering on any message part, and fine   
  19. # grain output format control.  
  20. ### END INIT INFO  
  21.  
  22. # Source function library.  
  23. basedir=/Application/rsyslog  
  24. moddir=/Application/rsyslog/lib/rsyslog/  
  25. rsyslogdfile=$basedir/sbin/rsyslogd  
  26. . /etc/init.d/functions  
  27.  
  28. RETVAL=0  
  29.  
  30. start() {  
  31. [ -x $rsyslogdfile ] || exit 5  
  32.  
  33. # Do not start rsyslog when sysklogd is running  
  34. if [ -e /var/run/syslogd.pid ] ; then 
  35. echo $"Shut down sysklogd before you run rsyslog";  
  36. exit 1;  
  37. fi  
  38.  
  39. # Source config  
  40. if [ -f /etc/sysconfig/rsyslog ] ; then 
  41. . /etc/sysconfig/rsyslog  
  42. else 
  43. SYSLOGD_OPTIONS="-M $moddir" 
  44. fi  
  45.  
  46. if [ -z "$SYSLOG_UMASK" ] ; then 
  47. SYSLOG_UMASK=077;  
  48. fi  
  49. umask $SYSLOG_UMASK  
  50.  
  51. echo -n $"Starting system logger: " 
  52. daemon $rsyslogdfile $SYSLOGD_OPTIONS  
  53. RETVAL=$?  
  54. echo  
  55. [ $RETVAL -eq 0 ] && touch /var/lock/subsys/rsyslog  
  56. return $RETVAL  
  57. }  
  58. stop() {  
  59. echo -n $"Shutting down system logger: " 
  60. killproc $rsyslogdfile  
  61. RETVAL=$?  
  62. echo  
  63. [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rsyslog  
  64. return $RETVAL  
  65. }  
  66. reload() {  
  67. RETVAL=1  
  68. syslog=`cat /var/run/rsyslogd.pid 2>/dev/null`  
  69. echo -n "Reloading system logger..." 
  70. if [ -n "${syslog}" ] && [ -e /proc/"${syslog}" ]; then 
  71. kill -HUP "$syslog";  
  72. RETVAL=$?  
  73. fi  
  74. if [ $RETVAL -ne 0 ]; then 
  75. failure  
  76. else 
  77. success  
  78. fi  
  79. echo  
  80. return $RETVAL  
  81. }  
  82. rhstatus() {  
  83. status rsyslogd  
  84. }  
  85. restart() {  
  86. stop  
  87. start  
  88. }  
  89.  
  90. case "$1" in 
  91. start)  
  92. start  
  93. ;;  
  94. stop)  
  95. stop  
  96. ;;  
  97. restart)  
  98. restart  
  99. ;;  
  100. reload|force-reload)  
  101. reload  
  102. ;;  
  103. status)  
  104. rhstatus  
  105. ;;  
  106. condrestart)  
  107. [ -f /var/lock/subsys/rsyslog ] && restart || :  
  108. ;;  
  109. *)  
  110. echo $"Usage: $0 {start|stop|restart|reload|force-reload|condrestart}" 
  111. exit 2  
  112. esac  
  113.  
  114. exit $? 

#启动服务

 


  1. #产生服务文件  
  2. chmod +x /etc/init.d/rsyslog  
  3. #启动前先把syslog停止  
  4. service syslog stop  
  5. service rsyslog start 
#配置服务端
vi /etc/rsyslog.conf #在文件开始加上,同时确保514端口能够被客户端用tcp访问
 

  1. #指定日志文件的拥有者  
  2. $FileOwner apache  
  3. #使用tcp方式  
  4. $ModLoad imtcp # needs to be done just once  
  5. #tcp接收连接数为500个  
  6. $InputTCPMaxSessions 500  
  7. #tcp接收信息的端口  
  8. $InputTCPServerRun 514  
  9.  
  10. #为信息加上日志时间  
  11. $template logformat,"%TIMESTAMP:::date-mysql% %FROMHOST-IP%%msg%\n"   
  12. #定义的日志文件的名称,按照年月日  
  13. $template DynFile,"/Application/sdns/log/%$year%%$month%%$day%.log"   
  14. #把包含sdns_log标志的信息写到DynFile定义的日志文件里   
  15. :rawmsg, contains"sdns_log" ?DynFile;logformat   
  16. #这个表示丢弃包含sdns_log标志的信息   
  17. :rawmsg, contains"sdns_log" ~ 

配置客户端

vi /etc/rsyslog.conf #在文件开始加上
 

  1. #把包含sdns_log的信息通过tcp发到192.168.1.2 @@表示tcp @表示udp  
  2. :rawmsg, contains"sdns_log" @@192.168.1.2  
  3. #这个表示丢弃包含sdns_log标志的信息,防止这个信息写到本机的/var/log/message  
  4. :rawmsg, contains"sdns_log" ~ 
测试:
在客户端上执行
logger -p user.info "sdns_log 34334"
在服务端的/Application/sdns/log/目录里是否有日志产生

 


     本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/609330,如需转载请自行联系原作者


上一篇:5、深入理解计算机系统笔记:优化程序性能


下一篇:洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying 题解