N86第八周作业

一、日志相关

总结日志分类, 优先级别。图文并茂解释应用如何将日志发到rsyslog,并写到目标。

1.1、日志分类

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

#内置分类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定义的分类 local0-local7

1.2、优先级别

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

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

1.3、rsyslog工作原理

应用如何将日志发到rsyslog,并写到目标:

启用网络日志服务,打开对外接收日志的端口,udp监听端口514,把应用上发生的所有info级别及以上的设施都发送到日志服务器上,514收到后就会写到/var/log/syslog文件中

二、sshd日志写入rsyslog

2.完成功能,sshd应用将日志写到rsyslog的local6分类,过滤所有级别,写入到/var/log/ssh.log。

#修改ssh的配置文件
[root@rocky01 ~]# vi /etc/ssh/sshd_config

#增加
SyslogFacility LOCAL6

#重启sshd服务
[root@rocky01 ~]# systemctl restart sshd

#修改rsyslog的配置
[root@rocky01 ~]# vim /etc/rsyslog.conf

#增加
local6.*     /var/log/ssh.log

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

#测试
[root@rocky01 ~]# logger -p local6.info "hello sshd"
[root@rocky01 ~]# tail /var/log/ssh.log
Jun 17 01:37:42 rocky01 root[136406]: hello sshd

三、跨主机sshd日志写入rsyslog

3. 完成功能,将3个主机(要求主机名为ip)的ssh日志,通过rsyslog服务将ssh日志写入到集中的主机上的rsyslog服务,写入到/var/log/all-ssh.log文件

#集中存储日志服务器上打开对外接收日志的端口
[root@192-168-110-133 ~]# vi /etc/rsyslog.conf 
#增加如下:
# 监听UDP 514端口(或者TCP 514,如果你之前选择了TCP)  
$ModLoad imudp  
$UDPServerRun 514  
  
# 或者,如果你选择了TCP  
#$ModLoad imtcp  
#$InputTCPServerRun 514  
  
# 将接收到的SSH日志写入到/var/log/all-ssh.log  
if $programname == 'sshd' then /var/log/all-ssh.log  
& stop

#保存退出

#重启rsyslog服务
[root@192-168-110-133 ~]# systemctl restart rsyslog


#可以看到udp监听端口514
[root@192-168-110-133 ~]# ss -tunlp
Netid         State          Recv-Q         Send-Q                 Local Address:Port                  Peer Address:Port         Process                                      
udp           UNCONN         0              0                          127.0.0.1:323                        0.0.0.0:*             users:(("chronyd",pid=784,fd=5))            
udp           UNCONN         0              0                            0.0.0.0:514                        0.0.0.0:*             users:(("rsyslogd",pid=20880,fd=4))         
udp           UNCONN         0              0                              [::1]:323                           [::]:*             users:(("chronyd",pid=784,fd=6))            
udp           UNCONN         0              0                               [::]:514                           [::]:*             users:(("rsyslogd",pid=20880,fd=5))         
tcp           LISTEN         0              128                          0.0.0.0:22                         0.0.0.0:*             users:(("sshd",pid=838,fd=3))               
tcp           LISTEN         0              128                             [::]:22                            [::]:*             users:(("sshd",pid=838,fd=4)) 


#客户端1配置:
[root@192-168-110-135 ~]# vi /etc/rsyslog.conf
#增加如下配置:
# 将SSH日志发送到集中的主机  
if $programname == 'sshd' then @192.168.110.133:514

#保存退出

#重启服务rsysylog
[root@192-168-110-135 ~]# systemctl restart rsyslog


#客户端2配置:
[root@192-168-110-138 ~]# vi /etc/rsyslog.conf
#增加如下配置:
# 将SSH日志发送到集中的主机  
if $programname == 'sshd' then @192.168.110.133:514

#保存退出

#重启服务rsysylog
[root@192-168-110-138 ~]# systemctl restart rsyslog


#测试
[root@192-168-110-133 ~]# tail /var/log/all-ssh.log 
Jun 17 12:31:19 192-168-110-138 root[245931]: This is test log from 192.168.110.135
Jun 17 12:44:19 192-168-110-135 sshd[293312]: Accepted password for root from 192.168.110.1 port 55039 ssh2
Jun 17 12:44:19 192-168-110-135 sshd[293312]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
Jun 17 12:51:22 192-168-110-135 sshd[293312]: pam_unix(sshd:session): session closed for user root
Jun 17 12:53:10 192-168-110-138 sshd[283162]: Accepted password for root from 192.168.110.1 port 55184 ssh2
Jun 17 12:53:10 192-168-110-138 sshd[283162]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
[root@192-168-110-133 ~]# 


四、常用日志文件

4. 总结/var/log/目录下常用日志文件作用。

/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的日志


五、journalctl命令的选项及示例

5. 总结journalctl命令的选项及示例

5.1、journalctl命令的选项

#日志的配置文件:
/etc/systemd/journald.conf

#journalctl命令格式
journalctl [OPTIONS...] [MATCHES...]

#选项说明:
--no-full, --full, -l
   如果字段内容超长则以省略号(...)截断以适应列宽。
   默认显示完整的字段内容(超长的部分换行显示或者被分页工具截断)。
   
-f, --follow
   只显示最新的日志项,并且不断显示新生成的日志项。 此选项隐含了 -n 选项。
-e, --pager-end
   在分页工具内立即跳转到日志的尾部。 此选项隐含了 -n1000
   以确保分页工具不必缓存太多的日志行。 不过这个隐含的行数可以被明确设置的 -n
   选项覆盖。 注意,此选项仅可用于 less(1) 分页器。
-n, --lines=
   限制显示最新的日志行数。 --pager-end 与 --follow 隐含了此选项。
   此选项的参数:若为正整数则表示最大行数; 若为 "all" 则表示不限制行数;
   若不设参数则表示默认值10行。
--no-tail
   显示所有日志行, 也就是用于撤销已有的 --lines= 选项(即使与 -f 连用)。
-r, --reverse
   反转日志行的输出顺序, 也就是最先显示最新的日志。
-o, --output=
   控制日志的输出格式。 可以使用如下选项:
  cat
       仅显示日志的实际内容, 而不显示与此日志相关的任何元数据(包括时间戳)。
--utc
   以世界统一时间(UTC)表示时间
--no-hostname
   不显示来源于本机的日志消息的主机名字段。 此选项仅对 short
   系列输出格式(见上文)有效。
-x, --catalog
   在日志的输出中增加一些解释性的短文本, 以帮助进一步说明日志的含义、
   问题的解决方案、支持论坛、 开发文档、以及其他任何内容。
   并非所有日志都有这些额外的帮助文本, 详见 Message Catalog Developer
   Documentation[5] 文档。
   注意,如果要将日志输出用于bug报告, 请不要使用此选项。
-q, --quiet
   当以普通用户身份运行时, 不显示任何警告信息与提示信息。 例如:"-- Logs begin at
   ...", "-- Reboot --"
-m, --merge
   混合显示包括远程日志在内的所有可见日志。
-b [ID][±offset], --boot=[ID][±offset]
   显示特定于某次启动的日志, 这相当于添加了一个 "_BOOT_ID=" 匹配条件。
   如果参数为空(也就是 ID 与 ±offset 都未指定), 则表示仅显示本次启动的日志。
   如果省略了 ID , 那么当 ±offset 是正数的时候, 将从日志头开始正向查找,
   否则(也就是为负数或零)将从日志尾开始反响查找。 举例来说, "-b
    1"表示按时间顺序排列最早的那次启动, "-b 2"则表示在时间上第二早的那次启动; "-b
    -0"表示最后一次启动, "-b -1"表示在时间上第二近的那次启动, 以此类推。 如果
   ±offset 也省略了, 那么相当于"-b -0", 除非本次启动不是最后一次启动(例如用
    --directory 指定了另外一台主机上的日志目录)。
   如果指定了32字符的 ID , 那么表示以此 ID 所代表的那次启动为基准
   计算偏移量(±offset), 计算方法同上。 换句话说, 省略 ID 表示以本次启动为基准
   计算偏移量(±offset)。
--list-boots
   列出每次启动的 序号(也就是相对于本次启动的偏移量)、32字符的ID、
   第一条日志的时间戳、最后一条日志的时间戳。
-k, --dmesg
   仅显示内核日志。隐含了 -b 选项以及 "_TRANSPORT=kernel" 匹配项。
-t, --identifier=SYSLOG_IDENTIFIER
   仅显示 syslog[1] 识别符为 SYSLOG_IDENTIFIER 的日志项。
   可以多次使用该选项以指定多个识别符。
-u, --unit=UNIT|PATTERN
   仅显示属于特定单元的日志。 也就是单元名称正好等于 UNIT 或者符合 PATTERN
   模式的单元。 这相当于添加了一个 "_SYSTEMD_UNIT=UNIT" 匹配项(对于 UNIT 来说),
   或一组匹配项(对于 PATTERN 来说)
--user-unit=
   仅显示属于特定用户会话单元的日志。 相当于同时添加了 "_SYSTEMD_USER_UNIT=" 与
    "_UID=" 两个匹配条件。
   可以多次使用此选项以添加多个并列的匹配条件(相当于用"OR"逻辑连接)。
-p, --priority=
   根据日志等级(包括等级范围)过滤输出结果。 日志等级数字与其名称之间的对应关系如下
   (参见 syslog(3)): "emerg" (0), "alert" (1), "crit" (2), "err" (3),
    "warning" (4), "notice" (5), "info" (6), "debug" (7) 。
   若设为一个单独的数字或日志等级名称, 则表示仅显示小于或等于此等级的日志
   (也就是重要程度等于或高于此等级的日志)。 若使用 FROM..TO.. 设置一个范围,
   则表示仅显示指定的等级范围内(含两端)的日志。 此选项相当于添加了 "PRIORITY="
   匹配条件。
-c, --cursor=
   从指定的游标(cursor)开始显示日志。
   [提示]每条日志都有一个"__CURSOR"字段,类似于该条日志的指纹。
--after-cursor=
   从指定的游标(cursor)之后开始显示日志。 如果使用了 --show-cursor 选项,
   则也会显示游标本身。
--show-cursor
   在最后一条日志之后显示游标, 类似下面这样,以"--"开头:
        -- cursor: s=0639...
   游标的具体格式是私有的(也就是没有公开的规范), 并且会变化。
-S, --since=, -U, --until=
   显示晚于指定时间(--since=)的日志、显示早于指定时间(--until=)的日志。
   参数的格式类似 "2012-10-30 18:17:16" 这样。 如果省略了"时:分:秒"部分,
   则相当于设为 "00:00:00" 。 如果仅省略了"秒"的部分则相当于设为 ":00" 。
   如果省略了"年-月-日"部分, 则相当于设为当前日期。 除了"年-月-日 时:分:秒"格式,
   参数还可以进行如下设置: (1)设为 "yesterday", "today", "tomorrow"
   以表示那一天的零点(00:00:00)。 (2)设为 "now" 以表示当前时间。
   (3)可以在"年-月-日 时:分:秒"前加上 "-"(前移) 或 "+"(后移)
   前缀以表示相对于当前时间的偏移。 关于时间与日期的详细规范, 参见
   systemd.time(7)
-F, --field=
   显示所有日志中某个字段的所有可能值。 [译者注]类似于SQL语句:"SELECT DISTINCT
   某字段 FROM 全部日志"
-N, --fields
   输出所有日志字段的名称
--system, --user
   仅显示系统服务与内核的日志(--system)、 仅显示当前用户的日志(--user)。
   如果两个选项都未指定,则显示当前用户的所有可见日志。
-M, --machine=
   显示来自于正在运行的、特定名称的本地容器的日志。 参数必须是一个本地容器的名称。
-D DIR, --directory=DIR
   仅显示来自于特定目录中的日志, 而不是默认的运行时和系统日志目录中的日志。
--file=GLOB
   GLOB 是一个可以包含"?"与"*"的文件路径匹配模式。 表示仅显示来自与指定的 GLOB
   模式匹配的文件中的日志, 而不是默认的运行时和系统日志目录中的日志。
   可以多次使用此选项以指定多个匹配模式(多个模式之间用"OR"逻辑连接)。
--root=ROOT
   在对日志进行操作时, 将 ROOT 视为系统的根目录。 例如 --update-catalog 将会创建
   ROOT/var/lib/systemd/catalog/database
--new-id128
   此选项并不用于显示日志内容, 而是用于重新生成一个标识日志分类的 128-bit ID 。
   此选项的目的在于 帮助开发者生成易于辨别的日志消息, 以方便调试。
--header
   此选项并不用于显示日志内容, 而是用于显示日志文件内部的头信息(类似于元数据)。
--disk-usage
   此选项并不用于显示日志内容,
   而是用于显示所有日志文件(归档文件与活动文件)的磁盘占用总量。
--vacuum-size=, --vacuum-time=, --vacuum-files=
   这些选项并不用于显示日志内容,
   而是用于清理日志归档文件(并不清理活动的日志文件), 以释放磁盘空间。
    --vacuum-size= 可用于限制归档文件的最大磁盘使用量 (可以使用 "K", "M", "G", "T"
   后缀); --vacuum-time= 可用于清除指定时间之前的归档 (可以使用 "s", "m", "h",
    "days", "weeks", "months", "years" 后缀); --vacuum-files=
   可用于限制日志归档文件的最大数量。 注意,--vacuum-size= 对 --disk-usage
   的输出仅有间接效果, 因为 --disk-usage 输出的是归档日志与活动日志的总量。
   同样,--vacuum-files= 也未必一定会减少日志文件的总数,
   因为它同样仅作用于归档文件而不会删除活动的日志文件。
   此三个选项可以同时使用,以同时从三个维度去限制归档文件。
   若将某选项设为零,则表示取消此选项的限制。
--list-catalog [128-bit-ID...]
   简要列出日志分类信息, 其中包括对分类信息的简要描述。
   如果明确指定了分类ID(128-bit-ID), 那么仅显示指定的分类。
--dump-catalog [128-bit-ID...]
   详细列出日志分类信息 (格式与 .catalog 文件相同)。
   如果明确指定了分类ID(128-bit-ID), 那么仅显示指定的分类。
--update-catalog
   更新日志分类索引二进制文件。
   每当安装、删除、更新了分类文件,都需要执行一次此动作。
--setup-keys
   此选项并不用于显示日志内容, 而是用于生成一个新的FSS(Forward Secure
   Sealing)密钥对。 此密钥对包含一个"sealing key"与一个"verification key"。
    "sealing key"保存在本地日志目录中, 而"verification key"则必须保存在其他地方。
   详见 journald.conf(5) 中的 Seal= 选项。
--force
   与 --setup-keys 连用, 表示即使已经配置了FSS(Forward Secure Sealing)密钥对,也要强制重新生成。
--interval=
   与 --setup-keys 连用,指定"sealing key"的变化间隔。
   较短的时间间隔会导致占用更多的CPU资源, 但是能够减少未检测的日志变化时间。
   默认值是 15min
--verify
   检查日志文件的内在一致性。 如果日志文件在生成时开启了FSS特性, 并且使用
    --verify-key= 指定了FSS的"verification key",
   那么,同时还将验证日志文件的真实性。
--verify-key=
   与 --verify 选项连用, 指定FSS的"verification key"
--sync
   要求日志守护进程将所有未写入磁盘的日志数据刷写到磁盘上,
   并且一直阻塞到刷写操作实际完成之后才返回。 因此该命令可以保证当它返回的时候,
   所有在调用此命令的时间点之前的日志, 已经全部安全的刷写到了磁盘中。
--flush
   要求日志守护进程 将 /run/log/journal 中的日志数据 刷写到 /var/log/journal 中
  
--rotate
   要求日志守护进程滚动日志文件。 此命令会一直阻塞到滚动完成之后才会返回。
-h, --help
   显示简短的帮助信息并退出。
--version
   显示简短的版本信息并退出。
--no-pager
   不将程序的输出内容管道(pipe)给分页程序

5.2、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
#查看某个 Unit 的日志
 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.service -o json-pretty
#显示日志占据的硬盘空间
 journalctl --disk-usage
#指定日志文件占据的最大空间
 journalctl --vacuum-size=1G
#指定日志文件保存多久
 journalctl --vacuum-time=1years


六、日志写入到mysql表

6. 完成将多个主机(要求主机名为ip)的nginx日志集中写入到mysql表中

#环境准备,安装nginx、rsyslog-mysql插件
[root@192-168-110-133 ~]#yum install -y nginx rsyslog-mysql


[root@192-168-110-135 ~]#yum install mysql-server
#在MySQL数据库服务器上创建相关数据库和表,并授权rsyslog能连接至当前服务器
[root@192-168-110-135 ~]#mysql -u 
mysql>source /usr/share/doc/rsyslog/mysql-createDB.sql
mysql>CREATE USER  'rsyslog'@'%' IDENTIFIED BY '123456';
mysql>GRANT ALL ON Syslog.* TO '%' ;


#配置rsyslog将日志保存到mysql中
[root@192-168-110-133 ~]##vim /etc/rsyslog.conf

####MODULES####
#在 MODULES 语言下面,如果是 Ubuntu22.04,20.04和CentOS8 加下面行
module(load="ommysql") 

#在 MODULES 语言下面,如果是 CentOS 7,6 加下面行
$ModLoad ommysql 


#在RULES语句块加下面行的格式
#facility.priority   :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD 
*.info :ommysql:10.0.0.18,Syslog,rsyslog,123456


[root@192-168-110-133 ~]#systemctl restart rsyslog.service





[root@192-168-110-135 ~]# mysql -ursyslog -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 100
Server version: 8.0.36 Source distribution

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use Syslog
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select count(*) from SystemEvents;
+----------+
| count(*) |
+----------+
|       26 |
+----------+
1 row in set (0.00 sec)

mysql> select * from SystemEvents;
+----+------------+---------------------+---------------------+----------+----------+-----------------+-------------------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+----------------------+--------------+-----------------+----------+
| ID | CustomerID | ReceivedAt          | DeviceReportedTime  | Facility | Priority | FromHost        | Message                                                                                                                       | NTSeverity | Importance | EventSource | EventUser | EventCategory | EventID | EventBinaryData | MaxAvailable | CurrUsage | MinUsage | MaxUsage | InfoUnitID | SysLogTag            | EventLogType | GenericFileName | SystemID |
+----+------------+---------------------+---------------------+----------+----------+-----------------+-------------------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+----------------------+--------------+-----------------+----------+
|  1 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        3 |        6 | 192-168-110-135 | Stopping System Logging Service...                                                                                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
|  2 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        5 |        6 | 192-168-110-135 | [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="762451" x-info="https://www.rsyslog.com"] exiting on signal 15. |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[762451]:    | NULL         | NULL            |     NULL |
|  3 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        3 |        6 | 192-168-110-135 | rsyslog.service: Deactivated successfully.                                                                                    |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
|  4 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        3 |        6 | 192-168-110-135 | Stopped System Logging Service.                                                                                               |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
|  5 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        3 |        6 | 192-168-110-135 | Starting System Logging Service...                                                                                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
|  6 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        3 |        6 | 192-168-110-135 | Started System Logging Service.                                                                                               |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
|  7 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        5 |        4 | 192-168-110-135 | imjournal: filecreatemode is not set, using default 0644 [v8.2310.0-4.el9 try https://www.rsyslog.com/e/2186 ]                |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[786566]:    | NULL         | NULL            |     NULL |
|  8 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        5 |        6 | 192-168-110-135 | [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="786566" x-info="https://www.rsyslog.com"] start                 |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[786566]:    | NULL         | NULL            |     NULL |
|  9 |       NULL | 2024-06-17 16:16:47 | 2024-06-17 16:16:47 |        5 |        5 | 192-168-110-135 | imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[786566]:    | NULL         | NULL            |     NULL |
| 10 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        3 |        6 | 192-168-110-135 | Stopping System Logging Service...                                                                                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 11 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        5 |        6 | 192-168-110-135 | [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="786566" x-info="https://www.rsyslog.com"] exiting on signal 15. |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[786566]:    | NULL         | NULL            |     NULL |
| 12 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        3 |        6 | 192-168-110-135 | rsyslog.service: Deactivated successfully.                                                                                    |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 13 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        3 |        6 | 192-168-110-135 | Stopped System Logging Service.                                                                                               |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 14 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        3 |        6 | 192-168-110-135 | Starting System Logging Service...                                                                                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 15 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        3 |        6 | 192-168-110-135 | Started System Logging Service.                                                                                               |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 16 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        5 |        4 | 192-168-110-135 | imjournal: filecreatemode is not set, using default 0644 [v8.2310.0-4.el9 try https://www.rsyslog.com/e/2186 ]                |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[793389]:    | NULL         | NULL            |     NULL |
| 17 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        5 |        6 | 192-168-110-135 | [origin software="rsyslogd" swVersion="8.2310.0-4.el9" x-pid="793389" x-info="https://www.rsyslog.com"] start                 |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[793389]:    | NULL         | NULL            |     NULL |
| 18 |       NULL | 2024-06-17 16:19:36 | 2024-06-17 16:19:36 |        5 |        5 | 192-168-110-135 | imjournal: journal files changed, reloading...  [v8.2310.0-4.el9 try https://www.rsyslog.com/e/0 ]                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | rsyslogd[793389]:    | NULL         | NULL            |     NULL |
| 19 |       NULL | 2024-06-17 16:24:27 | 2024-06-17 16:24:27 |        3 |        6 | 192-168-110-135 | <info>  [1718612667.4001] dhcp4 (ens160): state changed new lease, address=192.168.110.135                                    |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | NetworkManager[814]: | NULL         | NULL            |     NULL |
| 20 |       NULL | 2024-06-17 16:24:27 | 2024-06-17 16:24:27 |        3 |        6 | 192-168-110-135 | Starting Network Manager Script Dispatcher Service...                                                                         |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 21 |       NULL | 2024-06-17 16:24:27 | 2024-06-17 16:24:27 |        3 |        6 | 192-168-110-135 | Started Network Manager Script Dispatcher Service.                                                                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 22 |       NULL | 2024-06-17 16:24:37 | 2024-06-17 16:24:37 |        3 |        6 | 192-168-110-135 | NetworkManager-dispatcher.service: Deactivated successfully.                                                                  |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 23 |       NULL | 2024-06-17 16:26:18 | 2024-06-17 16:26:18 |        3 |        6 | 192-168-110-135 | Starting dnf makecache...                                                                                                     |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 24 |       NULL | 2024-06-17 16:26:18 | 2024-06-17 16:26:18 |        3 |        6 | 192-168-110-135 | Metadata cache refreshed recently.                                                                                            |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | dnf[809326]:         | NULL         | NULL            |     NULL |
| 25 |       NULL | 2024-06-17 16:26:18 | 2024-06-17 16:26:18 |        3 |        6 | 192-168-110-135 | dnf-makecache.service: Deactivated successfully.                                                                              |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
| 26 |       NULL | 2024-06-17 16:26:18 | 2024-06-17 16:26:18 |        3 |        6 | 192-168-110-135 | Finished dnf makecache.                                                                                                       |       NULL |       NULL | NULL        | NULL      |          NULL |    NULL | NULL            |         NULL |      NULL |     NULL |     NULL |          1 | systemd[1]:          | NULL         | NULL            |     NULL |
+----+------------+---------------------+---------------------+----------+----------+-----------------+-------------------------------------------------------------------------------------------------------------------------------+------------+------------+-------------+-----------+---------------+---------+-----------------+--------------+-----------+----------+----------+------------+----------------------+--------------+-----------------+----------+
26 rows in set (0.00 sec)

mysql> 


七、logrotate服务应用

7. 尝试使用logrotate服务切割nginx日志,每天切割一次,要求大于不超过3M, 保存90天的日志, 旧日志以时间为后缀,要求压缩。

vi /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily    #表示每天进行切割。
    size 3M    #确保超过 3M 时进行切割。
    rotate 90    #保留 90 天的日志。
    compress    #对旧日志进行压缩。
    dateext    #以时间作为后缀。
    missingok    #日志文件不存在时不报错。
    notifempty    #空文件不进行处理。
}

八、LVS的NAT、DR模型

8.总结 LVS的NAT和DR模型工作原理,并完成DR模型实战。 

8.1、LVS的NAT模型工作原理

LVS-NAT:本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发。

1)RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP

2)请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈

3)支持端口映射,可修改请求报文的目标PORT

4)VS必须是Linux系统,RS可以是任意OS系统

8.2、LVS 的 DR 模型工作原理

LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。

8.3、LVS-DR模式单网段案例

8.3.1、LVS的网络配置

#所有主机禁用iptables和SELinux
#internet主机环境
[root@internet ~]#hostname
internet
[root@internet ~]#hostname -I
192.168.10.6 
[root@internet ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.10.200   0.0.0.0         UG    0      0        0 eth0
[root@internet ~]#ping 10.0.0.7 -c1
PING 10.0.0.7 (10.0.0.7) 56(84) bytes of data.
64 bytes from 10.0.0.7: icmp_seq=1 ttl=63 time=0.565 ms
[root@internet ~]#ping 10.0.0.17 -c1
PING 10.0.0.7 (10.0.0.17) 56(84) bytes of data.
64 bytes from 10.0.0.17: icmp_seq=1 ttl=63 time=0.565 ms
################################################################################ ######
#路由器的网络配置
[root@router ~]#echo 'net.ipv4.ip_forward=1' >>  /etc/sysctl.conf 
[root@router ~]#sysctl -p
[root@router network-scripts]#pwd
/etc/sysconfig/network-scripts
[root@router network-scripts]#cat ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.200
PREFIX=24
ONBOOT=yes
[root@router network-scripts]#cat ifcfg-eth1
DEVICE=eth1
NAME=eth1
BOOTPROTO=static
IPADDR=192.168.10.200
PREFIX=24
ONBOOT=yes
################################################################################ ######
#RS1的网络配置
[root@rs1 ~]#hostname 
rs1.magedu.org
[root@rs1 ~]#hostname -I
10.0.0.7 
[root@rs1 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.7
PREFIX=24
GATEWAY=10.0.0.200
ONBOOT=yes
[root@rs1 ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 0.0.0.0         10.0.0.200      0.0.0.0         UG    100    0        0 eth0 10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@rs1 ~]#yum -y install httpd
[root@rs1 ~]#systemctl enable --now httpd 
[root@rs1 ~]#hostname -I > /var/www/html/index.html
[root@rs1 ~]#ping 192.168.10.6 -c1
PING 192.168.10.6 (192.168.10.6) 56(84) bytes of data.
64 bytes from 192.168.10.6: icmp_seq=1 ttl=63 time=1.14 ms
[root@rs1 ~]#curl 10.0.0.7
10.0.0.7 
################################################################################ ######
#RS2 的网络配置
[root@rs2 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.17
PREFIX=24
GATEWAY=10.0.0.200
ONBOOT=yes
[root@rs2 ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 0.0.0.0         10.0.0.200      0.0.0.0         UG    100    0        0 eth0 10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@rs2 ~]#yum -y install httpd
[root@rs2 ~]#systemctl enable --now httpd
[root@rs2 ~]#hostname -I > /var/www/html/index.html
[root@rs2 ~]#curl 10.0.0.17
10.0.0.17 
[root@rs1 ~]#ping 192.168.10.6 -c1
PING 192.168.10.6 (192.168.10.6) 56(84) bytes of data.
64 bytes from 192.168.10.6: icmp_seq=1 ttl=63 time=1.14 ms
[root@rs2 ~]#curl 10.0.0.17
10.0.0.17
################################################################################ ######
#LVS的网络配置
[root@lvs ~]#hostname 
lvs.magedu.org
[root@lvs ~]#hostname -I
10.0.0.8 
[root@lvs ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.8
PREFIX=24
GATEWAY=10.0.0.200
ONBOOT=yes
[root@lvs ~]#route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.200      0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@lvs ~]#ping 192.168.10.6 -c1
PING 192.168.10.6 (192.168.10.6) 56(84) bytes of data.
64 bytes from 192.168.10.6: icmp_seq=1 ttl=63 time=2.32 ms

8.3.2、后端RS的IPVS配置

#RS1的IPVS配置
[root@rs1 ~]#echo 1 >   /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs1 ~]#echo 2 >   /proc/sys/net/ipv4/conf/all/arp_announce 
[root@rs1 ~]#echo 1 >   /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs1 ~]#echo 2 >   /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@rs1 ~]#ifconfig lo:1 10.0.0.100/32
[root@rs1 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.0.0.100/0 scope global lo:1
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:01:f9:48 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0        valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe01:f948/64 scope link        valid_lft forever preferred_lft forever
    
#RS2的IPVS配置
[root@rs2 ~]#echo 1 >   /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 ~]#echo 1 >   /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs2 ~]#echo 2 >   /proc/sys/net/ipv4/conf/all/arp_announce 
[root@rs2 ~]#echo 2 >   /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs2 ~]#ifconfig lo:1 10.0.0.100/32
[root@rs2 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.0.0.100/0 scope global lo:1
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:94:1a:f6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.17/24 brd 10.0.0.255 scope global noprefixroute eth0        valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe94:1af6/64 scope link        valid_lft forever preferred_lft forever

8.3.3、LVS主机的配置

#在LVS上添加VIP
[root@lvs ~]#ifconfig lo:1 10.0.0.100/32 
[root@lvs ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.0.0.100/0 scope global lo:1
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
#实现LVS 规则
[root@lvs ~]#dnf -y install ipvsadm
[root@lvs ~]#ipvsadm -A -t 10.0.0.100:80 -s rr
[root@lvs ~]#ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.7:80 -g [root@lvs ~]#ipvsadm -a -t 10.0.0.100:80 -r 10.0.0.17:80 -g 
[root@lvs ~]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn TCP  10.0.0.100:80 rr
  -> 10.0.0.7:80                  Route   1      0          0           -> 10.0.0.17:80                 Route   1      0          0    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值