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. Day044--javascript, ECMAScript

    一. javascript JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:操作网页上的 ...

  2. Linux设备树(四 中断)

    四 中断 中断一般包括中断产生设备和中断处理设备.中断控制器负责处理中断,每一个中断都有对应的中断号及触发条件.中断产生设备可能有多个中断源,有时多个中断源对应中断控制器中的一个中断,这种情况中断产生 ...

  3. Mac新手必看教程—让你离熟练操作mac只差十分钟

    本文收录于:风云社区(提供各类mac软件资源下载) 本文源自:什么值得买 无论轻薄办公本.还是赶超台式性能的游戏本,关注#笔记本攻略#栏目,解决笔记本电脑从选购到使用的各种问题. 引子 大部分用户接触 ...

  4. Fiddler--AutoResponder

    AutoResponder支持创建规则,可以在响应请求时自动触发,常见例子是返回之前捕捉的响应,而不需要访问服务器. 通俗点讲,就是它能在不访问服务器的情况下,使发送的请求得到自己设置的响应. 下图是 ...

  5. oldboy s21day09

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.将函数部分知识点,整理到自己笔记中.(搞明白课上讲的案例.) # 2.写函数,检查获取传入列表或元组对象 ...

  6. 防止Web表单重复提交的方法总结

    在Web开发中,对于处理表单重复提交是经常要面对的事情.那么,存在哪些场景会导致表单重复提交呢?表单重复提交会带来什么问题?有哪些方法可以避免表单重复提交? 表单重复提交的场景 1.场景一:服务端未能 ...

  7. 老是上不了 google scholar...

    这段时间老是上不了 google scholar... 下载了最新的 host 也不行. 难道真是电脑有问题了? 网络有时也老是掉... 也好. 多休息休息. 人生难得几回清闲. 马上就要开学咯. 课 ...

  8. CF611D lcp+dp

    本篇博客只是留个辣鸡的自己标记一下,误入的同学请出门左转博客 https://blog.csdn.net/loy_184548/article/details/50865777 代码神马的也是复制啊 ...

  9. vue之生命周期函数例子

    执行代码看生命周期函数的执行顺序 <!-- 根组件 --> <!-- vue的模板内,所有内容要被一个根节点包含起来 App.vue --> <template> ...

  10. 拆系数FFT及其部分优化

    模拟考某题一开始由于校内OJ太慢直接拆系数FFT跑不过 后来被神仙婊了一顿之后发现复杂度写炸了改了改随便过 模版题:任意模数NTT 三模数NTT 常数巨大,跑的极慢 拆系数FFT 原理是对于两个多项式 ...