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. BZOJ2588 主席树 + 树上差分

    https://www.lydsy.com/JudgeOnline/problem.php?id=2588 题意:强制在线的询问树链权值第K小(无修) 这种类似于第K小的题,一般容易想到主席树,但是树 ...

  2. jmeter将上一个接口返回值作为下一个接口的请求参数

    在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...

  3. ArcGis Classic COM Add-Ins插件开发的一般流程 C#

    COM add-ins是我对这种开发方式的称呼,Esri的官方文档里称其为“Extending ArcObject”或者“Classic COM extensibility”,Esri所称的addin ...

  4. SpringBoot系列: 单元测试2

    之前发了SpringBoot 单元测试的博客, https://www.cnblogs.com/harrychinese/p/springboot_unittesting.html , 内容较少, 现 ...

  5. Groovy 设计模式 -- 组合模式

    Composite Pattern http://groovy-lang.org/design-patterns.html#_chain_of_responsibility_pattern 组合模式, ...

  6. 高并发秒杀系统--Service接口设计与实现

    [DAO编写之后的总结] DAO层    -->    接口设计 + SQL编写 DAO拼接等逻辑    -->    统一在Service层完成 [Service层的接口设计] 1.接口 ...

  7. 子级用了float浮动之后,如何撑开父元素,让父元素div自动适应高度

    方法一:对父级设置固定高度 假如以上案例,我们知道内部div高度100px,那对父级设置css height为100px看看效果. 此方法缺点,父级是固定高度,而不随内容高度自适应高度,没高度.此方法 ...

  8. 杨辉三角(用for循环)

    public class Test413__________________ { public static void main(String[] args) { int rows = 10; for ...

  9. shiro执行原理

    一.架构 要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙.Shiro的应用不依赖任何容器,它也可以在JavaSE下使用.但是最常用的环境还是JavaEE.下面以 ...

  10. PHP 数组反转(值有重复)

    public function indexssss() { $a=[ 'Input.txt' => 'Randy', 'Code.py' => 'Stan', 'Output.txt' = ...