linux服务器日志转储

配置好项目之后,Apache,MySQL等会产生日志,为了方便管理,将其按照一定的间隔时间进行转储

1.Apache日志

在配置文件中加入以下两句:

CustomLog"|/usr/sbin/rotatelogs /var/log/httpd/access-80.log.%Y%m%d 86400 540"combined

ErrorLog"|/usr/sbin/rotatelogs /var/log/httpd/error-80.log.%Y%m%d 86400 540"

重启Apache之后就可以在/var/log/httpd下看到相应的日志

上面的语句中用到的/usr/sbin/rotatelogs是一个配合Apache管道日志功能使用的程序,

rotatelogs[ -l ] [ -f ] logfile rotationtime|filesizeM [ offset ]

参数解释:

-l:表示使用本地时间代替GMT时间作为时间基准

Logfile:表示加上基准时间就是日志文件名。

Rotationtime:表示日志文件滚动的以秒为单位的间隔时间

filesizeM:表示指定以filesizeM文件大小滚动,而不是按照时间或时差滚动

offset:表示相对于UTC的时差的分钟数。如果省略,则假定为"0"并使用UTC时间。比如,要指定UTC时差为"-5小时"的地区的当地时间,则此参数应为"-300"

例如下面的这个:

CustomLog"|/usr/sbin/rotatelogs /var/log/httpd/access-80.log.%Y%m%d 86400 540"combined

这个配置会建立/var/log/httpd/access-80.log文件,后面的%Y%m%d表示的是日志 启动时的当前系统时间,86400s表示的是24小时,即过了这些时间会产生一个新的日志文件,540表示9小时,时间偏移。

后面的combined表示的是复合格式

ErrorLog "|/usr/sbin/rotatelogs/var/log/httpd/error-80.log.%Y%m%d 5M"

表示error_log增长到5M的时候滚动该日志

2.MySQL日志

在MySQL的配置文件中,指定相应文件的存放位置

[mysqld]
log-bin=mysql-bin
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
log=/var/log/mysql/mysql.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# slow_queries
long-query-time=1
slow_query_log =/var/log/mysql/slow.log

[mysqld_safe]
log-error=/var/log/mysql/mysql_error.log
pid-file=/var/run/mysqld/mysqld.pid

编辑文件/etc/logrotate.d/mysqld,

/var/log/mysql/*.log {
        daily
        rotate 14
        missingok
        compress
        delaycompress
        notifempty
        create 0640 mysql root
        postrotate
        if [ -x /usr/bin/mysqladmin ]; then
                mysqladmin="/usr/bin/mysqladmin --defaults-file=/etc/mysql/myadm
in.cnf"
                if [ -z "`$mysqladmin ping 2> /dev/null`" ]; then
                        if ps cax | grep -q mysqld; then
                                exit 1
                        fi
                else
                        $mysqladmin flush-logs
                fi
        fi
        endscript
}

使用logrotate/etc/logrotate.conf –f使其生效,然后在/var/log/mysql(所指定的目录下就可以看到对应格式的日志)

参数的含义:

compress:通过gzip压缩转储以后的日志,

nocompress:不需要压缩时使用这个参数

copytruncate:用于还在打开中的日志文件,把当前的日志备份截断

nocopytruncate:备份日志文件但是不截断

create mode ownergroup:转储文件,使用指定的文件模式创建新的日志文件

nocreate :不创建新的日志文件

delaycompress:和 compress 同时使用时,转储的日志文件到下一次转储的时候才压缩

nodelaycompress:覆盖 delaycompress 选项,转储同时压缩

errors address:转储的时候产生的错误信息发送到指定的Email地址

ifempty:即使是空文件也会转储,这是logrotate 的缺省选项

notifempty:如果是空文件的话,不进行转储

mail address:把转储的日志文件发送到指定的E-mail

nomail:转储时不发达送日志文件                                     daily:指定转储周期为每天                                          weekly:指定转储周期为每周

monthly :指定转储周期为每月

rotate count:指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份

size size:当日志文件到达指定的大小时才转储,Size可以指定bytes(缺省)以及KB或者MB

dateext:在转储的日志文件后面添上日期作为后缀。例如:如果日志名称为:log.则转储后为:log-20140929。如果目录下已经有了一个名称为log-20140929的文件,那么转储就会失败。|

参考链接: http://zhumeng8337797.blog.163.com/blog/static/10076891420121951235106/

时间: 2024-10-05 23:52:18

linux服务器日志转储的相关文章

Linux服务器 -- 日志篇

志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹.日志主要的功能有:审计和监测.他还可以实时的监测系统状态,监测和追踪侵入者等等.正因为如此,抚琴煮酒特的将它整理成一篇比重跟硬件篇.网络篇并列的文章,作为<明明白白你的Linux服务器>系列的第三篇,希望大家能从中学习到对自己有用的东西. 一.配置syslog(gyl4802959同学撰写) 目前,linux依旧使用syslogd作为日志监控进程,对其进行必要的配置

Linux服务器日志备份到本地

1.确定线上服务器的日志文件名称和路径 2.一台本地服务器能连接公网,创建一个日志账户,设置密码 3.线上服务器要求: a.确定是否已安装sshpass包 [[email protected] sh]# rpm -qa|grep sshpass sshpass-1.06-1.el7.x86_64 如不存在即安装yum install -y sshpass b.写脚本传送 Such as: [[email protected] ~]# cat logbak.sh #!/bin/bash cd /o

:Linux 系统日志管理 日志转储

Linux日志服务器设置 使用“@IP:端口”或“@@IP:端口”的格式可以把日志发送到远程主机上. 假设需要管理几十台服务器,每天的重要工作就是查看这些服务器的日志,可是每台服务器单独登录,并且查看日志非常烦琐,此时可以把几十台服务器的日志集中到一台日志服务器上吗?这样每天只要登录这台日志服务器,就可以查看所有服务器的日志,. 设置过程 假设服务器端的服务器 IP 地址是 192.168.0.210,主机名是 localhost.localdomain:客户端的服务器 IP 地址是 192.1

Linux集中日志服务器rsyslog

Linux上通常可以通过rsyslog来实现系统日志的集中管理,这种情况下通常会有一个日志服务器,然后每个机器配置自己日志通过rsyslog来写到远程的日志服务器上. 这里假定有两台服务器,一台作为系统日志的服务器(比如机器名logmaster),另一台作为日志的客户端(比如机器名logclient) 日志服务器配置 首先修改log master机器上的/etc/rsyslog.conf文件,将其中下面四行的注释取消 $ModLoad imudp $UDPServerRun 514 $ModLo

在linux服务器下日志提取的python脚本(实现输入开始时间和结束时间打包该时间段内的文件)

1.需求:近期在提取linux服务器下的日志文件时总是需要人工去找某个时间段内的日志文件,很是枯燥乏味,于是乎,我就想着用python结合linux指令来写一个日志提取的脚本,于是就有了以下脚本文件: 2.代码:getlogzip.py 1 import time,sys,os 2 3 filename1 = time.strftime('%m%d',time.localtime(time.time())) 4 filename2 = "log" 5 servername = inpu

Linux服务器限制ssh登录,查看登录日志

网络上的服务器很容易受到攻击,最惨的就是被人登录并拿到root权限.有几个简单的防御措施: 1. 修改ssh服务的默认端口 ssh服务的默认端口是22,一般的恶意用户也往往扫描或尝试连接22端口.所以第一步就是修改这个默认端口 打开/etc/ssh/sshd_config,找到 Port 22 然后将22修改为其它没有被占用的端口,如1022.最好在1-1024之间,防止与用户进程端口冲突. 然后重启sshd即可 sudo /etc/init.d/ssh restart 2. 限制IP 首先修改

linux服务器远程日志统一管理

远程日志配置 1.服务端 (1)编辑日志文件   vim /etc/rsyslog.conf //重启日志服务   /etc/init.d/rsyslog restart (2)在/usr/share/doc/rsyslog-5.8.10/下递归寻找所有包含fromhost信息的文件 grep -r fromhost /usr/share/doc/rsyslog-5.8.10/ (3)在存放自己日志文件的目录下创建一个名字将并已复制路径ip粘贴过来vim /etc/rsyslog.d/feiyu

Linux服务器程序规范

除了网络通信外,服务器程序还必须考虑许多其他细节问题,零碎,但基本上时模板式的. ---引 Linux服务器程序一般以后台形式运行.后台程序又称守护进程.它没有控制终端,因而也不会意外接受用户输入.守护进程的父进程一般是init进程(pid=1). Linux服务器程序通常有一套日志系统,它至少能输出日志到文件,有的高级服务器可以输出日志到专门的UDP服务器.大部分后台进程都在/var/log下有自己的日志目录. Linux服务器程序一般以某个专门的非root身份运行.mysqld, httpd

如何检查linux服务器是否被入侵

当服务器被没有经验攻击者或者自动攻击程序入侵了的话,他们往往会消耗 100% 的资源.他们可能消耗 CPU 资源来进行数字货币的采矿或者发送垃圾邮件,也可能消耗带宽来发动 DoS 攻击. 因此出现问题的第一个表现就是服务器 “变慢了”.这可能表现在网站的页面打开的很慢,或者电子邮件要花很长时间才能发送出去. 那么你应该查看那些东西呢? 检查 1 - 当前都有谁在登录? 你首先要查看当前都有谁登录在服务器上.发现攻击者登录到服务器上进行操作并不复杂. 其对应的命令是 w.运行 w 会输出如下结果: