Linux日志服务rsyslog介绍、配置网络日志、日志管理工具journalctl介绍、rsyslog把日志记录储存在mysql、使用loganalyzer展示日志、Logrotate介绍

Linux日志管理与分析
本文详细介绍Linux系统下的日志管理工具rsyslog与journalctl的功能及配置,包括日志的收集、过滤、存储和分析。同时介绍了如何利用Logrotate进行日志文件的管理和维护,确保系统的稳定运行。

Linux日志服务rsyslog介绍

rsyslog特性:
多线程
UDP, TCP, SSL, TLS, RELP
MySQL, PGSQL, Oracle实现日志存储
强大的过滤器,可实现过滤记录日志信息中任意部分
自定义输出格式

术语,参考man logger
facility:设施,从功能或程序上对日志进行归类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth),user, uucp, local0-local7, syslog

Priority 优先级别,从低到高排序
debug, info, notice, warn(warning), err(error), crit(critical), alert,emerg(panic)
参考帮助: man 3 syslog

程序包:rsyslog
主程序:/usr/sbin/rsyslogd
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
库文件: /lib64/rsyslog/*.so
配置文件格式:由三部分组成
MODULES:相关模块配置
GLOBAL DIRECTIVES:全局配置
RULES:日志记录相关的规则配置

RULES配置格式: facility.priority; facility.priority… target
facility:
*: 所有的facility
facility1,facility2,facility3,…:指定的facility列表

priority:
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息

target:
文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程服务器记录
管道: | COMMAND,转发给其它命令处理

示例:
自定义ssh日志存放

打开ssh的配置文件 sshd_config
屏蔽掉原先的设置
#SyslogFacility AUTHPRIV

添加
SyslogFacility local5

打开rsyslog.conf

添加local6的所有事件级别都放到一个文件里
local6.*      /var/log/local6.log
然后重启ssh和日志服务即可
其它的日志文件

/var/log/secure:系统安装日志,文本格式,应周期性分析
/var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
/var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
/var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
/var/log/dmesg:系统引导过程中的日志信息,文本格式
/var/log/messages :系统中大部分的信息
/var/log/anaconda : anaconda的日志

查看dmesg日志需要专用工具
使用命令dmesg

使用命令把连接错误次数大于10次的IP拒绝

shell命令方式
lastb |awk '/ssh/{print $3}' |sort |uniq -c |sort -nr |while read con ip;do if [ $con -gt 10 ];then iptables -A INPUT -s $ip -j REJECT;fi done

awk循环方式
lastb |awk '/ssh/{ip[$3]++}END{for(i in ip){if(ip[i]>10){system("iptables -A INPUT -s "i" -j REJECT")}}}

配置网络日志

同样用ssh配置远程日志

/etc/rsyslog.conf中找到下面的部分
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

这里加载了udp和tcp模块,可以监听远程发送过来的日志,可以选择单独开启udp或者tcp

在ssh配置中添加发送到远程主机
local6.*      @192.168.1.1
这里@是发送到UDP,@@是TCP

日志管理工具journalctl介绍

Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件
/etc/systemd/journald.conf

journalctl用法:
查看所有日志(默认情况下 ,只保存本次启动的日志)
journalctl

查看内核日志(不显示应用日志)
journalctl -k

查看系统本次启动的日志
journalctl -b
journalctl -b -0

查看上一次启动的日志(需更改设置)
journalctl -b -1

查看指定时间的日志
journalctl --since=“2020-1-10 18:10:30”
journalctl --since “20 min ago”
journalctl --since yesterday
journalctl --since “2020-01-10” --until “2020-01-11 03:00”
journalctl --since 09:00 --until “1 hour ago”

显示尾部的最新10行日志
journalctl -n

显示尾部指定行数的日志
journalctl -n 20

实时滚动显示最新日志
journalctl -f

查看指定服务的日志
journalctl /usr/lib/systemd/systemd

查看指定进程的日志
journalctl _PID=1

查看某个路径的脚本的日志
journalctl /usr/bin/bash

查看指定用户的日志
journalctl _UID=33 --since today

查看某个 Unit 的日志
journalctl -u nginx.service
journalctl -u nginx.service --since today

实时滚动显示某个 Unit 的最新日志
journalctl -u nginx.service -f

合并显示多个 Unit 的日志
journalctl -u nginx.service -u php-fpm.service --since today

查看指定优先级(及其以上级别)的日志,共有8级
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
journalctl -p err -b

日志默认分页输出,–no-pager 改为正常的标准输出
journalctl --no-pager

以 JSON 格式(单行)输出
journalctl -b -u nginx.service -o json

以 JSON 格式(多行)输出,可读性更好
journalctl -b -u nginx.serviceqq -o json-pretty

显示日志占据的硬盘空间
journalctl --disk-usage

指定日志文件占据的最大空间
journalctl --vacuum-size=1G

指定日志文件保存多久
journalctl --vacuum-time=1years

rsyslog把日志记录储存在mysql

1.准备好mysql,并创建复制用户

GRANT ALL ON Syslog.* TO loguser@'192.168.1.%' IDENTIFIED BY 'test112';

2.在rsyslog服务器上安装包
yum install rsyslog-mysql

3.安装包之后会提示创建数据库相关的SQL语句,放到mysql里执行

4.修改rsylog配置把日志储存到mysql里

local6.* :ommysql:192.168.1.10,rsyslog,loguser,test112

使用loganalyzer展示日志

1.搭建AMP或者NMP
yum install httpd php php-mysql php-gd

2.安装LogAnalyzer
tar xf loganalyzer-4.1.5.tar.gz
cp -a loganalyzer-4.1.5/src /var/www/html/loganalyzer
cd /var/www/html/loganalyzer
touch config.php
chmod 666 config.php

3.进入loganalyzer配置向导
http://192.168.1.10/loganalyzer

4.配置完毕后加强安全即可
cd /var/www/html/loganalyzer
chmod 644 config.php

Logrotate介绍

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,称为日志转储或滚动。可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行
配置文件是 /etc/logrotate.conf

主要参数:
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储并压缩
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,是缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
size 大小 指定日志超过多大时,就执行日志转储
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
Missingok 如果日志不存在,提示错误
Nomissingok如果日志不存在,继续下一次日志,不提示错误

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值