Day 16 Linux服务管理和日志管理

本文详细介绍了Linux系统中的服务管理操作,如systemctl控制服务的启动、停止、重启等,以及时间服务器的搭建和配置,涉及日志管理、rsyslog配置、NAT与桥接模式下的虚拟机通信,以及日志轮转工具logrotate的应用。
摘要由CSDN通过智能技术生成

服务管理

启动服务:systemctl start 服务名

停止服务:systemctl stop 服务名

重启服务:systemctl restart 服务名

重新加载配置文件:systemctl reload 服务名(期间并不停止服务进程)

查看服务运行状态:systemctl status 服务名

获取服务启动报错原因:systemctl status 服务名 -l

开机自启动服务:systemctl enable 服务名

关闭开机自启动服务:systemctl disable 服务名

列出系统中所有服务:systemctl list-units

查看服务是否开机自启动:systemctl list-unit-files

实例:搭建时间服务器

公共时间服务器:阿里,腾讯,百度......

私有时间服务器:由自己搭建

查看服务器的时区:timedatectl

修改主机名:hostnamectl set-hostname 新主机名

服务器端

准备工作:

保证yum仓库可用,保证网络可用

关闭防火墙:systemctl stop firewalld  

关闭防火墙开机自启动:systemctl disable firewalld

临时关闭selinux:setenforce 0

永久关闭selinux:vim /etc/selinux/config

SELINUX=disable

①安装时间服务器软件:yum -y install ntp

②修改服务配置文件vim /etc/ntp.conf

restrict default nomodify    //不允许客户端登录,也不允许客户端修改
server 127.127.1.0    //使用本地的bios时间,自己跟自己同步
fudge 127.127.1.0 stratum 10    //定义级别,范围0-16,越小越精准

③启动ntp服务

systemctl restart ntpd

客户端

准备工作:

保证yum仓库可用,保证网络可用

①安装ntpdate服务:yum -y install ntpdate

②进行时间同步:ntpdate 时间服务器的IP地址

注意

①如果两台在不同的主机上的虚拟机都是NAT模式,两台虚拟机不能互相通讯

②如果两台在同一个主机上的虚拟机都是NAT模式,两台虚拟机可以互相通讯

③如果两台虚拟机都是桥接模式,两台虚拟机可以互相通讯

④如果两台虚拟机分别是NAT模式和桥接模式

NAT模式的虚拟机可以访问桥接模式的虚拟机

桥接模式的虚拟机不能访问NAT模式的虚拟机

日志管理

日志分类:系统日志,进程日志,应用程序日志

日志的用途:排错,追溯事件,统计流量,审计安全行为

rsyslog:系统自带的日志管理服务,默认运行

日志的分析处理

少量日志使用 vim cat grep awk等文档处理命令查看

大量日志使用splunk、elk [elasticsearch logstash Kibana]

日志服务rsyslog

/var/log :系统默认存放日志的目录,存放常见的日志文件(系统、进程、应用程序)

/etc/rsyslog.conf :日志服务的配置文件

/etc/rsyslog.d/ :日志服务的子配置文件(包含于日志配置文件)

/etc/rsyslog.conf 日志配置文件解释:

日志管理规则

通过 man 5 rsyslog.conf 可以看到日志管理规则中的日志对象和日志级别

日志对象

日志对象

日志内容

auth/secure

安全验证信息

authpriv

ssh、ftp等登录信息

cron

系统执行定时任务产生的信息

daemon

守护进程产生的信息

kern

内核信息

lpr

打印相关信息

mail

邮件系统信息

mark

服务内部的信息,时间标识

news

新闻服务器相关信息

syslog

日志系统自身信息

user

用户程序产生的相关信息

uucp

Unix-to-Unix Copy 两个unix之间的相关通信

local0~local7

自定义日志对象

日志级别

从上往下等级越来越高,问题越来越严重

日志等级

等级说明(等级越高,记录越少)

none

不记录任何信息

debug

包含详细的开发情报的信息,通常只在调试一个程序时使用

info

通用性信息,一般用来提供有用信息

notice

正常信息,但是较为重要,可能需要处理

warn/warning

警告信息

error/err

错误信息,某个功能或者模块不能正常工作的信息

crit

严重级别,系统或整个软件不能正常工作的信息,例如硬盘错误

alert

需要立刻修改的信息,如系统数据库被破坏,ISP连接丢失

emerg/panic

紧急情况,内核崩溃等重要信息

日志规则:

日志对象.日志级别:只有比当前日志级别更高的级别信息会被记录进日志(等级越高,记录越少;等级越低,记录越多)

*.*:将所有日志对象的所有日志级别信息记录进日志

日志对象.=日志级别:只有当前日志级别的信息会被记录进日志

日志对象.!日志级别:除了当前日志级别的级别信息都会被记录进日志

日志规则格式:

日志对象.日志级别;日志对象.日志级别                                    日志文件名字及存放路径

实例:使用自定义日志对象记录sshd服务的日志文件

①修改sshd服务的主配置文件:vim /etc/ssh/sshd_config

将配置文件中的 SyslogFacility AUTHPRIV 改为 SyslogFacility local0

使sshd服务的日志文件由local0记录

②修改rsyslog服务的主配置文件:vim /etc/rsyslog.conf 

在配置文件的RULES部分添加一行:local0.*                    /var/log/sshd_log

使sshd服务的所有日志信息被 /var/log/sshd_log 日志文件记录

③重启服务

systemctl restart rsyslog

systemctl restart sshd

④使用另一台服务器远程登录该服务器验证

因为在ssh远程登录的过程中涉及到密码验证,所以实际上/var/log/secure文件中也会留下相关记录

实例:远程日志传输

准备工作:需要关闭防火墙和selinux

两台虚拟机:发送端centos-1;接收端centos-2;

①发送端和接收端修改rsyslog的配置文件/etc/rsyslog.conf

打开TCP或UDP的传输协议(此处选择用TCP协议传输)

②在发送端的配置文件/etc/rsyslog.conf添加规则

此处规则为:将发送端的local0日志对象相关sshd服务日志使用TCP协议发送给接收端

若使用udp协议传输

日志对象.日志级别           @接收端IP地址

若使用udp协议传输

日志对象.日志级别           @@接收端IP地址

udp用@;tcp用@@

③发送端和接收端重启rsyslog服务

systemctl restart rsyslog

④验证

发送端ssh使用exit登出,然后再次远程登入

接收端的默认保存接受日志的文件为 /var/log/massage

/var/log/ 内的日志文件

系统自带日志文件

massage:系统日志文件,记录对系统做的操作

secure:认证安全相关的日志文件,记录了系统用户,ssh远程的登录记录,包括失败登录记录和成功登录记录

cron:计划任务日志

yum.log:记录yum软件包管理相关的日志

wtmp:二进制文件,使用w命令调取该文件,查看当前登录的用户

btmp:二进制文件,使用last命令调取该文件,查看最近登陆的用户

lastlog:二进制文件,使用lastlog命令调取该文件,查看系统中所有用户的登录情况

服务进程相关的日志文件

mysqld.log:MySQL进程的记录日志文件

access_log:apache进程的记录日志文件

xferlog:访问FTP服务器的相关记录日志文件

日志轮转(日志切割)

对象:日志文件

功能:

防止日志文件过大,导致日志文件无法打开或打开过慢

定期清除旧的日志数据文件,避免浪费磁盘资源

日志轮转服务:logrotate

日志轮转规则主配置文件:/etc/logrotate.conf

针对于特定的某个日志文件单独制定的规则:

部分规则解释

hourly/daily/weekly/monthly/yearly:每 小时/天/周/月/年 轮转一次

rotate 4:最多保留4份旧的轮转日志

rotate 0:不保留旧的日志文件,直接删除

create:轮转后创建新的日志文件

create的格式:create 四位权限数 属主 属组

dateext:以轮转时的日期作为后缀名保留旧的日志文件

missingok:在日志文件缺失的情况下,不发出错误消息并继续处理下一个日志文件。在默认情况下,日志文件丢失会发出错误信息(nomissingok)

compress:会对旧的日志文件使用gzip进行压缩

nocompress:不会对旧的日志文件进行压缩

delaycompress:延迟压缩,本次轮转时不会立即压缩旧的日志文件,而是延迟在下一次轮转时压缩此次旧的日志文件。通常和 compress 连用,否则没有意义

minsize:指定日志文件大小的最小值,只有当日志文件的大小超过 minisize 时,并且到达了指定的时间周期,logrotate 才会触发轮转。如果文件大小没有达到这个最小值,即使到达了指定的时间周期,logrotate 也不会执行轮转操作。最终导致的结果是轮转出的日志文件大小都会大于等于minsize。

maxsize:指定日志文件大小的最大阈值,当日志文件大小超过maxsize时,或者到达了指定的时间周期,logrotate 就会触发轮转。最终导致结果是轮转出的日志文件都会小于等于maxsize。

notifempty :如果日志文件为空,则不进行轮转。

copytruncate:先复制原始的日志文件到一个新的位置(或者保留副本),然后立即在原地截断原始文件为零大小。这样,正在写入日志的程序可以继续写入,但因为文件已被截断,新的日志数据写入会覆盖文件的开头。使用copytruncate选项时,create选项将无效,且在复制文件和截断文件之间有一个非常短的时间窗口,所以可能会丢失一些日志数据

sharedscript,postrotate,endscript:用法详见下面的子配置文件目录中的nginx服务日志规则

自定义规则格式

轮转日志名称及路径{

规则①

规则②

规则③

......

}

日志轮转规则子配置文件目录:/etc/logrotate.d/

子配置文件目录中存放着针对某个特定服务的日志轮转规则文件

sharedscript:在所有指定的日志文件(例如:本条规则中所有的 /var/log/nginx/*.log)都完成轮转之后,才执行一次postrotate和endscript之间的脚本。这可以优化性能,减少不必要的服务重启次数,特别是在轮转多个相关日志文件时

postrotate:允许管理员在日志文件轮转后执行特定的脚本或命令,对于需要在轮转完成后重启服务或执行其他清理或维护任务的场景非常有用。postrotate不和sharedscript,endscript连用时,表示每轮转一个指定的日志文件后,都会执行一次特定的脚本或命令

endscript:用来标记postrotate脚本块结束的一个指令。postrotate和endscript之间定义的脚本会在每次日志文件轮转之后执行。但是,如果配置了sharedscripts选项,那么postrotate脚本只会在所有指定的日志文件都完成轮转之后执行一次。

三者连用才可以达到所有指定日志文件都轮转完成后执行一次的效果。

|| 命令连接符:前一个命令如果执行成功,后面的命令不执行  前一个命令如果没有执行成功,后面的命令执行

手动强制轮转:logrotate -f 轮转规则配置文件

  • 45
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值