日志管理
一、日志介绍
syslogd: system application 记录应用日志
C/S 架构:通过TCP 或UDP 协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理
1、rsyslog 特性:CentOS6 和7,不能用于较大的环境
2、ELK :elasticsearch, logstash, kibana ,管理日志整套的解决方案
基于apache 软件基金会jakarta 项目组的项目lucene
Logstash 对日志进行收集、分析,并将其存储供以后使用
debug, info, notice, warn(warning), err(error),crit(critical), alert, emerg(panic)
(3)logger -p rules "显示的东西" 测试命令
例:logger -p local1.info 'this is a test log'
二、rsyslog 服务的介绍
CentOS 6 :service rsyslog {start|stop|restart|status}
CentOS 7 :/usr/lib/systemd/system/rsyslog.service
配置文件:/etc/rsyslog.conf主配置文件,/etc/rsyslog.d/*.conf
2、修改配置文件,主要是设置RULES 规则
RULES 配置格式: facility.priority ; facility.priority… target
例:*.info;mail.none;authpriv.none;cron.none /var/log/messages
facility1,facility2,facility3,... :指定的facility 列表
PRIORITY(只有名字) :指定级别(含)以上的所有级别
④ 日志服务器:@host 或 @@host ,把日志送往至指定的远程服务器记录
例1:自定义ssh服务的日志: local1.* /var/log/sshd.log
需设置sshd的配置文件/etc/ssh/sshd_config
例2:自定义:local2.* along,root,/var/log/sshd.log
测试命令:logger -p local2.info 'this is a test log'
local3.*@192.168.30.111 (@走的是udp协议)
在192.168.30.111 机器上设置,提供UDP远程连接的功能默认被注释了,取消两行注释
local1.* /var/log/remote.log 日志存在111 的/var/log/remote.log下
logger -p local3.info "this is a remote log"
local3.*@@192.168.30.111 (@@走的是tcp协议)
在192.168.30.111 机器上设置,在tcp的注释两行取消
local1.* /var/log/remote.log 日志存在111 的/var/log/remote.log下
logger -p local3.info "this is a remote log"
/var/log/secure:su切换,系统安装日志,文本格式,应周期性分析
/var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,直接查看的乱码
如果想取消错误登录,不要直接删除btmp文件,>btmp清空就好
/var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息, 二进制格式
/var/log/lastlog: 每一个用户最近一次的登录信息, 二进制格式,
/var/log/dmesg :系统引导过程中的日志信息,文本格式
/var/log/anaconda : anaconda的安装日志
三、日志管理journalctl ,centos 7特有命令
journalctl --since="2017-10-30 18:10:30"
journalctl --since "20 min ago"
journalctl --since "2017-01-10" --until "2017-01-11 03:00"
journalctl --since 09:00 --until "1 hour ago"
journalctl /usr/lib/systemd/systemd
journalctl _UID=33 --since today
journalctl -u nginx.service --since today
例:journalctl -u sshd --since today
journalctl -u nginx.service -f
journalctl -u nginx.service -u php-fpm.service --since today
(3)查看指定优先级(及其以上级别)的日志,共有8级,默认是分页的
日志默认分页输出,--no-pager 改为正常的标准输出,不分页
journalctl -b -u nginx.service -o json
journalctl -b -u nginx.serviceqq -o json-pretty
journalctl --vacuum-time=1years
四、Logrotate 日志存储
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
delaycompress 和 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 盖 覆盖 delaycompress 选项,转储并压缩
errors address 专储时的错误信息发送到指定的Email 地址
mail address 把转储的日志文件发送到指定的E-mail 地址
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
Nomissingok 如果日志不存在,继续下一次日志,不提示错误
实验一:rsyslog 将日志记录于MySQL中
原理:让centos 6上的日志记录到centos 7的数据库中
yum -y install mariadb-server 下包
mysql_secure_installation 安全脚本
yum -y install rsyslog-mysql.x86_64
scp /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql @192.168.30.222:
① mysql -uroot -p12345 < createDB.sql 以root的身份执行这个脚本,生成指定的数据库的东西
mysql -uroot -p12345 可以登录查看一下,缺少生成了
② 创建一个在centos6 上能远程连接7 的用户,并授给他对Syslog数据库的所有权限,并设置密码为along
grant all on Syslog.* to loguser@'192.168.30.111' identified by 'along';
4、在centos 6 允许rsyslog-mysql 模块使用
格式: :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
MariaDB [Syslog]> select * from SystemEvents \G;
不过看着不舒服,为了看的舒服,搭建lamp,用php实现图形化界面,利用查看
实验二:搭建lamp实现日志远程存储
yum -y install httpd php-fpm php-mysql
systemctl start php-fpm 开启php-fpm服务
DirectoryIndex index.php index.html
vim /etc/httpd/conf.d/fcgi.conf
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
systemctl restart httpd 重启http服务
(2)在B 上充当mysql 的客户端,和日志服务器
yum -y install rsyslog-mysql.x86_64
scp /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql @192.168.30.222:
(3)在centos 7创建数据库并授权用户
yum -y install mariadb-server 下包
mysql_secure_installation 安全脚本
① mysql -uroot -palong < mysql-createDB.sql 以root的身份执行这个脚本,生成指定的数据库的东西
mysql -uroot -palong 可以登录查看一下,确实生成了
② 创建一个在B 上能远程连接A 的用户,并授给他对Syslog数据库的查看权限,并设置密码为along
grant select on Syslog.* to loguser@'192.168.30.107' identified by 'along';
(4)在B 允许rsyslog-mysql 模块使用
格式: :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
tar xvf loganalyzer-4.1.5.tar.gz
yum -y install php-gd 装php的图形包