| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 日志切割-搭建远程日志收集服务器 -> 正文阅读 |
|
[系统运维]日志切割-搭建远程日志收集服务器 |
一、日志的切割在 linux 下的日志会定期进行滚动增加,我们可以在线对正在进行切割的日志进行指定大小的切割(动态),如果这个日志是静态的。比如没有应用向里面写内容。那么我们也可以用 split 工具进行切割;其中 Logrotate 支持按时间和大小来自动切分,以防止日志文件太大。 logrotate 配置文件主要有: /etc/logrotate.conf 以及 /etc/logrotate.d/ 这个子目录下的明细配置文件。 logrotate 的执行由 crond 服务调用的。 [root@tiehao ~]# vim /etc/cron.daily/logrotate #查看 logrotate 脚本内容 logrotate 程序每天由 cron 定时任务在指定的时间启动 日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,如果你要找出某一条可用信息: 海底捞针 日志切割: 当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志. 意思是把当前日志重命名之后重启 syslog 随之 syslog 又创建了 maillog 继续运行。而重命名的日志变成类似于 maillog-05-07 的形式。 1、logrotate 配置文件详解 centos7 系统编辑配置文件 [root@tiehao log]# vim /etc/logrotate.conf 说明:(全局参数) weekly : 每周执行切割,或者说每周执行一次日志切割 rotate: 表示日志切分后历史文件最多保存离现在最近的多少份 [r???te?t] 旋转 (rotate 4 保留最近 4 份日志,以前的,第 5,6,7 等等都删掉) create : ?指定新创建的文件的权限与所属主与所属组 dateext : 使用日期为后缀的切割文件 #可以去/var/log 目录下看看单独配置信息 /var/log/btmp { 指定的日志文件的名字和路径 missingok? 如果文件丢失,将不报错 monthly ??每月轮换一次 create 0664 root utmp 设置 btmp 这个日志文件的权限,属主,属组 minsize 1M 文件超过 1M 进行切割(分割),所以大家要知道它不一定每个月都会进行分割,要看这个文件大小来定 rotate 1 日志切分后历史文件最多保存 1 份,不含当前使用的日志 其它参数说明: monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。 rotate 5: 一次将存储 5 个归档日志。对于第六个归档,时间最久的归档将被删除。 compress: 在轮循任务完成后,已轮循的归档将使用 gzip 进行压缩。 delaycompress: 总是与 compress 选项一起用,delaycompress 选项指示 logrotate 不要将最 近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。 missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。 notifempty: 如果日志文件为空,轮循不会进行。 create 644 root root: 以指定的权限创建全新的日志文件,同时 logrotate 也会重命名原始日志文件。 postrotate/endscript: 在所有其它指令完成后,postrotate 和 endscript 里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。 /var/lib/logrotate/status 中默认记录 logrotate 上次轮换日志文件的时间。 2、使用 logrotate 进行 ssh 日志分割定义了 ssh 日志存储在/var/log/sshd 的基础上执行: [root@tiehao ~]# vim /etc/logrotate.d/sshd #创建一个 sshd 配置文件,插入内容: /var/log/sshd.log { missingok weekly create 0600 root root minsize 1M rotate 3 } [root@tiehao ~]#systemctl restart rsyslog [root@tiehao ~]# logrotate -d /etc/logrotate.d/sshd #预演,不实际轮询(切割) [root@tiehao ~]# logrotate -vf /etc/logrotate.d/sshd? #强制轮询(切割),也就是说即使轮循条件没有满足,也可以通过加-f 强制让 logrotate 轮循日志文件。 -v 显示指令执行过程 -f 强制执行 [root@tiehao ~]# ls /var/log/sshd* /var/log/sshd.log /var/log/sshd.log.1 /var/log/sshd.log.2 /var/log/sshd.log.3 再次查看日志文件大小,已经为 0 [root@tiehao ~]# ll -h /var/log/sshd.log -rw------- 1 root root 0 5 月 22 00:49 /var/log/sshd.log 3、使用 logrotate 进行 nginx 日志分割[root@tiehao nginx]# vim /etc/logrotate.d/nginx /usr/local/nginx/logs/*.log { #指定日志文件位置,可用正则匹配 daily #调用频率,有:daily,weekly,monthly 可选 rotate 5 #一次将存储 5 个归档日志。对于第六个归档,时间最久的归档将被删除。 sharedscripts #所有的日志文件都轮转完毕后统一执行一次脚本, postrotate #执行命令的开始标志 if [ -f /usr/local/nginx/logs/nginx.pid ]; then #判断 nginx 是否启动 /usr/local/nginx/sbin/nginx -s reload #让 nginx 重新加载配置文件,生成新的日志文件,如果 nginx 没启动不做操作 fi endscript #执行命令的结束标志 } 没有切割日志: 日志 150G 了。。。 二、配置远程日志服务器-实现日志集中的管理实验拓扑图: server 端配置 [root@tiehao ~]# vim /etc/rsyslog.conf ??#使用 TCP 协议方式,收集日志 改:19 #$ModLoad imtcp 20 #$InputTCPServerRun 514 为: 19 $ModLoad imtcp 20 $InputTCPServerRun 514 Centos8 把下面 2 行的注释去掉 24 #module(load="imtcp") # needs to be done just once 25 #input(type="imtcp" port="514") 注:使用 UDP 协议 速度快 不保证数据的完整,使用 TCP 协议 可靠.完整 [root@tiehao ~]# systemctl restart rsyslog #重新启动 rsyslog 查看服务监听的状态: [root@tiehao ~]# netstat -anlpt| grep 514 tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 45631/rsyslogd tcp6 0 0 :::514 :::* LISTEN 45631/rsyslogd 服务端验证: 在服务端关闭 selinux 和防火墙 [root@tiehao ~]# getenforce Enforcing [root@tiehao ~]# setenforce 0 #关闭 selinux 功能 [root@tiehao ~]#getenforce Permissive [root@tiehao ~]# systemctl stop firewalld [root@tiehao ~]# systemctl status firewalld [root@tiehao ~]# iptables -F #清空防火墙规则 client 端配置: 登录 tiehao64 客户端 [root@tiehao64 ~]# vim /etc/rsyslog.conf #在 90 行之后,插入 *.* @@192.168.1.63:514 #写入服务端的 ip 地址 注: *.* 所有类别和级别的日志; @@192.168.1.63:514 运端 tcp 协议的日志服务端的IP 和端口。 重启 rsyslog 服务 [root@tiehao64 ~]# systemctl restart rsyslog.service 服务端查看日志: [root@tiehao ~]# tail -f /var/log/messages | grep tiehao64 --color? ?#动态查看日志。 在客户端 tiehao64 进行测试 语法:logger 要模拟发送的日志 [root@tiehao64 ~]# logger "aaaaa" 在服务端查看日志 [root@tiehao ~]# tail -f /var/log/messages | grep tiehao64 --color #服务器端到查看消息 May 21 16:32:16 tiehao64 root: aaaaa 注: 总结:服务器使用 udp 协议,客户端使用的配置文件中这一行只能有一个@ *.* @192.168.1.64:514 服务器使用 tcp 协议,客户端使用的配置文件中这一行必须有两个@@ *.* @@192.168.1.64:514 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 21:09:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |