【日志服务】

rsyslog系统日志服务,单机

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

ELK:由Elasticsearch, Logstash, Kibana三个软件组成,分布式

  • 非关系型分布式数据库
  • 基于apache软件基金会jakarta项目组的项目lucene
  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
  • Kibana 可以提供的日志分析友好的 Web 界面
日志记录的内容包括:
历史事件:时间,地点,人物,事件
日志级别:事件的关键性程度

1、rsyslog管理

归类,设施

#内置的分类
auth, authpriv身份验证, cron计划任务, daemon,ftp,kern, lpr, mail邮件, news, security(auth), user, uucp, syslog
#自定义分类
local0-local7

记录优先级,严重程度

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

日志记录逻辑

分类+严重程度

在这里插入图片描述

可以把rsyslog当成中间人,应用程序发生一个事件通过rsyslog记录在文件或数据库中,也可以通过邮件发送给别人。

1.1、配置文件

MODULES:相关模块配置

GLOBAL DIRECTIVES:全局配置

RULES:日志记录相关的规则配置

记录路径:

vim /etc/rsyslog.conf
# Include all config files in /etc/rsyslog.d/
include(file="/etc/rsyslog.d/*.conf" mode="optional")       #也可自定义配置文件在该路径下以.conf结尾

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog

# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
1.1.1、ssh服务日志记录存放在指定文件下

单机

#更改ssh服务配置文件
vim /etc/ssh/sshd_config
# Logging
#SyslogFacility AUTH
SyslogFacility LOCAL6            #指定日志文件类别

#更改rsyslog配置文件
vim /etc/rsyslog.conf
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local6.*                                                /var/log/ssh.log       #类别.严重程度     存放路径

#重启服务
systemctl restart sshd rsyslog
1.1.2、远程将存放日志

远程将各个主机的日志文件集中存放

各个主机的主机名需不相同,每台主机都有rsyslog服务

1.1.2.1、环境准备:
#三台主机,主机名各不相同
centos8:10.0.0.7      #发送日志文件
ubuntu2004:10.0.0.8      #发送日志文件
rocky8:10.0.0.9      #接收日志文件
1.1.2.2、具体实现
##在10.0.0.9上,调用相关模块即可
[root@10.0.0.9 ~]#vim /etc/rsyslog.conf
# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once            #更改注释即可
input(type="imudp" port="514")

# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local6.*                                                /var/log/all-ssh.log     #添加规则,指定接收的日志文件存放路径

#重启服务
[root@10.0.0.9 ~]#systemctl restart rsyslog

##在10.0.0.7上
[root@10.0.0.7 ~]#vim /etc/rsyslog.conf
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local6.*                                                /var/log/ssh.log      #本地也可存一份
local6.*                                                @10.0.0.9:514         #指定类别local6类别的日志文件发送到
#  @10.0.0.9:514  一个@是UTP协议,两个@@是TCP协议           @@10.0.0.9:514  

#重启服务
[root@10.0.0.7 ~]#systemctl restart rsyslog

##在10.0.0.8上
vim /etc/rsyslog.d/50-default.conf
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
local6.*                         @10.0.0.9:514

#重启服务
[root@10.0.0.7 ~]#systemctl restart rsyslog


#触发生成日志测试命令
logger
logger "test"
1.2、常见日志文件
  • /var/log/secure:系统安全日志,文本格式,应周期性分析,身份认证授权有关

  • /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看

  • /var/log/wtmp:当前系统上,用户正常成功登录系统的相关日志信息,二进制格式,last命令可以查看

  • /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看

  • /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况,硬件信息情况

  • /var/log/boot.log 系统服务启动的相关信息,文本格式

  • /var/log/messages :系统中大部分的信息

  • /var/log/anaconda : anaconda的日志,centos独有,安装操作系统时所发生的事件

1.3、journalctl日志管理工具

常见用法

#查看所有日志(默认情况下 ,只保存本次启动的日志)
 journalctl
#查看内核日志(不显示应用日志)
 journalctl -k
#查看系统本次启动的日志
 journalctl -b
 journalctl -b -0
#查看上一次启动的日志(需更改设置)
 journalctl -b -1
#查看指定时间的日志
 journalctl --since="2017-10-30 18:10:30"
 journalctl --since "20 min ago"
 journalctl --since yesterday
 journalctl --since "2017-01-10" --until "2017-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
#查看某个服务的日志
 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
#日志管理journalctl
#以 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

2、利用mysql存储日志信息

两台主机,一台rsyslog日志接收服务器10.0.0.7,一台mysql服务器10.0.0.8

##在rsyslog日志接收服务器上
[root@10.0.0.7 ~]#yum -y install rsyslog-mysql
[root@10.0.0.7 ~]#rpm -ql rsyslog-mysql
/usr/lib/.build-id
/usr/lib/.build-id/e6
/usr/lib/.build-id/e6/aa0e40c19a2e0524d72780eee3b1698684cbe7
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog/mysql-createDB.sql               #拷贝该文件到10.0.0.8上
[root@10.0.0.7 ~]#scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.8:

#更改配置文件
[root@10.0.0.7 ~]#vim /etc/rsyslog.conf
module(load="ommysql")                   #调用模块,模块名在上面有查找到ommysql.so
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
*.info;mail.none;authpriv.none;cron.none                :ommysql:10.0.0.8,Syslog,rsyslog,123456
                                                        #模块调用:传输到哪台服务器,数据库,账号,密码

#重启服务
[root@10.0.0.7 ~]#systemctl restart rsyslog

##在mysql服务器上
[root@10.0.0.8 ~]#yum -y install mysql-server
[root@10.0.0.8 ~]#systemctl enable --now mysqld

#创建账号
[root@10.0.0.8 ~]#mysql
mysql> create user rsyslog@'10.0.0.%' identified by '123456';
mysql> grant all on Syslog.* to rsyslog@'10.0.0.%';            #注意所需授权的数据库在10.0.0.7拷贝过来的文件中
mysql> source /root/mysql-createDB.sql

3、日志转储工具logrotate

3.1、参数
配置参数说明
compress通过gzip压缩转储以后的日志
nocompress不压缩
copytruncate用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate备份日志文件但是不截断
create 0644 root root转储文件,使用指定的权限,所有者,所属组创建新的日志文件
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指定转储周期为每月
rotate 5指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份
tabooext [+] list让logrotate不转储指定扩展名的文件,缺省的扩展名是: .rpm- .rpmsave, v.和~
size size当日志文件到达指定的大小时才转储,bytes(缺省)及KB或MB
sharedscripts默认,对每个转储日志运行prerotate和postrotate脚本,日志文件 的绝对路径作为第一个参数传递给脚本。这意味着单个脚本可以针对 与多个文件匹配的日志文件条目多次运行(例如/var /log/news/ *.example)。如果指定此项sharedscripts,则无论有多少个日志 与通配符模式匹配,脚本都只会运行一次
nosharedscripts针对每一个转储的日志文件,都执行一次prerotate和postrotate脚本,此为默认值
missingok如果日志不存在,不提示错误,继续处理下一个
nomissingok如果日志不存在,提示错误,此为默认值
3.2、尝试使用logrotate服务切割nginx日志,每天切割一次,要求大于不超过3M, 保存90天的日志, 旧日志以时间为后缀,要求压缩。
[root@8 ~]#vim /etc/logrotate.d/nginx 
/var/log/nginx/*log {
    create 0664 nginx root
    daily
    rotate 90
    missingok
    notifempty
    compress
    delaycompress
    size 3M
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
        echo `date +%F_%T` >> nginx.log
    endscript
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值