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. Python:正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  2. 在CentOS 上搭建nginx来部署静态页面网站

    在centOs 上搭建nginx来部署静态页面网站 一.部署服务器环境 nginx:轻量级.高性能的HTTP及反向代理服务器,占用内存少,并发能力强,相比老牌的apache作为web服务器,性能更加卓 ...

  3. 五道java小题,补更四道java小题

    一:分析以下需求,并用代码实现     1.定义List集合,存入多个字符串     2.删除集合中字符串"def"     3.然后利用迭代器遍历集合元素并输出 import j ...

  4. IScroll某些手机下不触发ScrollEnd问题处理

    同样是微信7.0,看起来内核都是x5内核,两款不同的手机,一个有问题,一个没有问题. IScroll在问题手机下会出现快速拨动时候不触发ScrollEnd事件现象,轻点一次才会触发,解决办法 docu ...

  5. 在 Visual Studio 中使用 IntelliTrace 快照功能

    今天发现vs2017 IntelliTrace有了一个快照功能,测试一下它的用法 1.选项->IntelliTrace->选择第三项 2.建一个控制台应用程序 3.在main中写一个简单的 ...

  6. [再寄小读者之数学篇](2014-11-02 Herglotz' trick)

    设 $f$ 是 $\bbR$ 上周期为 $1$ 的连续可微函数, 满足 $$\bee\label{141102_f} f(x)+f\sex{x+\frac{1}{2}}=f(2x),\quad\for ...

  7. 人工智能-调百度AI接口+图灵机器人

    1.登陆百度AI的官网 1.注册:没有账号注册 2.创建应用 3.创建应用 4.查看应用的ID 5.Python代码 from aip import AipSpeech APP_ID = " ...

  8. CentOS 安装 ceph 单机版

    简介 Ceph是一个分布式存储软件. 它支持用3种方式存储数据,分别是:对象存储.块设备存储.分布式文件系统存储. Ceph这个软件,分为3层,最底层是Rados对象存储系统.中间是一个librado ...

  9. 第四节,目标检测---YOLO系列

    1.R-CNN回顾 适应全卷积化CNN结构,提出全卷积化设计 共享ResNet的所有卷积层 引入变换敏感性(Translation variance) 位置敏感分值图(Position-sensiti ...

  10. 【原创】大叔经验分享(2)为什么hive在大表上加条件后执行limit很慢

    问题重现 select id from big_table where name = 'sdlkfjalksdjfla' limit 100; 首先看执行计划: hive> explain se ...