日志分割
一、企业服务器中的日志文件过大会带来下面的问题:
1、查询过大的日志文件对于开发和运维十分不方便,特别是加班人很累的情况下更加雪上加霜;
2、很久以前的日志文件几乎没有价值,但是手工清理又太过繁琐。
这时候就需要一种解决方案可以自动来做日志分割,分割后的日志不仅“干净”,也便于实现日志定时清理。
实验
二、编译安装Nginx服务
1、远程获取Windows上的源码包,并挂载到Linux上
[[email protected] ~]# smbclient -L //192.168.235.1
Enter SAMBA\root‘s password:
Sharename Type Comment
--------- ---- -------
LNMP Disk
[[email protected] ~]# mkdir /abc
[[email protected] ~]# mount.cifs //192.168.235.1/LNMP /abc
Password for [email protected]//192.168.235.1/LNMP:
[[email protected] ~]# ls /abc
Discuz_X3.4_SC_UTF8.zip nginx-1.12.0.tar.gz php-7.1.10.tar.bz2
mysql-boost-5.7.20.tar.gz nginx-1.12.2.tar.gz php-7.1.20.tar.gz
2、解压缩包
[[email protected] ~]# cd /abc
[[email protected] abc]# tar zxvf nginx-1.12.0.tar.gz -C /opt
[[email protected] abc]# ls /opt
nginx-1.12.0 rh
3、安装编译组件包
[[email protected] abc]# cd /opt
[[email protected] opt]# yum install -y > gcc \ //C语言
> gcc-c++ \ //c++语言
> pcre-devel \ //pcre语言工具
> zlib-devel //压缩函数库
4、创建程序用户并配置Nginx服务相关组件
[[email protected] opt]# useradd -M -s /sbin/nologin nginx
//创建程序用户nginx,并限定其不可登录终端
[[email protected] opt]# cd nginx-1.12.0/
[[email protected] nginx-1.12.0]# ./configure \
//配置nginx
> --prefix=//usr/local/nginx \
//指定安装路径
> --user=nginx //指定用户名
> --group=nginx //指定用户所属组
> --with-http_stub_status_module
//安装状态统计模块
5、编译与安装
[[email protected] nginx-1.12.0]# make && make install
6、优化Nginx服务启动脚本,并建立命令软链接
[[email protected] nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
//创建nginx服务命令软链接到系统命令
[[email protected] nginx-1.12.0]# systemctl stop firewalld.service
//关闭防火墙
[[email protected] nginx-1.12.0]# setenforce 0
//关闭增强型安全功能
[[email protected] nginx-1.12.0]# nginx
//输入nginx 开启服务
[[email protected] nginx-1.12.0]# netstat -ntap | grep 80 //查看服务的80 端口,显示已开启
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7520/nginx: master
7、systemctl管理nginx脚本
[[email protected] ~]# vim /lib/systemd/system/nginx.service ##创建配置文件
[Unit]
Description=nginx ##描述
After=network.target ##描述服务类型
[Service]
Type=forking ##后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid ##PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx ##启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID ##根据PID重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID ##根据PID终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[[email protected] ~]# chmod 754 /lib/systemd/system/nginx.service ##设置执行权限
[[email protected] ~]# systemctl stop nginx.service ##关闭nginx
[[email protected] ~]# systemctl start nginx.service ##开启
8、编写日志分割脚本
[[email protected] nginx-1.12.0]# vim fenge.sh
#!/bin/bash
#Filename:fengge.sh ##描述信息
d=$(date -d "-1 day" "+%Y%m%d" ) ##显示系统一天前的时间,并生成一个日期字符串,如"2019.11.11"
logs_path="/var/log/nginx" ##日志分割后的存放路径
pid_path="/usr/local/nginx/logs/nginx.pid" ##Nginx的进程号文件
[ -d $logs_path ] || mkdir -p $logs_path ##判断是否存在日志分割存放路径,如不存在则创建该路径
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
##移出原有路径下的访问日志生成到创建的路径下,并以日期命名生成一个日志文件
kill -USR1 $(cat $pid_path) ##结束此前的进程号,用以生成新的进程号
find $logs_path -mtime +30 | xargs rm -rf ##寻找路径下30天前的文件并删除,xargs用于将前面命令的处理结果作为管道符号后的命令的参数
[[email protected] nginx-1.12.0]# chmod +x fenge.sh ##授予脚本执行权限
[[email protected] nginx-1.12.0]# ./ fenge.sh
[[email protected] nginx-1.12.0]# ls /var/log/nginx
test.com-access.log-20191112 ##查看指定路径下生成的的日志分割文件
[[email protected] nginx-1.12.0]# ls /usr/local/nginx/logs
access.log error.log nginx.pid ##查看Nginx日志目录,可见又自动生成了一个access.log日志
此方法大大加强了对企业服务器日志管理工作,提高了效率!!
原文地址:https://blog.51cto.com/14475593/2450135
时间: 2024-11-08 00:23:58