Linux云计算架构-设置计划任务与管理日志

Linux云计算架构-设置计划任务与管理日志

1. 计划任务

计划任务,也称为定时任务,是在指定的时间完成指定的任务。

  • 一次性计划任务,具有突发性,临时决定的: at
  • 长期性计划任务(周期性、定时性),重复执行: crontab

2. 一次性计划任务(at)

可以理解为布置作业,布置只需完成一次的作业。

# 查看atd服务启动状态
[root@master ~]# systemctl status atd
[root@master ~]# systemctl enable atd
# 查询atd服务是否设置自启动
[root@master ~]# systemctl is-enabled atd
enabled

# 创建一次性定时任务
# ctrl+d退出编辑定时任务
# 执行脚本存放位置/var/spool/at/
# 当定时任务执行完,执行脚本自动删除
[root@master ~]# at 20:45
at> echo aaa > a.txt
at> <EOT>
job 1 at Tue Jul 14 20:45:00 2020

# 查看计划任务
[root@master ~]# at -l
1	Wed Jul 15 20:45:00 2020 a root
# 查看计划任务
[root@master ~]# atq
1	Wed Jul 15 20:45:00 2020 a root

# 查看执行脚本
[root@master ~]# ll /var/spool/at/
总用量 8
-rwx------. 1 root root 4547 7月  14 20:42 a0000301958f9d
drwx------. 2 root root    6 7月  14 20:40 spool

# 直接查看执行脚本内容,1为任务编号
[root@master ~]# at -c 1

# 执行后删除
[root@master ~]# ll a.txt 
-rw-r--r--. 1 root root 4 7月  14 20:45 a.txt
[root@master ~]# ll /var/spool/at/
总用量 0
drwx------. 2 root root 6 7月  14 20:45 spool

# 删除定时任务
[root@master ~]# atq
4	Wed Jul 15 20:45:00 2020 a root
6	Tue Jul 14 22:00:00 2020 a root
[root@master ~]# atrm 4
[root@master ~]# atq
6	Tue Jul 14 22:00:00 2020 a root


# 多格式设置定时任务
作业的时间格式:
at 13:00 2020-02-26    【绝对时间】
at now +10min/hour/day 【相对时间】
at 12:00 tomorrow      【明天12点】
at 6:00 pm + 5 day     【5天后的下午6点】
at 23:00 < task.txt    【在23点执行】

img

3. 周期性计划任务(crontab)

# linux内置了cron进程,服务名为crond,而crontab是cron table的简写,是cron进程的配置文件,也叫作业列表。
# /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
# /etc/crontab 这个文件负责调度各种管理和维护任务。
# /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
# 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
[root@master ~]# ll /etc/cron
cron.d/       cron.deny     cron.monthly/ cron.weekly/  
cron.daily/   cron.hourly/  crontab   
# 由于crond服务是系统内置的,我们无需配置,可通过systemctl status crond查看该服务是否启动。
[root@master ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2020-07-14 20:32:59 CST; 1h 7min ago
 Main PID: 6884 (crond)
    Tasks: 1
   CGroup: /system.slice/crond.service
           └─6884 /usr/sbin/crond -n

7月 14 20:32:59 master systemd[1]: Started Command Scheduler.
7月 14 20:32:59 master crond[6884]: (CRON) INFO (RANDOM_DELAY will be scal....)
7月 14 20:33:00 master crond[6884]: (CRON) INFO (running with inotify support)
Hint: Some lines were ellipsized, use -l to show in full.
# 作业格式:分 时 日 月 周 命令【每一个作业都必须有这6个部分(时间5+动作1)】
# 作业要求:在crond服务的计划任务参数中,所有命令都必须以绝对路径的方式来写。可用whereis 命令查询命令的绝对路径。
# 取值范围:
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7【0和7都是星期天】
# 书写形式:
* 所有时间
/n 每隔n时间
- 从几到几
, 单独取一部分时间
# 具体实例:
* * * * * mywork       【每分钟】
1,3 * * * * mywork     【每小时的第1和第3分钟】
1,3 8-12 * * * mywork  【每天的上午8-12点的第1和第3分钟】
1,3 8-12 */2 * * mywork【每隔两天的上午8-12点的第1和第3分钟】
1,3 8-12 * * 1 mywork  【每周一的上午8-12点的第1和第3分钟】
* 23-7/1 * * * mywork  【每天晚上23点到第二天上午7点,每隔1小时】
# 为当前用户设置定时任务,vim编辑器,一行一个定时任务
[root@master ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
* * * * * /usr/bin/echo abong >> readme.txt
# 为指定用户设置定时任务
[root@master ~]# crontab -e -u abong
# 查看当前用户的定时任务
[root@master ~]# crontab -l
* * * * * /usr/bin/echo abong >> readme.txt
# 删除定时任务,可以使用crontab -e进行修改
# 清空当前用户所有的定时任务
[root@master ~]# crontab -r
# 定时任务实战
# 每天晚上21:00重启 apache
0 21 * * * /etc/init.d/httpd restart
# 每月 1、11、22 日的5:55重启apache。
55 5 1,11,21 * * /etc/init.d/httpd restart
# 每月1到10日的5:55重启 apache。
55 5 1-10 * * /etc/init.d/httpd restart
# 每隔两天的上午8点到11点的第3和第15分钟执行apache
3,15 8-11 */2 * * /etc/init.d/httpd restart
# 晚上11点到早上7点之间,每隔一小时重启apache
0 23-7/1 * * * /etc/init.d/apache restart
# 周一到周五每天晚上21:15寄一封信e给root@mary:
15 21 * * 1-5 mail -s "title" root@mary < /etc/fstab
# 每天22:00备份/etc/目录到/tmp/backup下面
# 将备份命令写入一个脚本中
# 每天备份文件名要求格式: 2017-08-19_etc.tar.gz
# 在执行计划任务时,不要输出任务信息
# 存放备份内容的目录要求只保留三天的数据
# 工作中备份的文件不要放到/tmp,因为过一段时间,系统会清空备/tmp 目录
[root@master ~]# vim backup.sh
#!/bin/bash
find /tmp/backup -name '*.tar.gz' -mtime +3 -exec rm -f {} \;
tar czf /tmp/backup/`date +%F`_etc.tar.gz /etc
# 脚本要给予可执行权限+x
[root@master ~]# chmod +x backup.sh 
# 每天22点备份一次/etc目录
[root@master ~]# crontab -e
crontab: installing new crontab
0 22 * * * /root/backup.sh

4. 日志系统

在 centos7 中,系统日志消息由两个服务负责处理:systemd-journaldrsyslog

/var/log目录由 rsyslog 维护,里面存放一些特定系统和服务的日志文件。

日志文件作用
/var/log/messages大部分系统日志消息(不包括:安全和身份验证的消息日志、邮件服务器相关的消息日志、)
/var/log/secure安全和身份验证相关的消息和登录失败的日志文件。(如ssh远程登录失败)
/var/log/maillog与邮件服务器相关的消息日志文件
/var/log/cron与定期执行任务相关的日志文件
/var/log/boot.log与系统启动相关的消息记录
/var/log/dmesg与系统启动相关的消息记录
/var/log/wtmp记录每个用户的登录次数和持续时间等信息,可用last命令查看登录成功的记录,可用 -f 动态查看
/var/log/btmp查看登录系统失败的或者暴力破解系统的用户,一般小于1M,用lastb命令查看日志,可以使用防火墙拒绝该IP地址的ssh请求
# 清空日志
法1:仅清空文件内容,不改变inode号(建议使用)
> /var/log/btmp
echo "" > /var/log/btmp
法2:删除再创建文件,inode号改变,要重启相应的服务。
rm -f /var/log/btmp && touch /var/log/btmp
日志类名分类作用级别(低→高)优先级严重性
daemon后台进程相关的local7debug信息对开发人员调试应用程序有用,在操作过程中无用
kem内核产生的信息local6info正常的操作信息,可以收集报告,测量吞吐量等
lpr打印系统产生的local5notice注意,正常但重要的事件
authpriv安全认证local4warning警告,提示如果不采取行动,将会发生错误。比如文件系统使用 90%
cron定时相关local3err错误,阻止某个模块或程序的功能不能正常使用
mail邮件相关local2crit关键的错误,已经影响了整个系统或软件不能正常工作的信息
syslog日志服务自身的local1alert警报,需要立刻修改的信息
news新闻系统local0emerg紧急,内核崩溃等严重信息

日志可分为8类,也可分为8个级别。

5. rsyslog日志服务

# rsyslog服务配置文件
# 通过该配置文件,可以看到各类日志及其日志文件存放位置
[root@master ~]# cat /etc/rsyslog.conf 
# rsyslog configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark  # provides --MARK-- message capability

# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514       是否允许514端口接收使用UDP协议转发过来的日志

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514     是否允许514端口接收使用TCP协议转发过来的日志


#### GLOBAL DIRECTIVES ####

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state


#### RULES ####

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
# 类型   日志存放位置
#kern.*                                                 /dev/console    

# 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


# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
# 日志输入的规则
.级别名   高于这个级别的日志都记录
.=级别名  仅记录该级别的日志
.!级别名  记录除了该级别的日志
类别名.none    不记录某个类别

6. 自定义ssh服务的日志类型和存储位置

# 在rsyslog服务的配置文件中添加ssh的日志级别和日志存放位置
[root@master ~]# vim /etc/rsyslog.conf 
 74 local0.*                /var/log/sshd.log
# 修改sshd的配置文件,设置日志级别与rsyslog中的日志级别相同
[root@master ~]# vim /etc/ssh/sshd_config
 32 SyslogFacility local0
# 重启rsyslog服务
[root@master ~]# systemctl restart rsyslog
# 重启sshd服务
[root@master ~]# systemctl restart sshd
# 查看sshd服务的日志存储位置是否有日志产生,可以看到有日志产生。
[root@master ~]# cat /var/log/sshd.log 
Jul 15 23:36:34 master sshd[20414]: Server listening on 0.0.0.0 port 22.
Jul 15 23:36:34 master sshd[20414]: Server listening on :: port 22.
# 日志防止删除
# 可以使用隐藏属性进行设置,+a,只可以追加内容,不可删除文件。
[root@master ~]# chattr +a /var/log/sshd.log
[root@master ~]# lsattr /var/log/sshd.log 
-----a---------- /var/log/sshd.log
[root@master ~]# rm -f /var/log/sshd.log 
rm: 无法删除"/var/log/sshd.log": 不允许的操作
[root@master ~]# chattr -a /var/log/sshd.log
[root@master ~]# lsattr /var/log/sshd.log 
---------------- /var/log/sshd.log
[root@master ~]# rm -f /var/log/sshd.log 

7. 日志切割、日志轮替(logrotate)

# linux下的日志分为动态增长和静态增长的
# 都可以使用split工具进行切割
# logrotate支持按时间和大小来自动切割,以防止日志文件太大。
# logrotate(轮替、轮循、轮转):当日志达到某个特定的大小或时间,我们将日志按大小、按时间切割,之前的日志(归档日志、历史日志)保留一个备份,再创建一个同名的文件保存新的日志。
# logrotate的配置文件
# /etc/logrotate.d/  存放指定服务日志切割规则的配置文件
[root@master ~]# ll /etc/logrotate.
logrotate.conf  logrotate.d/  
[root@master ~]# cat /etc/logrotate.conf 
# see "man logrotate" for details
# 全局配置日志切割规则
# rotate log files weekly
weekly    # 每周切割一次

# keep 4 weeks worth of backlogs
rotate 4  # 保留至今的4份历史数据,切割走的数据就是历史数据

# create new (empty) log files after rotating old ones
create   # 指定权限和所有者、所属主

# use date as a suffix of the rotated file
dateext   # 以日期为文件后缀名

# uncomment this if you want your log files compressed
#compress     # 切割后的历史数据,使用gzip压缩

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {    # 单独配置日志切割规则
    monthly
    create 0664 root utmp
	minsize 1M   # 文件达到这个值就进行切割
    rotate 1
}

/var/log/btmp {   # 单独配置日志切割规则
    missingok   # 文件丢失不报错
    monthly     # 每月切割一次
    create 0600 root utmp  # 设置文件的权限和所有者、所属组
    rotate 1   
}

# system-specific logs may be also be configured here.

# 其他的日志切割规则
# delaycompress   # 延迟压缩,上周的切割日志不压缩,上上周之前的切割日志压缩
# notifempty     # 日志文件为空,不进行轮循
# -----------------------------------------
# postrotate    # 启动标志
     ####  执行脚本
# endscript   # 结束标志
# /var/lib/logrotate/logrotate.status
# 默认记录logrotate上次轮换日志文件的时间
# 即可以看到  当前的日志文件的内容   仅包含从上次轮换日志文件的时间  至今的内容。
[root@master ~]# ll /var/lib/logrotate/logrotate.status
-rw-r--r--. 1 root root 817 7月  13 19:16 /var/lib/logrotate/logrotate.status
[root@master ~]# cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2020-6-23-18:0:0
"/var/log/cups/page_log" 2020-6-23-18:0:0
"/var/log/cups/error_log" 2020-6-23-18:0:0
"/var/log/boot.log" 2020-7-13-19:16:1
"/var/log/cups/access_log" 2020-7-9-20:6:2
"/var/log/wtmp" 2020-6-23-18:0:0
"/var/log/chrony/*.log" 2020-6-23-18:0:0
"/var/log/spooler" 2020-7-9-20:6:2
"/var/log/btmp" 2020-7-2-19:34:1
"/var/log/iscsiuio.log" 2020-6-23-18:0:0
"/var/log/maillog" 2020-7-9-20:6:2
"/var/log/libvirt/libvirtd.log" 2020-6-23-18:0:0
"/var/log/libvirt/qemu/*.log" 2020-6-23-18:0:0
"/var/log/wpa_supplicant.log" 2020-6-23-18:0:0
"/var/log/secure" 2020-7-9-20:6:2
"/var/log/numad.log" 2020-6-23-18:0:0
"/var/log/ppp/connect-errors" 2020-6-23-18:0:0
"/var/log/messages" 2020-7-9-20:6:2
"/var/log/cron" 2020-7-9-20:6:2
"/var/account/pacct" 2020-6-23-18:0:0
# ssh服务日志切割
# 编辑ssh服务日志轮替规则
# 日志路径 { 轮替规则 }
[root@master ~]# vim /etc/logrotate.d/sshd 
/var/log/sshd.log {
 missingok
 weekly
 create 0600 root root
 minsize 1M
 rotate 3
}
# 重启rsyslog服务,因为/var/log/sshd.log日志是由rsyslog进行管理的,要切割也要rsyslog知道才行。
[root@master ~]# systemctl restart rsyslog
[root@master ~]# logrotate -d /etc/logrotate.d/sshd      # 预加载配置文件,看会不会报错
# 提示说目前日志不需要轮询
reading config file /etc/logrotate.d/sshd
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/sshd.log weekly (3 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/sshd.log
  log does not need rotating (log has been already rotated)
[root@master ~]# logrotate -vf /etc/logrotate.d/sshd      # 强制轮询
# 提示说需要日志轮询
reading config file /etc/logrotate.d/sshd
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/sshd.log forced from command line (3 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/sshd.log
  log needs rotating
rotating log /var/log/sshd.log, log->rotateCount is 3
dateext suffix '-20200715'   
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/sshd.log.3 to /var/log/sshd.log.4 (rotatecount 3, logstart 1, i 3), 
old log /var/log/sshd.log.3 does not exist   # 日志3重命名为日志4
renaming /var/log/sshd.log.2 to /var/log/sshd.log.3 (rotatecount 3, logstart 1, i 2), 
old log /var/log/sshd.log.2 does not exist   # 日志2重命名为日志3
renaming /var/log/sshd.log.1 to /var/log/sshd.log.2 (rotatecount 3, logstart 1, i 1), 
old log /var/log/sshd.log.1 does not exist   # 日志1重命名为日志2taoga
renaming /var/log/sshd.log.0 to /var/log/sshd.log.1 (rotatecount 3, logstart 1, i 0), 
old log /var/log/sshd.log.0 does not exist   # 日志0重命名为日志1
log /var/log/sshd.log.4 doesn't exist -- won't try to dispose of it   # 日志4不存在,故不能处理它
fscreate context set to system_u:object_r:var_log_t:s0
renaming /var/log/sshd.log to /var/log/sshd.log.1    # 重命名当前日志为日志1
creating new /var/log/sshd.log mode = 0600 uid = 0 gid = 0    # 新建一个同名当前日志文件
set default create context

# 查看日志轮替情况
# 可以看到sshd.log的大小为0,即是刚新建的当前日志文件。
[root@master ~]# ll /var/log/sshd.log*
-rw-------. 1 root root   0 7月  15 21:47 /var/log/sshd.log
-rw-------. 1 root root 139 7月  15 21:38 /var/log/sshd.log.1
# nginx服务日志切割
# 编辑nginx服务日志轮替规则
[root@master ~]# vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {
daily
rotate 5
sharedscripts    #所有的日志文件都轮转完毕后统一执行一次切割脚本,适用多个日志文件同时执行。
#  满足以下条件,才会进行轮替日志
postrotate       #执行命令的开始标志
 if [ -f /usr/local/nginx/logs/nginx.pid ]; then    #判断 nginx 是否启动
 /usr/local/nginx/sbin/nginx -s reload
 #让nginx重新加载配置文件,生成新的日志文件,如果nginx没启动不做操作
 fi
endscript #执行命令的结束标志
}
# 重启rsyslog服务,因为/var/log/sshd.log日志是由rsyslog进行管理的,要切割也要rsyslog知道才行。
[root@master ~]# systemctl restart rsyslog
[root@master ~]# logrotate -d /etc/logrotate.d/nginx       # 预加载配置文件,检查下是否符合轮替条件
reading config file /etc/logrotate.d/nginx
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /usr/local/nginx/logs/*.log  after 1 days (5 rotations)
empty log files are rotated, old logs are removed
considering log /usr/local/nginx/logs/access.log
  log does not need rotating (log has been already rotated)considering log /usr/local/nginx/logs/error.log
  log does not need rotating (log has been already rotated)not running postrotate script, since no logs were rotated
[root@master ~]# logrotate -vf /etc/logrotate.d/nginx     # 强制轮询
reading config file /etc/logrotate.d/nginx
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /usr/local/nginx/logs/*.log  forced from command line (5 rotations)
empty log files are rotated, old logs are removed
considering log /usr/local/nginx/logs/access.log    # 访问日志
  log needs rotating
considering log /usr/local/nginx/logs/error.log    # 错误日志
  log needs rotating
rotating log /usr/local/nginx/logs/access.log, log->rotateCount is 5    # 保留5次归档日志
dateext suffix '-20200715'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /usr/local/nginx/logs/access.log.5 to /usr/local/nginx/logs/access.log.6 (rotatecount 5, logstart 1, i 5),      # 日志5重命名为日志6
old log /usr/local/nginx/logs/access.log.5 does not exist
renaming /usr/local/nginx/logs/access.log.4 to /usr/local/nginx/logs/access.log.5 (rotatecount 5, logstart 1, i 4),      # 日志4重命名为日志5
old log /usr/local/nginx/logs/access.log.4 does not exist
renaming /usr/local/nginx/logs/access.log.3 to /usr/local/nginx/logs/access.log.4 (rotatecount 5, logstart 1, i 3),      # 日志3重命名为日志4
old log /usr/local/nginx/logs/access.log.3 does not exist
renaming /usr/local/nginx/logs/access.log.2 to /usr/local/nginx/logs/access.log.3 (rotatecount 5, logstart 1, i 2),      # 日志2重命名为日志3
old log /usr/local/nginx/logs/access.log.2 does not exist
renaming /usr/local/nginx/logs/access.log.1 to /usr/local/nginx/logs/access.log.2 (rotatecount 5, logstart 1, i 1),      # 日志1重命名为日志2
old log /usr/local/nginx/logs/access.log.1 does not exist
renaming /usr/local/nginx/logs/access.log.0 to /usr/local/nginx/logs/access.log.1 (rotatecount 5, logstart 1, i 0),      # 日志0重命名为日志1
old log /usr/local/nginx/logs/access.log.0 does not exist   # 日志0不存在
log /usr/local/nginx/logs/access.log.6 doesn't exist -- won't try to dispose of it   # 日志6不存在,故不能处理它
rotating log /usr/local/nginx/logs/error.log, log->rotateCount is 5
dateext suffix '-20200715'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /usr/local/nginx/logs/error.log.5 to /usr/local/nginx/logs/error.log.6 (rotatecount 5, logstart 1, i 5), 
old log /usr/local/nginx/logs/error.log.5 does not exist
renaming /usr/local/nginx/logs/error.log.4 to /usr/local/nginx/logs/error.log.5 (rotatecount 5, logstart 1, i 4), 
old log /usr/local/nginx/logs/error.log.4 does not exist
renaming /usr/local/nginx/logs/error.log.3 to /usr/local/nginx/logs/error.log.4 (rotatecount 5, logstart 1, i 3), 
old log /usr/local/nginx/logs/error.log.3 does not exist
renaming /usr/local/nginx/logs/error.log.2 to /usr/local/nginx/logs/error.log.3 (rotatecount 5, logstart 1, i 2), 
old log /usr/local/nginx/logs/error.log.2 does not exist
renaming /usr/local/nginx/logs/error.log.1 to /usr/local/nginx/logs/error.log.2 (rotatecount 5, logstart 1, i 1), 
old log /usr/local/nginx/logs/error.log.1 does not exist
renaming /usr/local/nginx/logs/error.log.0 to /usr/local/nginx/logs/error.log.1 (rotatecount 5, logstart 1, i 0), 
old log /usr/local/nginx/logs/error.log.0 does not exist
log /usr/local/nginx/logs/error.log.6 doesn't exist -- won't try to dispose of it
fscreate context set to unconfined_u:object_r:usr_t:s0
renaming /usr/local/nginx/logs/access.log to /usr/local/nginx/logs/access.log.1   # 当前访问日志重命名为访问日志1
fscreate context set to unconfined_u:object_r:usr_t:s0
renaming /usr/local/nginx/logs/error.log to /usr/local/nginx/logs/error.log.1     # 当前错误日志重命名为错误日志1
running postrotate script
set default create context
# 查看日志轮替情况
# 可以看到已经轮替一次日志了。
[root@master ~]# ll /usr/local/nginx/logs/*log*
-rw-r--r--. 1 root root     0 7月  15 23:50 /usr/local/nginx/logs/access.log
-rw-r--r--. 1 root root  8177 7月  15 22:05 /usr/local/nginx/logs/access.log.1
-rw-r--r--. 1 root root    61 7月  15 23:50 /usr/local/nginx/logs/error.log
-rw-r--r--. 1 root root 10068 7月  15 22:05 /usr/local/nginx/logs/error.log.1

8. 搭建日志收集服务器

日志收集服务器: 服务器作为日志接收端,客户端作为日志发送端,所有的客户端上的日志都通过 514/tcp 端口号发送到服务器上进行管理。

运行原理: 服务端开放514端口,允许客户端通过该端口将指定的日志远程传输到服务端的/var/log/messages文件中。

服务端IP:192.168.10.10

客户端IP:192.168.10.20

# 服务端配置,使得rsyslog服务支持使用tcp协议传输日志
# tcp协议收集日志-可靠完整
# udp协议收集日志-速度快-不保证数据完整
# 编辑rsyslog的配置文件,启用tcp协议收集日志
[root@server ~]# vim /etc/rsyslog.conf
 19 $ModLoad imtcp
 20 $InputTCPServerRun 514
# 重启rsyslog服务
[root@server ~]# systemctl restart rsyslog
# 查看514端口监听情况
[root@server ~]# netstat -antup | grep 514
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      18499/rsyslogd      
tcp6       0      0 :::514                  :::*                    LISTEN      18499/rsyslogd

# 防火墙开放514/tcp端口
[root@server ~]# firewall-cmd --permanent --zone=public --add-port=514/tcp
success
[root@server ~]# firewall-cmd --reload 
success
# 客户端配置,收集客户端上的所有类型和等级的日志,并发送到指定的日志服务器。
[root@client ~]# vim /etc/rsyslog.conf 
 91 *.* @@192.168.10.10:514
# 重启rsyslog服务
[root@client ~]# systemctl restart rsyslog

# 服务器使用 udp 协议,客户端使用的配置文件中这一行只能有一个@
# *.* @192.168.10.10:514
# 服务器使用 tcp 协议,客户端使用的配置文件中这一行必须有两个@@
# *.* @@192.168.10.10:514
# 客户端上手动生成日志
# 可以看到,客户端上是有日志生成的
[root@client ~]# logger "this is log."
[root@client ~]# tail -1 /var/log/messages
Jul 16 12:51:36 client root: this is log.

# 查看服务端的日志接收情况
[root@server ~]# tail -f /var/log/messages | grep client
Jul 16 12:51:36 client root: this is log.
# 仅收集客户端上的sshd服务日志
# 在客户端上自定义ssh服务的日志类型和存储位置,这里类型设置为local0,存储位置为/var/log/sshd.log
[root@client ~]# vim /etc/rsyslog.conf 
 91 local0.* @@192.168.10.10:514
# 重启rsyslog服务
[root@client ~]# systemctl restart rsyslog

测试下ssh日志的接收情况:

在这里插入图片描述

通过以上实验,就可以通过一台日志服务器,集中管理多台远程主机的日志了。

9. 设置服务器定时自动关机、自动开机

# 晚上23:00自动关机
[root@server ~]# which shutdown
/usr/sbin/shutdown
[root@server ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
# -h now 指定执行shutdown命令的时间
0 23 * * * /usr/sbin/shutdown -h now
# 早上9:00开机
# 进入bios
# 选择Power Managerment Setup进入电源管理设置
# 选择Wake Up Event Setup,回车选择Press Enter
# 选择Resume By RTC Alarm,回车选择Enabled
# 选择Date日期和HH:MM:SS时间,前提是系统时间是正确的
# F10保存退出,重启电脑后生效。
# 在此期间,一定要保证服务器是通电的,没电肯定开不了机。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值