系统日志管理

1、系统日志管理

  1. 1、系统日志介绍

 将系统和应用发生的事件记录至日志中,以助于排错和分析使用

日志记录的内容包括:
历史事件:时间,地点,人物,事件
日志级别:事件的关键性程度,Loglevel

sysklogd 系统日志服务

CentOS 5 之前版本采用的日志管理系统服务
  syslogd: system application 记录应用日志
  klogd: linux kernel 记录内核日志

事件记录格式:

日期时间 主机 进程[pid]: 事件内容  (参照messages里面的内容)
C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

rsyslog 系统日志服务
CentOS 6 以后版本的系统管理服务
rsyslog特性
 多线程
  UDP, TCP, SSL, TLS, RELP
  MySQL, PGSQL, Oracle实现日志存储
  强大的过滤器,可实现过滤记录日志信息中任意部分
  自定义输出格式

ELK
ELK:由Elasticsearch, Logstash, Kibana三个软件组成
  非关系型分布式数据库;
  基于apache软件基金会jakarta项目组的项目lucene

Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系
统日志等功能;
  Logstash对日志进行收集、分析,过滤,并将其存储供以后使用;
  Kibana 可以提供的日志分析友好的 Web 界面。

    1. rsyslog 管理

系统日志术语
facility:设施,从功能或程序上对日志进行归类

auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth),
user, uucp, syslog
#自定议的分类
local0-local7 可以通过配置文件/etc/rsyslog.conf来读取

Priority 优先级别,从低到高排序

debug, info, notice, warn(warning), err(error), crit(critical), alert,
emerg(panic)

参看帮助: man 3 syslog,man logger

rsyslog 相关文件
程序包:rsyslog
主程序:/usr/sbin/rsyslogd
CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
CentOS 7,8:/usr/lib/systemd/system/rsyslog.service
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
库文件: /lib64/rsyslog/*.so

rsyslog配置文件

/etc/rsyslog.conf 配置文件格式:由三部分组成
MODULES:相关模块配置
GLOBAL DIRECTIVES:全局配置
RULES:日志记录相关的规则配置

RULES配置格式:

 facility.priority; facility.priority... target

facility格式:

priority格式:

*: 所有级别

none:没有级别,即不记录

PRIORITY:指定级别(含)以上的所有级别

=PRIORITY:仅记录指定级别的日志信息

target格式:

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

通常的日志文件的格式:

日志文件有很多,如: /var/log/messages,cron,secure等,基本格式都是类似的。格式如下

事件产生的日期时间 主机 进程(pid):事件内容

例子:将ssh服务的日志记录至自定义的local的日志设备

#修改sshd服务的配置
vim /etc/ssh/sshd_config
SyslogFacility local2
service sshd reload
#修改rsyslog的配置
vim /etc/rsyslog.conf
local2.*  /var/log/sshd.log
systemctl restart rsyslog

  

  #测试
ssh登录后,查看/var/log/sshd.log有记录

#logger测试
logger -p local2.info "hello sshd"
tail /var/log/sshd.log有记录

记录登陆信息lastb

  1. 实战案例

  实战案例:利用rsyslog日志服务,将收集的日志记录于MySQL中

环境信息:

    两台主机
一台:rsyslog日志服务器,IP:192.168.48.107
一台:mariadb数据库服务器,IP:192.168.48.121

 操作步骤:

  在rsyslog服务器上安装连接mysql模块相关的程序包

 yum install rsyslog-mysql

查看相关程序包

   rpm -ql rsyslog-mysql
/usr/lib/.build-id
/usr/lib/.build-id/d7
/usr/lib/.build-id/d7/77fc839aa07e92f0a8858cf3f122996436c7df
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog/mysql-createDB.sql

  查看脚本文件相关内容

cat  /usr/share/doc/rsyslog/mysql-createDB.sql

 上传至mysql服务器

 scp  /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 192.168.48.121:/data/

mariadb数据库服务器端

安装mysql服务

yum install mariadb-server

在mariadb数据库服务器上创建相关数据库和表,并授权rsyslog能连接至当前服务器

mysql < /data/mysql-createDB.sql

mysql -e "grant all on Syslog.* to loguser@'192.168.48.%' identified by '123456'";

   vim /etc/rsyslog.conf


####MODULES####
#在 MODULES 语言下面,如果是 CentOS 8 加下面行
module(load="ommysql")
#在 MODULES 语言下面,如果是 CentOS 7,6 加下面行
$ModLoad ommysql
#在RULES语句块加下面行的格式
#facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
*.info :ommysql:10.0.0.18,Syslog,loguser,123456

修改完成以后重启生效

systemctl  restart  rsyslog.service

测试

在日志服务器上生成日志

logger "this is a test log"

#在数据库上查询到上面的测试日志
mysql>SELECT COUNT(*) FROM SystemEvents

实战案例2:通过 loganalyzer 展示数据库中的日志

  loganalyzer是用 php 语言实现的日志管理系统,可将MySQL数据库的日志用丰富的WEB方式进行展示数据库中的日志
   官网:Home - Adiscon LogAnalyzer

环境信息

  三台主机
    一台日志服务器,利用上一个案例实现,IP:192.168.48.107,
    一台数据库服务器,利用上一个案例实现,IP:192.168.48.121
   一台当httpd+php 服务器,并安装loganalyzer展示web图形,IP:192.168.48.118

操作步骤:

在192.168.48.118主机上安装php和相关软件包

   yum -y install httpd php-fpm php-mysqlnd php-gd

   systemctl restart httpd php-fpm

  

  在192.168.48.118上安装LogAnalyzer

    从http://loganalyzer.adiscon.com/downloads/ 下载loganalyzer-4.1.10.tar.g

  tar -xvf  loganalyzer-4.1.12.tar.gz  -C /var/www/html/log

  mv loganalyzer-4.1.12/src/  /var/www/html/logs

  touch /var/www/html/logs/config.php

  chmod 666 /var/www/html/logs/config.php

  

  基于web页面初始化

       访问http://192.168.48.118/logs 实现初始化

       选择:MySQL Native, Syslog Fields, Monitorware

安全加强(权限回收)

   chmod 644 /var/www/html/logs/config.php

logrotate日志转储

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

  logrotate 配置

  软件包:logrotate
相关文件
  计划任务:/etc/cron.daily/logrotate
  程序文件:/usr/sbin/logrotate

  配置文件: /etc/logrotate.conf
日志文件:/var/lib/logrotate/logrotate.status

          

设置http日志转储

对指定日志手动执行日志转储

#生成测试日志

dd if=/dev/zero of=/var/log/test1.log bs=2M count=1

dd if=/dev/zero of=/var/log/test2.log bs=2M count=1

#针对不同的日志创建转储配置文件

cat /etc/logrotate.d/test1

/var/log/test1.log {
daily
rotate 5
compress
delaycompress
missingok
size 1M
notifempty
create 644 root root
postrotate
echo `date +%F_%T` >> /data/test1.log
endscript
}

cat /etc/logrotate.d/test2

/var/log/test2.log {
daily
rotate 5
compress
delaycompress
missingok
size 1M
notifempty
create 644 root root
postrotate
echo `date +%F_%T` >> /data/test2.log
endscript

}

#针对一个测试日志,手动执行日志转储

logrotate /etc/logrotate.d/test1

ll /var/log/test*

cat /data/test1.log

logrotate /etc/logrotate.conf

ll /var/log/test*

ls /data

cat /data/test2.log

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值