rsyslog介绍

rsyslog是一个 syslogd 的多线程增强版。它提供高性能、极好的安全功能和模块化设计。虽然它基于常规的 syslogd,但 rsyslog 已经演变成了一个强大的工具,可用于:

  • 接收来自各种来源的输入
  • 转换它们
  • 将结果输出到不同的目的地

rsyslog移植

移植版本

-rw-rw-r-- 1 bala bala 558K Oct 28 13:11 zlib-1.2.8.tar.gz
-rw-rw-r-- 1 bala bala 280K Oct 20 07:03 liblogging-1.0.5.tar.gz
-rw-rw-r-- 1 bala bala 311K Oct 19 13:57 libuuid-1.0.3.tar.gz
-rw-rw-r-- 1 bala bala 329K Oct 19 11:45 libestr-0.1.10.tar.gz
-rw-rw-r-- 1 bala bala 2.2M Oct 19 11:28 rsyslog-8.22.0.tar.gz
-rw-rw-r-- 1 bala bala 1.3M Oct 28 21:44 libfastjson-0.99.4.zip

libestr-0.1.10.tar.gz
libfastjson-0.99.4
libuuid-1.0.3.tar.gz

./configure \
CC=XXX-gcc \
--build=$(./config.guess) \
--host=x86_64-pc-linux && make && sudo make install

zlib-1.2.8.tar.gz

CC=XXX-gcc \
./configure && make && sudo make install

liblogging-1.0.5.tar.gz

autoreconf -v --install
./configure \
CC=XXX-gcc \
--build=$(./config.guess) \
--disable-journal --disable-man-pages \
--host=x86_64-pc-linux && make && sudo make install

编译时,如遇到类似如下malloc或realloc错误,在config.h.in中注释掉如下定义:
#undef malloc
#undef realloc:

./.libs/liblogging-stdlog.so: undefined reference to `rpl_malloc'
collect2: error: ld returned 1 exit status
make[2]: *** [stdlogctl] Error 1

rsyslog-8.22.0.tar.gz

./configure \
CC=XXX-gcc \
--build=$(./config.guess) \
LIBS=-lm \
--disable-libgcrypt \
--enable-imfile --enable-imptcp --enable-omstdout \
--host=x86_64-pc-linux \
&& make && sudo make install

rsyslog client端配置

client端需要注意处理日志传输的可靠性,如果处理不当,可能你会遇到如下日志丢失的场景:

  1. 在tcp建链前把rsyslog拉起来,在tcp建链前的日志都会丢掉。
  2. tcp建链后,中间发生断链后又恢复(比如ifconfig eth0 down/up),这期间的日志也会丢掉。

所以采取的可靠性保证措施如下:

  1. 配置使能官网推荐的本地数据缓存机制
  2. 在确认建链后重新启动rsyslog服务;
alex@cb:~$ cat rcS
(省略)
# slave rsyslog
chmod +x /etc/run_rsyslog
./etc/run_rsyslog &
(省略) alex@cb:~$ cat run_rsyslog
#!/bin/sh rsyslogd -f /etc/rsyslog.slave.conf -i /etc/rsyslogd.pid
while true
do
# send a msg to check whether tcp connection is established.
logger "running rsyslogd..."
netstat -t >& | grep -e ":514[ ]*ESTABLISHED"
if [ "$?" = "" ]; then
sleep
continue
fi
kill - $(cat /etc/rsyslogd.pid)
sleep
rsyslogd -f /etc/rsyslog.slave.conf -i /etc/rsyslogd.pid
logger "rsyslogd TCP connection ESTABLISHED."
exit
done alex@cb:~$ cat rsyslog.slave.conf
module(load="imuxsock") # provides support for local system logging (e.g. via logger command)
module(load="imklog") # provides kernel logging support (previously done by rklogd)
#module(load"immark") # provides --MARK-- message capability
module(load="imfile") input(type="imfile"
File="/dev/util"
Severity="info"
Facility="local0"
Tag="util") input(type="imfile"
File="/dev/usrdrvexc0"
Severity="info"
Facility="local1"
Tag="usrdrvexc0") input(type="imfile"
File="/dev/usrdrvexc1"
Severity="info"
Facility="local2"
Tag="usrdrvexc1") input(type="imfile"
File="/var/eip_svc_*.log"
Severity="info"
Facility="local3"
Tag="subcard") $template myFormat,"%TIMESTAMP:::date-rfc3164% %msg%\n"
$ActionFileDefaultTemplate myFormat $WorkDirectory /var/lib/rsyslog
$ActionQueueFileName fwdRule1
$ActionQueueMaxFileSize 1m
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -
*.* @@168.0.31.1:

rsyslog server端配置

alex@cb:~$ cat rcS
(省略)
# log rotation
mkdir -p /var/spool/cron/crontabs
crond -l 20 -L /var/log/crond.log
chmod +x /usr/sbin/log_rotation
echo "* * * * * /usr/sbin/log_rotation" > /var/spool/cron/crontabs/root # rsyslog
rsyslogd -f /etc/rsyslog.master.conf -i /etc/rsyslogd.pid
(省略) alex@cb:~$ cat rsyslog.master.conf module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514") $template myFormat,"%TIMESTAMP:::date-rfc3164% %msg%\n"
$ActionFileDefaultTemplate myFormat $template KlogFile,"/sysdisk0/run_log/util/dmesg-%FROMHOST%.log"
$template UserlogFile,"/sysdisk0/run_log/util/userlog-%FROMHOST%.log"
$template UtilFile,"/sysdisk0/run_log/util/util-%FROMHOST%.log"
$template Usrdrvexc0File,"/sysdisk0/run_log/util/usrdrvexc0-%FROMHOST%.log"
$template Usrdrvexc1File,"/sysdisk0/run_log/util/usrdrvexc1-%FROMHOST%.log"
$template SubcardFile,"/sysdisk0/run_log/util/subcard-%FROMHOST%.log" kern.* ?KlogFile
local0.* ?UtilFile
local1.* ?Usrdrvexc0File
local2.* ?Usrdrvexc1File
local3.* ?SubcardFile
*.info;kern.none;local0.none;local1.none;local2.none;local3.none ?UserlogFile

日志回卷配置

官网提供的一种简单的日志回卷方案

# start log rotation via outchannel
# outchannel definition
$outchannel log_rotation,/var/log/log_rotation.log, ,/home/me/./log_rotation_script
# activate the channel and log everything to it
*.* :omfile:$log_rotation
# end log rotation via outchannel

这个方案可以对有固定文件名的日志文件进行回卷,单其缺点就是不支持动态模板命名文件。

对于动态模板命名文件,一种可用的日志回卷方案是基于crond实现方案,示例如下。

alex@cb:~$ cat log_rotation
#!/bin/sh large_logs=`find /sysdisk0/run_log/util/ -type f -size +1024k -regex "/sysdisk0/run_log/util/\(subcard\|usrdrvexc0\|usrdrvexc1\|userlog\|util\)-.*\.log"` for file in $large_logs;
do
mv -f $file $file.;
done;

--EOF--

rsyslog 移植与配置方案介绍的更多相关文章

  1. Spring MVC之视图解析器和URL-Pattern的配置方案

    上期讲解了第一入门案例之后接下来了解一下视图解析器与URL-Pattern的配置方案 先来说视图解析器,在上次博客文章中我们完成了入门案例,接下来我们就在上一个例子中完善一下体出视图解析器 <? ...

  2. Apache安全配置方案

    Apache安全配置方案 from:http://drops.wooyun.org/%e8%bf%90%e7%bb%b4%e5%ae%89%e5%85%a8/2727 apache的一些配置主要是通过 ...

  3. gVim 配置方案 采用Vundle管理插件

    在Linux下配置vim非常简单,尤其是采用Vundle来管理插件,使得一切用起来得心应手. Maple大神在github上公布了自己的vim配置方案,相当方便好用.详见 https://github ...

  4. DataBase MongoDB集群方案介绍

    MongoDB集群方案介绍 一.什么是mongodb集群? 是指由多台mongodb服务器组成的服务器集群,称之为mongodb集群. 二.mongodb集群搭建的方式: 1.Replica Set  ...

  5. HBase 数据迁移方案介绍

    一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分为以下几类: 图1.HBase数据迁移方案 从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类.下 ...

  6. HBase 数据迁移方案介绍 (转载)

    原文地址:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...

  7. LoadRunner配置方案

    1.配置方案运行时设置 选择“Tools”>“Options”.在“Options”对话框有“Run-Time Settings”(运行时设置).“Timeout”(超时).“Run-Time  ...

  8. redis.windows.conf各项配置参数介绍 (九)

    # 默认情况下,redis不是在后台模式运行的,如果需要在后台进程运行,把该项的值更改为yes,默认为no daemonize:是否以后台daemon方式运行 # 如redis服务以后台进程运行的时候 ...

  9. MongoDB集群方案介绍

    MongoDB集群方案介绍 一.什么是mongodb集群? 是指由多台mongodb服务器组成的服务器集群,称之为mongodb集群. 二.mongodb集群搭建的方式: 1.Replica Set  ...

随机推荐

  1. SQL随记(三)

    1.关于package: 包的作用:可以将任何出现在块声明的语句(过程,函数,游标,游标,类型,变量)放入包中,相当于一个容器. 包的好处:在包中的(过程,函数,游标,游标,类型,变量)相当于sql/ ...

  2. 利用DOS命令窗口进行Mail通信(二)

    一:SMTP协议(对邮件进行发送) <SP>代表空格,<CRLF>代表回车和换行 SMTP命令格式 说明 ehlo<SP><domain><CRL ...

  3. python GUI 之 tkinter

    写一个 登陆窗口来学习 tkinter ,还剩下一些问题 代码暂时如下 import tkinter as tk import webbrowser import pickle from tkinte ...

  4. NSE: known a priori estimate

    1. Leray-Hopf $u\in L^\infty(0,T;L^2(\bbR^3))\cap L^2(0,T;H^1(\bbR^3))$. See [Leray, Jean. Sur le mo ...

  5. [物理学与PDEs]第2章习题5 正应力的平均值

    设流场中流体的应力张量为 ${\bf P}=(p_{ij})$. 试证明: 在以某点为中心, $r$ 为半径的球面 $S_r$ 上的法向应力分量的平均值, 在 $r\to 0$ 时的极限为该点正应力的 ...

  6. SQL Server 跨服务器操作

    Ø  简介 在工作中编写 SQL 时经常会遇到跨库或跨服务器操作,比如查询时,通过 A 服务器的某张表关联 B 服务器某张表,进行连接查询.或者从另一台服务器中的数据,对当前数据库中的数据进行 CRU ...

  7. Python列表中查找某个元素的索引(多个)

    enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 以下是 enumerate() 方法的语法: e ...

  8. 2.9 while循环

    while循环 <1>while循环的格式 while 条件: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... demo i = 0 whil ...

  9. react中input自动聚焦问题

    input自动聚焦问题 在react中可以使用refs解决这个问题,首先看一下refs的使用场景: (1)处理焦点.文本选择或媒体控制. (2)触发强制动画. (3)集成第三方 DOM 库. 使用re ...

  10. 用juery的ajax方法调用aspx.cs页面中的webmethod方法

    首先在 aspx.cs文件里建一个公开的静态方法,然后加上WebMethod属性. 如: [WebMethod] public static string GetUserName() { //.... ...