博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志管理
阅读量:6893 次
发布时间:2019-06-27

本文共 7602 字,大约阅读时间需要 25 分钟。

rsyslog配置相关

配置文件:

/etc/rsyslog.conf,/etc/rsyslog.d/*.conf

库文件:

/lib64/rsyslog/*.so

配置文件格式:

MODULES:相关模块配置GLOBAL DIRECTIVES:全局配置RULES:日志记录相关的规则配置

facility 从功能或程序上对日志进行归类

auth, authpriv, cron, daemon,ftp,kern, lpr, mail,news, security(auth), user, uucp, local0-local7, syslogauth        pam产生的日志 authpriv    ssh,ftp等登录信息的验证信息 cron        计划任务相关 kerl        内核 lpr         打印 mail        邮件 syslog      Rsyslog服务内部信息,时间标识 news        新闻组 user        用户程序产生的相关信息 uucp        unix to unix copy;Unix主机之间相关的通信 local 0-7   自定义的日志设备其它的日志文件/var/log/secure:系统安全日志,文本格式,应周期性分析/var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看/var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看/var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看/var/log/dmesg:系统引导过程中的日志信息,文本格式        文本查看工具查看        专用命令dmesg查看/var/log/messages :系统中大部分的信息/var/log/anaconda : anaconda的日志

Priority 优先级别,从上到下级别越来越高

7 debug 调试信息的日志,日志信息最多 6 info 一般信息的日志,最常用 5 notice 最具有重要性的普通条件的信息 4 warn 警告级别 3 err 错误级别,阻止某个功能或者模块不能正常工作的信息 2 crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息 1 alert 需要立刻修改的信息 0 emerg 内核崩溃等严重信息如果在日志中设定了比如warn,那么日志将会记录warn(含)之后的级别日志

配置语法:

日志类别.日志级别 日志文件cron.*                                                  /var/log/cron*.info;mail.none;authpriv.none;cron.none                /var/log/messagesmail.*                                                  -/var/log/mailloglocal2.*                                                root语法分别2部分前面的部分.       分隔日志类别.日志级别*       全部noen    不记录,       指定的facility列表;       语句分隔后面文件路径的部分-       异步写磁盘(非实时)user:将日志事件通知给指定的用户,* 表示登录的所有用户。su - 切换用户无法接收@host,把日志送往至指定的远程服务器记录| COMMAND,管道,转发给其它命令处理

日志管理journalctl

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

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

journalctl

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

journalctl -k

查看系统本次启动的日志

journalctl -bjournalctl -b -0

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

journalctl -b -1

查看指定时间的日志

journalctl --since="2017-10-30 18:10:30"journalctl --since "20 min ago"journalctl --since yesterdayjournalctl --since "2017-01-10" --until "2017-01-1103: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.servicejournalctl -u nginx.service --since today

实时滚动显示某个 Unit 的最新日志

journalctl -u nginx.service -f

合并显示多个 Unit 的日志

journalctl -u nginx.service -u php-fpm.service --since today

查看指定优先级(及其以上级别)的日志,共有8级

0: emerg1: alert2: crit3: err4: warning5: notice6: info7: debugjournalctl -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

Logrotate日志存储

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

配置文件

/etc/logrotate.conf

配置项说明:

指定以时间为转储周期,与文件大小周期互斥

daily   每天weekly  每周monthly 第月

日志转储后多少天被删除

maxage 60

指定以文件大小为转储周期,与时间周期互斥

maxsize sizeminsize  size

指定日志文件删除之前滚动的次数,每个转储周期为1次

rotate 4    保留4次rotate 0    没有日志

达到多大时转储日志

size 100ksize 100Msize 100G

转储周期后使用指定的文件模式创建新的日志文件

create      创建空的文件nocreate    不建立新的日志文件create mode owner group  创建指定信息的空日志文件create 600 root group1create owner group       创建指定信息的空日志文件

对于空的日志文件的处理方法

ifempty     即使是空文件也转储,是缺省选项notifempty  如果是空文件的话,不转储

日志不存在时的处理方法:

Missingok   如果日志不存在,提示错误Nomissingok 如果日志不存在,继续下一次日志,不提示错误

旧的日志文件被转储后的后缀

dateext     日期格式:YYYYMMDD,使用dateformat指定的方法dateformat format_string   指定格式。只支持%Y %m %d %s  默认 -%Y%m%dnodateext    没有日期后缀,覆盖dateext选项

压缩方法:

compress        使用gzipnocompress      不压缩delaycompress   和 compress 一起使用时,转储的日志文件到下一次转储时才压缩nodelaycompress 覆盖 delaycompress 选项,转储并压缩

对于正在打开的日志的处理方法

copytruncate    把当前日志备份并截断ocopytruncate   备份日志文件但是不截断

转储通知方法:

mail hunk    把转储的日志文件发送到指定的E-mail 地址nomail              转储时不发送日志文件errors hunk  转储时的错误信息发送到指定的E-mail 地址

转储目标路径

olddir directory    转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统noolddir            转储后的日志文件和当前日志文件放在同一个目录下

转储日志时指定操作

prerotate/endscript     在转储前需要执行的命令可以放入这个对,这两个关键字必须单独成行postrotate/endscript    在转储后需要执行的命令可以放入这个对,这两个关键字必须单独成行

子配置文件路径

include /etc/logrotate.d

更多的选项请man logrotate

具体定义规则示例:

/var/log/wtmp {            > 定义了/var/log/wtmp的日专业转储规则    monthly                 > 以月为周期    create 0664 root utmp   > 达到周期后以创建的方式产生新的日志文件,并指定权限和所有者与所有组        minsize 1M          > 最小转发储条件为1M    rotate 1                > 保留一份转储}/usr/local/httpd/*.logs{    daily    olddir old_logs    create 0664 root root    minsize 1M    maxsize 10M    rotate 2    maxage 3    mail root}可以在一个配置文件里定义多个日志规则/var/log/cron/var/log/maillog/var/log/messages/var/log/secure/var/log/spooler{    sharedscripts    postrotate        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true    endscript}

应用案例

其他应用程序调用rsyslog

1.先在/etc/rsyslog.conf中RULES语句块中定义规则local0.*                                              /var/log/ssh.log2.在其他应用程序中定义,这里以sshd服务为例# vim /etc/ssh/sshd_configSyslogFacility local0#service restart rsyslog#service restart sshd

向远程主机发送日志消息

1.远程主机加载模快并监听端口# vim /etc/rsyslog.conf启用UDP方式$ModLoad imudp$UDPServerRun 514启用TCP方式$ModLoad imtcp$InputTCPServerRun 5142.#systemctl restart rsyslog.service3.在发送日志主机上填写规则# vim /etc/rsyslog.conflocal0.*                                                @192.168.5.103  > 使用UDPlocal0.*                                                @@192.168.5.103 > 使用TCP4. #service rsyslog restart5.测试#logger -p local0.info  "test logs"6.在远程主机是可以看到消息了   #tailf /var/log/messagesMar  5 19:53:15 6-web-1 root: test logs

将日志存放于远程主机的Mysql中

环境说明

主机 描述 IP
Centos 6 Mysql数据库 192.168.5.102
Centos 7 rsyslog服务器 192.168.5.103

1.安装Mysql

参考

2.安装用于rsyslog连接mysql的模块

在Centos 7# yum install rsyslog-mysql#rpm -ql rsyslog-mysql/usr/lib64/rsyslog/ommysql.so/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql因为这里使用了不同的系统,yum安装的rsyslog-mysql版本不同,此时,必须将本机安装的脚本传送到mysql所在主机上执行,当然,如果可以远程连接mysql服务器也是可以的#scp /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 192.168.5.102:/app/

3.创建用于rsyslog的数据库

在Centos 6mysql> source /app/mysql-createDB.sql;Query OK, 1 row affected (0.09 sec)Database changedQuery OK, 0 rows affected (0.10 sec)Query OK, 0 rows affected (0.03 sec)mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || Syslog             |

4.创建用于访问数据库的账户

在Centtos 6mysql> set global validate_password_policy=0;Query OK, 0 rows affected (0.00 sec)mysql> grant all on Syslog.* to 'rsyslog'@'192.168.5.103' identified by '12345678';Query OK, 0 rows affected, 1 warning (0.06 sec)

5.测试远程连接mysql

在Centos 7#mysql -ursyslog -h192.168.5.102 -p -D Syslog                > 数据库注意大小写Enter password: MySQL [Syslog]>   成功

6.配置rsyslog

在Centos 7#vim /etc/rsyslog.conf#### MODULES #### 中$ModLoad ommysql#### RULES ####中语法格式:#:ommysql:数据库主机,数据库名,数据库用,数据库密码*.info;mail.none;authpriv.none;cron.none                :ommysql:192.168.5.102,Syslog,rsyslog,12345678   > 注意大小写重启rsyslog服务#systemctl restart rsyslog

7.验证

在Centos 6mysql> select ID,ReceivedAt,FromHost,Message,InfoUnitID from SystemEvents;

image

基于LAMP + Loganalyzer 日志管理

1.LAMP实现

参考

2.官网下载loganalyzer

,可能需要科学上网。

3.复制loganalyzer源码目录至网站指定目录

# tar xvf loganalyzer-4.1.6.tar.gz# cp -a loganalyzer-4.1.6/src/ /app/www/virtualhost/log# cd /app/www/virtualhost/log# touch config.php && chmod 666 config.php

4.安装loganalyzer

http://192.168.5.102/log/

image

image

image

image

image

image

5.修改权限

# chmod 644 config.php

效果演示

image

image

这个属于小型的日志管理WEB界面,数据量不大的时候,还凑合着。后面还有更加专业的日志引擎。

转载于:https://blog.51cto.com/191226139/2083631

你可能感兴趣的文章
使用list
查看>>
Ubuntu 12.04 安装 gcc-4.8 及 gdb 7.6
查看>>
DOM设置表格隔行变色js代码及鼠标悬停在哪行,哪行字体就加粗效果
查看>>
GII 和 DEBUG 模块出现 403 解决
查看>>
shell历史命令记录功能
查看>>
kali linux软件源
查看>>
centos6设置静态IP
查看>>
cocos2d_x在windows环境下的方向键支持
查看>>
Mysql数据库恢复,Ibdata1文件删除数据恢复成功
查看>>
Maven学习总结(11)——Maven Tomcat7自动部署
查看>>
Shell 中常用的sqlplus 代码段
查看>>
Maven学习总结(1)——Maven入门
查看>>
Linux java环境配置
查看>>
mysql ====查询命令介绍(5)
查看>>
Ffmpeg,mencoder视频格式转换
查看>>
【经验收集】完全卸载SQLServer 2008 R2的步骤
查看>>
Spring Boot 项目启动顺序以及常见注解作用
查看>>
java基础(2)
查看>>
zabbix安装界面报连接不到数据
查看>>
一首Python的打油诗
查看>>