
日志服务管理
日志的用途:
- /var/log/message 大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等
- /var/log/secure 安全和身份验证相关的消息和登录失败的日志文件。 ssh 远程连接产生的日志。
- /var/log/secure 安全和身份验证相关的消息和错误的日志文件
- /var/log/maillog 与邮件服务器相关的消息日志文件
- /var/log/cron 与定期执行任务相关的日志文件
- /var/log/boot.log 与系统启动相关的消息记录
日志的分类
- daemon 后台进程相关
- kern 内核产生的信息
- lpr 打印系统产生的
- authpriv 安全认证
- cron 定时相关
- mail 邮件相关
- syslog 日志服务本身的
- news 新闻系统
- local0~7 自定义的日志设备
- local0-local7 8 个系统保留的类, 供其它的程序使用或者是用户自定义
日志的级别 : 轻 --> 重
编码 优先级 严重性
7 debug 信息对开发人员调试应用程序有用,在操作过程中无用
6 info 正常的操作信息,可以收集报告,测量吞吐量等
5 notice 注意,正常但重要的事件,
4 warning 警告,提示如果不采取行动。将会发生错误。比如文件系统使用 90%
3 err 错误,阻止某个模块或程序的功能不能正常使用
2 crit 关键的错误,已经影响了整个系统或软件不能正常工作的信息
1 alert 警报,需要立刻修改的信息
0 emerg 紧急,内核崩溃等严重信息
日志输入规则
. info 大于等于 info 级别的信息全部记录到某个文件
.=级别 仅记录等于某个级别的日志
例:.=info 只记录 info 级别的日志
.! 级别 除了某个级别意外,记录所有的级别信息
例.!err 除了 err 外记录所有
.none 指的是排除某个类别 例: mail.none 所有 mail 类别的日志都不记录
日志服务
-
rhel5 -> 服务名称 syslog -> 配置文件 /etc/syslog.conf
-
rhel6-8 -> 服务名称 rsyslog -> 配置文件 /etc/rsyslog.conf
注释:
#$UDPServerRun 514 #允许 514 端口接收使用 UDP 协议转发过来的日志
#$InputTCPServerRun 514 #允许 514 端口接收使用 TCP 协议转发过来的日志
Rocky8 为
#input(type="imudp" port="514") #允许 514 端口接收使用 UDP 协议转发过来的日志
#input(type="imtcp" port="514") #允许 514 端口接收使用 TCP 协议转发过来的日志
#kern.* 内核类型的所有级别日志 --> 存放到 --> /dev/console
*.info;mail.none;authpriv.none;cron.none /var/log/messages
所有的类别并且级别是 info 以上 除了 mail,authpriv,cron (产生的日志太多,不易于查看)
类别.级别
authpriv.* 认证的信息-->存放--> /var/log/secure
mail.* 邮件相关的信息--> 存放--> -/var/log/maillog
cron.* 计划任务相关的信息-->存放--> /var/log/cron
local7.* 开机时显示的信息-->存放--> /var/log/boot.log
“- ”号: 邮件的信息比较多,先将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少 I/O 进程的开销
数据存储在内存,如果关机不当数据消失
last 查看每个用户的登录次数和持续时间等信息
- (成功登录系统的用户)
last -f /var/log/wtmp
lastb 查看暴力破解系统的用户
#查看恶意 ip 试图登录次数
lastb | tr -s ' ' | cut -d ' ' -f3 | uniq -c | sort -n
# 清空日志
> /var/log/btmp
实战1-自定义 ssh 服务的日志类型和存储位置
# 把自定义 local0 类别的日志,保存到 /var/log/sshd.log
[root@client~]$ vim +73 /etc/rsyslog.conf
- 添加下列内容
local0.* /var/log/sshd.log
# 设置ssh 服务日志类别为 【local0】
[root@client~]$ vim +32 /etc/ssh/sshd_config
SyslogFacility AUTHPRIV --> SyslogFacility local0
# 重启 rsyslog 使配置生效,重启 sshd 生成日志
[root@client~]$ systemctl restart rsyslog sshd
# 验证查看日志内容
[root@client~]$ cat /var/log/sshd.log
对应的信息:
时间 主机 服务 进程 ID 相关的信息
实战2-使用 logrotate 进行 ssh 日志分割
#创建一个 sshd 配置文件
[root@centos7 ~]# cat/etc/logrotate.d/sshd
/var/log/sshd.log {
missingok
weekly
create 0600 root root
minsize 10M
rotate 3
}
# 每分钟执行一次该脚本内容,分割一次
[root@centos7 ~]#crontab -e
*/1 * * * * logrotate -vf /etc/logrotate.d/sshd
# 重启该服务
[root@centos7 ~]#systemctl restart rsyslog
# 预演,不实际轮询(切割)
[root@centos7 ~]#logrotate -d /etc/logrotate.d/sshd
# 强制轮询
[root@centos7 ~]# logrotate -vf /etc/logrotate.d/sshd
-v 显示执行命令过程
-f 强制执行
# 查看生成的切割文件
[root@centos7 ~]#ls /var/log/sshd*
# 再次查看日志文件大小,已经为 0
[root@centos7 ~]#ll /var/log/sshd* -h
实战3-配置远程日志服务器-实现日志集中的管理
- Server 端配置:
# 关闭 selinux 和防火墙
[root@server ~]#setenforce 0
[root@server ~]#systemctl stop firewalld
[root@server ~]#vim /etc/rsyslog.conf
CentOS7 把下面 2 行的注释去掉
19 $ModLoad imtcp
20 $InputTCPServerRun 514
Rocky8 把下面 2 行的注释去掉
24 #module(load="imtcp") # needs to be done just once
25 #input(type="imtcp" port="514")
注:使用 UDP 协议 速度快 不保证数据的完整,使用 TCP 协议 可靠.完整
# 重新启动 rsyslog
[root@server ~]# stemctl restart rsyslog
# 查看服务监听的状态:
[root@server ~]# netstat -anlpt| grep 514
- Client 端配置:
[root@client ~]#vim /etc/rsyslog.conf #在 90 行之后,插入
*.* @@10.0.0.10:514 #写入服务端的 ip 地址
#重启 rsyslog 服务
[root@clicet ~]#systemctl restart rsyslog.service
- Server 端查看日志:
# 服务端实时查看日志
[root@server ~]# tail -f /var/log/messages
# 客户端模拟发送日志
[root@client ~]# logger "Hello World"
# 服务器端查看消息
[root@centos7 ~]#tail -f /var/log/messages
- udp协议:【.@10.0.0.10:514】
- tcp协议:【.@@10.0.0.10:514】
实战4-利用mysql存储日志信息
- rsyslog服务器端
[root@rsyslog ~]#yum install rsyslog-mysql
[root@rsyslog ~]#rpm -ql rsyslog-mysql
/usr/lib/.build-id
/usr/lib/.build-id/d7
/usr/lib/.build-id/d7/77fc839aa07e92f0a8858cf3f122996436c7df
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog/mysql-createDB.sql
# 查看sql脚本文件内容
[root@rsyslog ~]# cat /usr/share/doc/rsyslog/mysql-createDB.sql
# 将sql脚本复制到数据库服库上
[root@rsyslog ~]# scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.11
- 数据库
# 安装数据库
[root@db ~]# yum install mariadb-server
[root@db ~]# mysql -uroot
# 导入sql文件
[root@db ~]# mysql>source /data/mysql-createDB.sql
# 创建用户
[root@db ~]# mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'10.0.0.%' IDENTIFIED BY '1';
- rsyslog服务器端
# 配置rsyslog将日志保存到mysql中
[root@rsyslog ~]# vim /etc/rsyslog.conf
####MODULES####
Rocky8 加下面行
module(load="ommysql")
CentOS 7,6 加下面行
$ModLoad ommysql
#在RULES语句块加下面行的格式
#facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
*.info :ommysql:10.0.0.10,Syslog,rsyslog,1
[root@rsyslog ~]#systemctl restart rsyslog.service
#在日志服务器上生成日志
[root@rsyslog ~]#logger "this is a test log"
#在数据库上查询到上面的测试日志
# 切换到【Syslog】数据库
mysql> use Syslog;
# 列出库中表
mysql> show tables;
# 查看表内容
mysql>SELECT COUNT(*) FROM SystemEvents\G
5 综合-远程日志收集并利用数据库进行存储
- CentOS 7.9 - Client
[root@myx01~]$ hostnamectl set-hostname CentOS7.9-Client
[root@client~]$ vim +90 /etc/rsyslog.conf
*.* @@10.0.0.50:514
[root@client~]$ systemctl restart rsyslog.service
[root@client~]$ logger "hello world"
# 服务端查看
[root@Rocky8-Server~]$ tail -f -n1 /var/log/messages
Sep 9 12:58:25 client root: hello world
- Rocky8 - Server
[root@Rocky8-01~]$ hostnamectl set-hostname Rocky8-Server
[root@Rocky8-Server~]$ setenforce 0
[root@Rocky8-Server~]$ systemctl stop firewalld
[root@Rocky8-Server~]$ vim +24 /etc/rsyslog.conf
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
[root@Rocky8-Server~]$ systemctl restart rsyslog
[root@Rocky8-Server~]$ ss -ntlp | grep 514
LISTEN 0 25 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=2323,fd=4))
LISTEN 0 25 [::]:514 [::]:* users:(("rsyslogd",pid=2323,fd=5))
[root@Rocky8-Server~]$ yum install -y rsyslog-mysql
[root@Rocky8-Server~]$ 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
[root@Rocky8-Server~]$ cat /usr/share/doc/rsyslog/mysql-createDB.sql
[root@Rocky8-Server~]$ scp /usr/share/doc/rsyslog/mysql-createDB.sql root@10.0.0.51:/root
# 切回数据库查看
[root@Rocky8-db~]$ ls
mysql-createDB.sql
[root@Rocky8-Server~]$ vim /etc/rsyslog.conf
#### MODULES ####
module(load="ommysql")
#### RULES ####
*.info :ommysql:10.0.0.51,Syslog,rsyslog,1
[root@Rocky8-Server~]$ systemctl restart rsyslog
- Rocky8 - db
[root@Rocky8-02~]$ hostnamectl set-hostname Rocky8-db
[root@Rocky8-db~]$ yum install -y mariadb-server
[root@Rocky8-db~]$ systemctl start mariadb
[root@Rocky8-db~]$ ss -ntlp | grep 3306
LISTEN 0 80 *:3306 *:* users:(("mysqld",pid=28464,fd=21))
[root@Rocky8-db~]$ mysql
# 导入数据
MariaDB [(none)]> source /root/mysql-createDB.sql
Query OK, 1 row affected (0.000 sec)
Database changed
Query OK, 0 rows affected (0.012 sec)
Query OK, 0 rows affected (0.007 sec)
# 创建 rsyslog 用户,设置网段 10.0.0.% ,密码 1
MariaDB [Syslog]> GRANT ALL ON Syslog.* TO 'rsyslog'@'10.0.0.%' IDENTIFIED BY '1';
Query OK, 0 rows affected (0.001 sec)
- 测试
[root@client~]$ logger "hello"
[root@Rocky8-db~]$ mysql
# 列出数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| Syslog |
| information_schema |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)
# 切换数据库
MariaDB [(none)]> use Syslog
# 列出表
MariaDB [Syslog]> show tables;
+------------------------+
| Tables_in_Syslog |
+------------------------+
| SystemEvents |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.000 sec)
MariaDB [Syslog]> SELECT COUNT(*) FROM SystemEvents;
+----------+
| COUNT(*) |
+----------+
| 14 |
+----------+
1 row in set (0.000 sec)
========================================================================================
# Client
[root@client~]$ logger "hello world"
# Server
[root@Rocky8-Server~]$ tail -f -n1 /var/log/messages
Sep 9 13:22:56 client root: hello world
# db
MariaDB [Syslog]> SELECT COUNT(*) FROM SystemEvents;
+----------+
| COUNT(*) |
+----------+
| 15 |
+----------+
1 row in set (0.001 sec)
安装图形化工具-LogAnalyzer
- 添加一台机器 Web 终端
yum -y install httpd php php-mysql php-gd
[root@web~]$ tar xf loganalyzer-3.6.5.tar.gz -C /var/www/html/
[root@web/var/www/html/loganalyzer-3.6.5]$ cp contrib/*.sh /var/www/html/loganalyzer-3.6.5/
[root@web/var/www/html]$ ln -s loganalyzer-3.6.5 log
[root@web/var/www/html/log]$ chmod a+x *.sh
[root@web/var/www/html/log/src]$ touch config.php
[root@web/var/www/html/log/src]$ chmod 666 config.php
[root@web/var/www/html/log/src]$ systemctl enable --now httpd
- 启动 http 服务
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 梦缘羲
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果