日志管理
Posted skyzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志管理相关的知识,希望对你有一定的参考价值。
日志管理 日志格式:文本日志/二进制日志/数据库日志 默认的相关日志文件: /var/log/boot.log 系统引导日志,记录开机启动信息 /var/log/dmesg 核心的启动日志 /var/log/messages 系统的日志文件 /var/log/maillog 邮件服务的日志 /var/log/xferlog ftp服务的日志 /var/log/secure 网络连接及系统登录的安全信息 /var/log/cron 定时任务的日志 /var/log/wtmp 记录所有的登入和登出 last -f 查看 /var/log/btmp 记录失败的登入尝试 日志系统rsyslog 的配置文件是:/etc/rsyslog.conf 配置文件中常见的表示符号 . <-- 用来分隔服务和日志级别 mail.xxx * <-- 任何服务,或者任何级别 = <-- 有等号表示等于某一级别,没有等号表示大于或者等于某一级别 ! <-- 排除操作,前面有相同服务的表达式,这个操作才有意义 代表从前面表达式所包含的内容中排除某些内容 ; <-- 用于分隔不同的 服务.级别 组合 , <-- 用于分隔不同的服务 - <-- 用于指定目标文件时,代表同步写入 *.info;mail.none;authpriv.none;cron.none /var/log/messages --->所有服务产生的日志,除了mail/验证/任务计划相关日志都记录/var/log/message authpriv.* /var/log/secure --->记录所有跟验证有关日志 mail.* /var/log/maillog --->记录所有跟邮件有关的日志信息 cron.* /var/log/cron --->记录跟任务计划查关的日志 *.emerg * ---> 把所有级别为emerg 的信息发送给所有登录到系统上的用户 uucp,news.crit /var/log/spooler local7.* /var/log/boot.log ---> 记录所有跟启动相关的日志信息 log facility 设备 设施: 用来记录一种类型日志的日志设备 eg:daemon auth authpriv user mail lpr news uucp ftp local0-7 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 本地日志管理 测试: 1、发送一封邮件 # echo hello world |mail -s test root 2、发个log消息测试 logger 用于往系统中写入日志,他提供一个shell命令接口到syslog系统模块 #logger -t "Loggertest" -p mail.info "Testing log info" -t 指定标记记录 -p 指定输入消息的优先级,优先级可以是数字或者指定为 " facility.level" 的格式。 eg:" -p local3.info " local3 这个设备的消息级别为 info。默认级别是 "user.notice" -i 逐行记录每一次logger的进程ID demo2:把ssh的日志指定记录到/var/log/ssh下 思路: 1、首先需要定义ssh服务的日志记录载体(设备) 2、将来自该载体的日志记录到指定的文件中(通过修改rsyslog主配置文件) 步骤: 1、通过修改ssh服务的配置文件来指定设备载体 # vim /etc/ssh/sshd_config ---> SyslogFacility local0 # /etc/init.d/sshd restart 2、将来自local0设备上的日志记录到指定的位置 # vim /etc/rsyslog.conf --->local0.info /var/log/ssh # service rsyslog restart 3、测试验证 client:# ssh 10.1.1.1 tail -f /var/log/ssh(查看) 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 远程日志(日志集中化管理): 把多台服务器的日志远程记录到其中一台集中化管理,方便对其统一分析 环境: eg: log server log client 10.1.1.1 10.1.1.2 需求:把10.1.1.2上的ssh的服务日志,远程记录到10.1.1.1上/var/log/ssh里 思路: 1、server端和client都需要安装rsyslog程序 2、server端需要先打开一扇门来接收client端发送过来的日志 3、client端需要指定将来自某个设备上的日志发送到远端的哪台主机 步骤: server操作(10.1.1.1): 1) 确认软件包是否安装 # rpm -q rsyslog 2)通过修改配置文件来打开514端口 # vim /etc/rsyslog.conf ---># Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 3) 重启服务 # service rsyslog restart 4)测试验证 # netstat -nlup|grep 514 # lsof -i :514 查看端口是否打开 client端操作(10.1.1.2): 1) 确认软件包是否安装 # rpm -q rsyslog 2) 修改ssh服务的日志载体 # vim /etc/ssh/sshd_config --->SyslogFacility AUTH 3) 重启ssh的服务 # service sshd restart 4)修改rsyslog.conf文件,指定来自AUTH设备上的日志存放位置 # vim /etc/rsyslog.conf --->AUTH.* @10.1.1.1:514 5) 重启rsyslog服务 # service rsyslog restart 测试验证: ssh 10.1.1.2 server端:tail -f /var/log/messages :查看 *.* @192.168.0.254 UDP 一个@(TCP 加一个@) 如果是TCP *.* @@192.168.0.24 #service rsyslog restart #logger -i -t testlog "this is a logtest" 默认保存到远程服务器的/var/log/messages下 问题: 1、不但记录到了远程服务器而且也记录到了本地 2、远程服务器怎么保存到指定的文件里?如果有100台日志都传到此文件,怎么区分? 解决: 1、client端:10.1.1.2 # vim /etc/rsyslog.conf ---> *.info;mail.none;authpriv.none;cron.none;AUTH.none /var/log/messages 2、server端:10.1.1.1 指定client端发送过来的日志单独保存到不同的文件 # vim /etc/rsyslog.conf ---> $template DynFile,"/var/log/system-%HOSTNAME%.log" local0.* ?DynFile;SpiceTmpl以上是关于日志管理的主要内容,如果未能解决你的问题,请参考以下文章