日志服务管理和inode号

2024-01-08 16:35:53

一、系统日志管理

1.1系统日志的介绍

在现实生活中,记录日志也非常重要,比如银行的转账记录,飞机上的黑盒子,那么将系统和应用发生的事件记录至日志中,以助于排错和分析使用

日志记录的内容包括:

  • 历史事件:时间,地点,人物,事件

  • 日志级别:事件的关键性程度,Loglevel error notice info debug

1.2rsyslog 系统日志服务

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。

rsyslog:管理日志

使用他的话,需要rsyslog软件和那个软件之间要支持

日志功能:

记录系统、程序运行中发生事情

1.3日志的种类

系统日志

/var/log/secure:放系统安全

/var/log/message:存放系统大部分文件

?用户登录日志

/var/log/btmp:查看用户登录失败的信息 ? ?用 lastb命令 看,因为btmp是二进制文件

/var/log/wtmp:查看哪些用户正常登录 ? ?用 last 命令查看

/var/log/lastlog:记录用户最后一次登录的信息 ? ?用 lastlog 命令查看

程序日志

和程序有关,有的有独立日志,有的没有

1.4journalctl:日志管理工具

CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。

日志的配置文件

/etc/systemd/journald.conf

journalctl命令格式

journalctl [OPTIONS...] [MATCHES...]?

选项说明:

--no-full, --full, -l
???如果字段内容超长则以省略号(...)截断以适应列宽。
???默认显示完整的字段内容(超长的部分换行显示或者被分页工具截断)。
???老旧的 -l/--full 选项 仅用于撤销已有的 --no-full 选项,除此之外没有其他用处。

-a, --all
???完整显示所有字段内容, 即使其中包含不可打印字符或者字段内容超长。


-f, --follow
???只显示最新的日志项,并且不断显示新生成的日志项。 此选项隐含了 -n 选项。

-e, --pager-end
???在分页工具内立即跳转到日志的尾部。 此选项隐含了 -n1000
???以确保分页工具不必缓存太多的日志行。 不过这个隐含的行数可以被明确设置的 -n
???选项覆盖。 注意,此选项仅可用于 less(1) 分页器。

?

-x, --catalog
???在日志的输出中增加一些解释性的短文本, 以帮助进一步说明日志的含义、
???问题的解决方案、支持论坛、 开发文档、以及其他任何内容。
???并非所有日志都有这些额外的帮助文本, 详见 Message Catalog Developer
???Documentation[5] 文档。
???注意,如果要将日志输出用于bug报告, 请不要使用此选项。

-n, --lines=
???限制显示最新的日志行数。 --pager-end 与 --follow 隐含了此选项。
???此选项的参数:若为正整数则表示最大行数; 若为 "all" 则表示不限制行数;
???若不设参数则表示默认值10行。


--no-tail
???显示所有日志行, 也就是用于撤销已有的 --lines= 选项(即使与 -f 连用)。


-r, --reverse
???反转日志行的输出顺序, 也就是最先显示最新的日志。


-o, --output=
???控制日志的输出格式。 可以使用如下选项:
???short
???????这是默认值, 其输出格式与传统的 syslog[1] 文件的格式相似, 每条日志一行。
???short-iso
???????与 short 类似,只是将时间戳字段以 ISO 8601 格式显示。
???short-precise
???????与 short 类似,只是将时间戳字段的秒数精确到微秒级别。
???short-monotonic
???????与 short 类似,只是将时间戳字段的零值从内核启动时开始计算。
???short-unix
???????与 short 类似,只是将时间戳字段显示为从"UNIX时间原点"(1970-1-1 00:00:00
???????UTC)以来的秒数。 精确到微秒级别。
???verbose
???????以结构化的格式显示每条日志的所有字段。
????export
???????将日志序列化为二进制字节流(大部分依然是文本) 以适用于备份与网络传输(详见
???????Journal Export Format[2] 文档)。


???json
???????将日志项按照JSON数据结构格式化, 每条日志一行(详见 Journal JSON Format[3]
???????文档)。
???json-pretty
???????将日志项按照JSON数据结构格式化, 但是每个字段一行, 以便于人类阅读。
???json-sse
???????将日志项按照JSON数据结构格式化,每条日志一行,但是用大括号包围, 以适应
???????Server-Sent Events[4] 的要求。
????cat
???????仅显示日志的实际内容, 而不显示与此日志相关的任何元数据(包括时间戳)。

实例命令:

journalctl? ?-xe

?查看最后几个日志-----基本没什么用

journalctl -xe --no-pager

?

二、实验

1.实际操作,将ssh服务的日志单独设置

1.查看ssh服务的日志位置

tail -f /var/log/secure

2.添加自己文件位置

vim /etc/rsyslog.conf

3.修改ssh配置文件,32下一行添加自己的自定义

vim /etc/ssh/sshd_config

32 #SyslogFacility AUTHPRIV
33 SyslogFacility LOCAL6

?

4.重启服务

systemctl restart rsyslog.service sshd?

?

5.登录远程主机 172.16.18.4

ssh? 172.16.18.4

6.具体查看一下日志文件

ls? ?/data/

cat? ?/data/sshd.log

7.开启远程登录ssh到主机;

ssh? 172.16.18.4

单独调成文件

tail ?-f ?/data/sshd.log

?

2.远程日志功能

1.让两台主机,同步命令

2.关闭防火墙和核心防护

systemctl stop firewalld

setenforce 0

3.修改配置文件

vim /etc/rsyslog.conf

4.查看514端口是否开启;查看一下另一台主机是否开启,没有的话,按上操作开启一下

systemctl ?restart rsyslog.service

ss -ntap |grep 514

5.主机1导给主机2,修改主机2的配置文件

6.重启;临时切换一下主机名

systemctl ?restart rsyslog.service

hostname? test

su

7.概念说明

8.主机2中随便写入一条日志内容

logger "this is test log from 192.168.91.101 2"

9.最后,在主机1中查看一下,有没有刚刚主机2中的日志内容

三、inode号?

3.1介绍

在同一个设备上是唯一的

inode是有限资源,他的多少和磁盘大小有关

3.2访问文件流程:

根据文件夹中的文件名和inode号的关系,找到对应的inode表,再根据inode表中的指针,找到磁盘真实数据

3.3例题:

1.磁盘空间还剩余很多,但是无法继续建立文件?

原因是:inode号用完了

lvm:可以扩容

普通文件:删除没有用的空文件

2.我想看到几点几分到几点几分之间的日志

内存中

journalctl -S “2024-01-01 8:00” -U “2024 -02-02 8:00”

文章来源:https://blog.csdn.net/YUEAwb/article/details/135455190
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。