前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rsyslog日志管理[通俗易懂]

rsyslog日志管理[通俗易懂]

作者头像
全栈程序员站长
发布2022-11-08 16:08:03
1.7K0
发布2022-11-08 16:08:03
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

文章目录

简介

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

配置文件有三种格式

  1. sysklogd, mail.info /var/log/mail.log
  2. legacy rsyslog
  3. 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的前面加上

代码语言:javascript
复制
$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中获取日志

代码语言:javascript
复制
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

代码语言:javascript
复制
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中

代码语言:javascript
复制
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中

代码语言:javascript
复制
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

代码语言:javascript
复制
$ModLoad ommysql
*.* action(type="ommysql" server="192.168.100.236" serverport="3306"
db="Syslog" uid="rsyslog" pwd="net123456")

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月24日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 简介
    • 基本维护
      • 核心概念
      • 实例
        • 配置客户端
          • 日志服务器
            • 输出日志到mysql
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档