IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 19:19:35  更:2022-04-22 19:20:15 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码