一、日志文件说明 日志的功能 用于记录系统、程序运行中发生的各种事件 通过阅读日志,有助于诊断和解决系统故障

日志文件的分类 内核及系统日志 由系统服务syslog统一进行管理,日志格式基本相似 用户日志 记录系统用户登录及退出系统的相关信息 程序日志 由各种应用程序独立管理的日志文件,记录格式不统一

• 内核及公共消息日志 • /var/log/messages • 计划任务日志 • /var/log/cron • 系统引导日志 • /var/log/dmesg • 邮件系统日志 • /var/log/maillog • 用户登录日志 • /var/log/lastlog • /var/log/secure • /var/log/wtmp • /var/run/btmp

二、内核及系统日志 由系统服务 rsyslogd 统一管理 软件包:rsyslog-7.4.7-16.el7.x86_64 主要程序:/sbin/rsyslogd 配置文件:/etc/rsyslog.conf 日志消息的级别 0 EMERG(紧急):会导致主机系统不可用的情况 1 ALERT(警告):必须马上采取措施解决的问题 2 CRIT(严重):比较严重的情况 3 ERR(错误):运行出现错误 4 WARNING(提醒):可能会影响系统功能的事件 5 NOTICE(注意):不会影响系统但值得注意 6 INFO(信息):一般信息 7 DEBUG(调试):程序或系统调试信息等 日志记录的样式 安全日志 保存了用户登录、退出系统等相关信息 /var/log/lastlog:最近的用户登录事件 /var/log/wtmp:用户登录、注销及系统开、关机事件 /var/run/utmp:当前登录的每个用户的详细信息 /var/log/secure:与用户验证相关的安全性事件 分析工具部分命令 users 、who、w、last、lastb 由相应的应用程序独立进行管理 Web服务:/var/log/httpd/ access_log、error_log 代理服务:/var/log/squid/ access.log、cache.log、 FTP服务:/var/log/xferlog 查看工具部分命令 文本查看、grep过滤检索、Webmin管理套件中查看 awk、sed等文本过滤、格式化编辑工具 Webalizer、Awstats等专用日志分析工具

日志文件管理方案: 及时作好备份和归档 延长日志保存期限 控制日志访问权限 日志中可能会包含各类敏感信息,如账户、口令等 集中管理日志:将服务器的日志文件发到统一的日志文件服务器,便于日志信息的统一收集、整理和分析、杜绝日志信息的意外丢失、恶意篡改或删除

三、日志管理配置 记录日志服务的主配置文件:/etc/rsyslog.conf

第一块:Modules模块加载

第二块:Global Directory全局文件夹配置

第三块:rules规则 服务.级别 记录的文件及路径 //级别包括8个级别

四、建立日志服务器 如何建立日志同步服务器 1.说明 (日志发送机+日志服务器)(日志发送机就是传统的服务器,需要外发自己的日志)

2.本地存日志---同步---远程存日志

2.确定日志发送机3件事情:1)发什么日志? 2)怎么发?3)发给谁? 登录用户操作 日志协议514 目标服务器信息

确定日志服务器3件事情:1)确保日志服务开启 2)收谁的? 3)怎么收? 配置接收日志选项 来源IP 建立指定路径

-日志发送机:vi /etc/rsyslog.conf 81行

          服务.级别  @@TCP协议 IP地址:514
       如:authpriv.*  @@172.18.11.83:514
          service  rsyslog  restart

** 日志接收服务器操作**:

-日志服务器(接收) 配置文件修改 vi /etc/rsyslog.conf

15-16行UDP去掉# 19-20行TCP去掉# //注意,注释是有讲究的,空格 查看开启以下象如下内容示例
##Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514

##Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514

确定全局日志配置文件的文件夹状态: 第36行,确认状态不要注释 $IncludeConfig /etc/rsyslog.d/*.conf

建立来源IP接收日志配置(需手动建立),如:
/etc/rsyslog.d/172.18.11.67.conf

内容如下: 格式: :属性, 比较操作符, "值" 日志文件路径

属性包括:fromhost,fromhost-ip,msg,hostname 操作符包括:contains,isequal,startswith

例如:

:fromhost-ip, isequal, “172.18.11.67” /var/log/receive/sec67denglu.log

保存退出

注:子文件夹及文件不需要手动建立,重启服务后会自动生成。

重启服务并观察端口 systemctl restart rsyslog
并检查是否生成receive文件夹及log文件(发送机操作触发一下)

日志发送机操作: vi /etc/rsyslog.conf,找到81行,添加 authpriv.* @@172.18.11.76:514

重启服务systemctl restart rsyslog

远程登录查看日志变化是否同步

作业: 1、两台LINUX建立日志实时同步。 2、是

建立LAMP架构WEB服务器 [root@A ~]# yum -y install httpd* [root@A ~]# yum -y install mariadb* [root@A ~]# yum -y install php php-gd php-xml php-mysqlnd rsyslog-mysql [root@A ~]# yum -y install libcurl-devel net-snmp-devel

[root@A ~]# systemctl enable mariadb.service [root@A ~]# systemctl start mariadb.service [root@A ~]# mysqladmin -u root password 9865321

[root@A ~]# systemctl enable httpd.service [root@A ~]# systemctl start httpd.service [root@A ~]# cd /var/www/html/ [root@A html]# vim test.php <?php phpinfo(); ?> [root@A ~]#firefox http://127.0.0.1/test.php

建立WEB网站日志分析系统 1、安装 GeoIP sudo yum install geoip geoip-devel 2、安装 centos: yum install goaccess 或源码安装 $ wget http://tar.goaccess.io/goaccess-1.1.1.tar.gz $ tar -xzvf goaccess-1.1.1.tar.gz $ cd goaccess-1.1.1/ $ ./configure --enable-geoip --enable-utf8 $ make # make install

3、配置时间和日志格式 sudo vim /usr/local/etc/goaccess.conf 将以下项目的注释去掉

  1. Apache/nginx time format time-format %H:%M:%S 
  2. Apache/nginx date format date-format %d/%b/%Y 
  3. NCSA Comobined log format log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u” 4.运行如下命令实时分析 goaccess -f /home/wwwlogs/access.log -o <output_path>/state.html --real-time-html --date-spec=hr --hour-spec=min --ws-url=www.wang.com

日志存于数据库中进行日志分析 [root@LServ ~]# cd /usr/share/doc/rsyslog-7.4.7/ [root@LServ rsyslog-7.4.7]# mysql -u root -p < mysql-createDB.sql Enter password: [root@LServ rsyslog-7.4.7]# mysql -u root -p Enter password: MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | Syslog | ………. MariaDB [(none)]> grant all on Syslog.* to rsyslog@localhost identified by '13520900'; Query OK, 0 rows affected (0.02 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)

[root@A ~]# vim /etc/rsyslog.conf

MODULES

$ModLoad ommysql *.* :ommysql:localhost,Syslog,rsyslog,13520900 $ModLoad immark $ModLoad imudp $UDPServerRun 514 [root@A ~]# systemctl restart rsyslog.service

[root@B ~]# vim /etc/rsyslog.conf . @172.16.8.8:514

[root@B ~]# systemctl restart rsyslog.service

[root@B ~]# vim /etc/bashrc export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[pwd]"$msg"; }'

[root@B ~]# source /etc/bashrc

[root@A ~]# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.6.tar.gz [root@A ~]# tar zxvf loganalyzer-3.6.6.tar.gz [root@A ~]# cd loganalyzer-3.6.6/ [root@A loganalyzer-3.6.6]# mkdir -p /var/www/html/loganalyzer [root@A loganalyzer-3.6.6]# rsync -a src/* /var/www/html/loganalyzer/

[root@A ~]# firefox http://127.0.0.1/loganalyzer/install.php

[root@A ~]# cd /var/www/html/loganalyzer/ [root@A loganalyzer]# touch config.php [root@A loganalyzer]# chmod 666 config.php

创建第一个系统日志source。 (注意图上的选项,特别注意: Source Type = MYSQL Native Database Tablename =SystemEvents )