Jetbrains全系列IDE稳定放心使用
简介
rsyslog是一个快速的日志处理系统,具有卓越的性能和出色的安全性,采用模块化设计,他可以从各种数据源中接收输入、转换数据再将结果输出到指定的位置。他不仅适用于企业,也适用于小型系统。
rsyslog是一个c/s架构,既可以作为日志客户端上报日志,也可以作为服务端接收日志
rsyslog是模块化设计,因此很多功能需要加载相关的模块
官方文档
基本维护
安装
一般主流linux系统都自带rsyslog,不过可能版本比较旧或者特性不够,可通过如下方式安装或更新
cd /etc/yum.repos.d/
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
yum install rsyslog
启停
systemctl start/stop rsyslog
查看日志
journalctl -u rsyslog
相关目录
主配置文件
/etc/rsyslog.conf
配置目录
/etc/rsyslog.d
个人的配置文件可以存放在此处
安装路径
/usr/sbin/rsyslogd
配置文件有三种格式
- sysklogd,
mail.info /var/log/mail.log- legacy rsyslog
- RainerScript(推荐)
if prifilt(“mail.info”) then action(type=“omfile” file=”/var/log/maillog”)
调试
配置文件检查
/usr/sbin/rsyslogd -f /etc/rsyslog.conf -N1
调试日志
rsyslogd支持通过信号、环境变量、配置文件控制调试,建议通过信号和环境变量控制调试
export RSYSLOG_DEBUGLOG=/var/log/rsyslog.debug
export RSYSLOG_DEBUG=“DebugOnDeman NoStdOut”
kill -USR1 $(cat /var/run/rsyslogd.pid)
在rsyslog.conf的前面加上
$DebugFile /var/log/rsyslog.debug
# 日志增常非常快,可以设置为1,通过如下方式触发
# kill -USR1 `cat /var/run/rsyslogd.pid`
$DebugLevel 2
核心概念
message通过input module进入rsyslog,然后被传递给ruleset, 进行一系列的规则匹配,匹配到规则后,message会被传递给对应的action, 并进行相关处理,比如写入文件,写入mysql,发送到远端等。
module
分为input和output(action)
input: imfile
output: omfile
内建模块不需要load,如omfwd, omfile
可以通过yum search rsyslog查看和安装模块
message:
即日志信息,传入rsyslog的日志信息称为message,其属性有tag, facility, severity,
input:
将外部数据传入rsyslog,常见输入模块如下
imfile: 处理文本类型的日志,常用于处理应用服务的日志
imdocker: 从docker中获取日志
imjournal: 从journal中获取日志
imtcp: 从tcp中获取日志
input(type="imfile"
File="/usr/local/easyops/agent/log/easyops.log"
Tag="easyops_agent"
Severity="info"
Facility="local1")
ruleset
规则集,其包含一个filter和多个action,用于处理日志,当message匹配filter后,相应的action会执行
规则集的匹配顺序从上到下,每个规则都会检查message,即使已经匹配到了规则。
默认的ruleset为RSYSLOG_DefaultRuleset
ruleset(name="rulesetname") {
action(type="omfile" file="/path/to/file")
action(type="..." ...)
/* and so on... */
}
实例
配置客户端
以下示例将/usr/local/easyops/agent/log/easyops.log的消息发送到远端192.168.100.238的tcp 514中
module(load="imfile")
ruleset(name="easyops_agent"){
action(type="omfwd" target="192.168.100.236" port="514" protocol="tcp")
}
input(type="imfile"
File="/usr/local/easyops/agent/log/easyops.log"
Tag="easyops_agent"
Severity="info"
Facility="local1"
ruleset="easyops_agent")
日志服务器
以下示例将tcp 514的消息存储到/var/log/tcp_t14_agent中
module(load="imtcp")
input(type="imtcp" port="514" ruleset="tcp_514")
ruleset(name="tcp_514"){
action(type="omfile" dircreatemode="0700" filecreatemode="0644" file="/var/log/tcp_514_agent")
}
输出日志到mysql
安装rsyslog-mysql
yum install -y rsyslog-mysql
rpm -ql rsyslog-mysql
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
mysql < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
grant all on Syslog.* to ‘rsyslog’@’%’ identified by ‘net123456’;
grant all on Syslog.* to ‘rsyslog’@‘localhost’ identified by ‘net123456’;
flush privileges;
vim /etc/rsyslog.conf
$ModLoad ommysql
*.* action(type="ommysql" server="192.168.100.236" serverport="3306"
db="Syslog" uid="rsyslog" pwd="net123456")