zoukankan      html  css  js  c++  java
  • Linux下使用rsyslog部署日志服务器 && 记录history并发送到rsyslog服务器

    一、syslog服务简介

    rsyslog 是一个 syslogd 的多线程增强版。rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件

    logger命令

    将自定义的信息写入到本地日志系统需要用到:logger 命令 

    logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息

    logger -it error  -p local5.info "hello world"
    

    -i 在每行都记录进程ID 
    -t 日志中的每一行都加一个error标签 
    -p 指定自定义的日志设备和日志级别,相关内容参见文章附录 

    日志类型

    日志类型说明
    auth pam产生的日志
    authpriv ssh,ftp等登录信息的验证信息
    cron 时间任务相关
    kern 内核
    lpr 打印
    mail 邮件
    mark(syslog) rsyslog服务内部的信息,时间标识
    news 新闻组
    user 用户程序产生的相关信息
    uucp unix to unix copy, unix主机之间相关的通讯
    local1~7 自定义的日志设备

    日志级别 

    级别 说明
    debug 有调式信息的,日志信息最多
    info 一般信息的日志,最常用
    notice 最具有重要性的普通条件的信息
    warning 警告级别
    err 错误级别,阻止某个功能或者模块不能正常工作的信息
    crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
    alert 需要立刻修改的信息
    emerg 内核崩溃等严重信息
    none 什么都不记录

    二、syslog服务配置

    [root@localhost]# yum install rsyslog rsyslog-mysql  logrotate
    [root@localhost]# service rsyslog  status
    rsyslogd (pid  24331) is running...
    [root@localhost]# ps -ef | grep rsyslogd | grep -v grep
    root     24331     1  0 20:26 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 2 -r -x -m 180
    

    server:

    配置rsyslog

    [root@localhost]# vim /etc/sysconfig/rsyslog
    
      1 # Options for rsyslogd
      2 # Syslogd options are deprecated since rsyslog v3.
      3 # If you want to use them, switch to compatibility mode 2 by "-c 2"
      4 # See rsyslogd(8) for more details
      5 # SYSLOGD_OPTIONS="-c 5"                                                                                                                                                                 
      6 SYSLOGD_OPTIONS="-c 2 -r -x -m 180"
      7 KLOGD_OPTIONS="-x"

    各参数作用:

    -c 指定运行兼容模式。

    -r 指定监听端口。 默认514

    -x 在接收客户端消息时,禁用DNS查找。需和-r参数配合使用。

    -m 标记时间戳。单位是分钟,为0时,表示禁用该功能。

    编辑rsyslog.conf 开启相关属性

    $ModLoad immark

    $ModLoad imudp

    $UDPServerRun 514

    查看是否启动

    [root@localhost]# netstat -nultp | grep 514
    udp        0      0 0.0.0.0:514                 0.0.0.0:*                               24331/rsyslogd      
    udp        0      0 :::514                      :::*                                    24331/rsyslogd     

    Client:

    编辑rsyslog.conf  新增以下:

    *.*                @192.168.1.10

    说明:    
    • 第一个*号字段为什么服务如:mail、kernel、ftpd等,这里的*号代表所有服务

    • 第二个*号字段为记录相应服务的日志级别如info、warn、err等,这里*号代表说有级别,即所有服务的说有日志都会发送到192.168.1.10这台主机上

    注意:如果server端开启的是tcp的514端口,上面就应该这样写:*.*    @@rsyslog-server-ip

    记录日志(有一个很实用的功能记录服务器执行的history)

    这里有多种方法

    第一种

    修改bash源码,重新编译

    # wget http://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz
    # tar zxvf bash-4.2.tar.gz -C /usr/local/bash-4.2
    # cd /usr/local/bash-4.2
    
    。。。
    

    可以参见 http://levichen.logdown.com/posts/2013/11/04/syslog-record-history

    第二种 使用trap (Just add the following lines in your /etc/profile

    function log2syslog
    {
       declare command
       command=$(fc -ln -0)
       logger -p local1.notice -t bash -i — $USER : $command
    }
    trap log2syslog DEBUG
    

    第三种 (Just add the following lines in your /etc/profile

    export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
    export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local1.notice -t bash -i "user=$USER,from=$SSH_CLIENT,pwd=$PWD,command:$command"; }'
    alias precmd "history 1 | /bin/logger -p local1.notice -t `echo $SHELL`:`whoami`:`pwd`:`ip r l |cut -d' ' -f12` -i "
    PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "$USER[$$] $SSH_CONNECTION")'
    export PROMPT_COMMAND='if [ "$(id -u)" -ne 0 ]; then echo "$(date "+%Y-%m-%d.%H:%M:%S") $(pwd) $(history 1)" >> ~/.logs/bash-history-$(date "+%Y-%m-%d").log; fi'
    

    有好多种方式来记录,我采用第二条命令

    三、rsyslog server文件配置

    修改配置文件

    vim /etc/rsyslog.d/50-default.conf

    添加内容

    *.* /var/log/remotehost.log

    新建保存日志文件

    touch /var/log/remotehost.log

    重启rsyslog server,用tail动态查看

    tail -f /var/log/remotehost.log 

    参考文章

    http://levichen.logdown.com/posts/2013/11/04/syslog-record-history

  • 相关阅读:
    单独的数字
    设计模式之原型模式
    设计模式之策略模式
    设计模式之单例模式
    泛型入门
    iOS中关于.pch的新建与配置问题
    iOS开发中遇到的头文件找不到的问题解决办法
    iOS中NSJSONSerialization的使用 小记
    6.线程、进程、协程基础篇
    5.装饰器进阶篇
  • 原文地址:https://www.cnblogs.com/chenpingzhao/p/6596885.html
Copyright © 2011-2022 走看看