`
flex_莫冲
  • 浏览: 1092303 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

apache logs rotate to s3

阅读更多
使用s3cmd
http://www.dowdandassociates.com/blog/content/howto-install-aws-cli-amazon-simple-storage-service-s3-s3cmd/

http://www.dowdandassociates.com/blog/content/howto-rotate-logs-to-s3/

https://www.lustforge.com/2012/07/15/logrotate-apache-logs-to-amazon-s3/

s3cmd:http://s3tools.org/
s3cmd  使用说明:
http://s3tools.org/s3cmd-howto

aws ec2(ami)下安装s3cmd
git clone https://github.com/s3tools/s3cmd.git
cd s3cmd
sudo python setup.py install

ubuntu 下安装s3cmd
sudo apt-get install s3cmd

http://tecadmin.net/install-s3cmd-manage-amazon-s3-buckets/


配置
s3cmd --configure

新建bucket
s3cmd mb s3://logix.cz-test

列出所有bucket
s3cmd ls

列出某个bucket的内容
s3cmd ls s3://logix.cz-test

上传文件到bucket
s3cmd put addressbook.xml s3://logix.cz-test/addrbook.xml

下载文件到本地
s3cmd get s3://logix.cz-test/addrbook.xml addressbook-2.xml

删除bucket(只能删除空的bucket,有文件删除不了)
s3cmd rb s3://logix.cz-test

删除文件
s3cmd del s3://logix.cz-test/addrbook.xml s3://logix.cz-test/storage.jpg

同步文件到S3
http://s3tools.org/s3cmd-sync
将httpd目录下的文件都同步到s3
s3cmd sync /var/log/httpd/* s3://your_bucket_name/httpd/

------------------------------
下面是logrotate的介绍
logrotate

http://huoding.com/2013/04/21/246
http://www.codeceo.com/article/linux-logrotate-usage.html
http://www.linuxcommand.org/man_pages/logrotate8.html

logrotate 的配置文件是 /etc/logrotate.conf  主要参数如下表:

   参数                         功能
   compress                     通过gzip 压缩转储以后的日志
   nocompress                   不需要压缩时,用这个参数
   copytruncate                 用于还在打开中的日志文件,把当前日志备份并截断
   nocopytruncate               备份日志文件但是不截断
   create mode owner group      转储文件,使用指定的文件模式创建新的日志文件
   nocreate                     不建立新的日志文件
   delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
   nodelaycompress              覆盖 delaycompress 选项,转储同时压缩。
   errors address               专储时的错误信息发送到指定的Email 地址
   ifempty                      即使是空文件也转储,这个是 logrotate 的缺省选项。
   notifempty                   如果是空文件的话,不转储
   mail address                 把转储的日志文件发送到指定的E-mail 地址
   nomail                       转储时不发送日志文件
   olddir directory             转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
   noolddir                     转储后的日志文件和当前日志文件放在同一个目录下
   prerotate/endscript          在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
   postrotate/endscript         在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
   daily                        指定转储周期为每天
   weekly                       指定转储周期为每周
   monthly                      指定转储周期为每月
   rotate count                 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
   tabootext [+] list           让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
   size size                    当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

如果要同步自定义路径下的log文件,可以自己在/etc/logrotate.d/目录下新建一个文件,输入内容,postrotate的同步脚本也可以放在sh文件中

/home/web/message_center/log/* {
        hourly
        su www-data
        missingok
        rotate 5
        nocompress
        notifempty
        size 1k
        sharedscripts
        postrotate
               /home/web/message_center/sync.sh
        endscript
}




手动执行logrotate

sudo logrotate -f  /etc/logrotate.d/httpd (如果带了-d是模拟演示。不会实际执行)
参考:
http://zylhz.com/?p=120

手动执行logrotate
  logrotate可以在任何时候从命令行手动调用。

  要调用为/etc/lograte.d/下配置的所有日志调用logrotate:

# logrotate /etc/logrotate.conf

  要为某个特定的配置调用logrotate:

# logrotate /etc/logrotate.d/nginx-access

预先执行logrotate
   排错过程中的最佳选择是使用‘-d’选项以预演方式运行logrotate。要进行验证,不用实际轮循任何日志文件,可以模拟演练日志轮循并显示其输出。

# logrotate -d /etc/logrotate.d/nginx-access

强制执行logrotate
   即使轮循条件没有满足,我们也可以通过使用‘-f’选项来强制logrotate轮循日志文件,‘-v’参数提供了详细的输出。

# logrotate -vf /etc/logrotate.d/nginx-access

Logrotate日志信息
   logrotate自身的日志通常存放于/var/lib/logrotate/status目录。如果处于排障目的,我们想要logrotate记录到任何指定的文件,我们可以指定像下面这样从命令行指定。

# logrotate –s /var/log/logrotate-status -vf /etc/logrotate.d/nginx-access




cron 说明
http://cering.github.io/2015/11/02/%E8%BD%AC-Linux%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1crontab-cron-d%E4%BB%8B%E7%BB%8D/

发现cron 有执行,但是sync没成功, 通过查看系统email,
sudo cat /var/spool/mail/root
发现了问题所在,/bin/sh: /home/log/s3.log: No such file or directory
不存在这个文件。怎么会抛出这个文件呢?原来是在crontab中设置了输入日志路径是/home/log/s3.log。手动创建这个路径和文件,并赋予权限。

再次执行,出了这个/bin/sh: /home/s3_sync_httpd.sh: Permission denied 错误,给它权限。再次执行
ERROR: /root/.s3cfg: None
ERROR: Configuration file not available.
ERROR: Consider using --configure parameter to create one.

出了这个错误。手动执行sh /home/s3_sync_httpd.sh是正常同步的。而在crontab中有这个问题。

在做s3cmd --configure 的时候,生成了一个配置文件/home/ec2-user/.s3cfg

New settings:
  Access Key: xxx
  Secret Key: xxx
  Default Region: us-west-2
  Encryption password: nmg
  Path to GPG program: /usr/bin/gpg
  Use HTTPS protocol: True
  HTTP Proxy server name:
  HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] Y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...
Success. Encryption and decryption worked fine :-)

Save settings? [y/N] Y
Configuration saved to '/home/ec2-user/.s3cfg'

用ls /home/ec2-user .* -l 可以列出隐藏文件。这个配置文件应该是在/home/ec2-user 下而不是在/root/下。因此。我们在sh文件中要指定运行的默认路径
#!/bin/bash
/usr/local/bin/s3cmd sync /var/log/httpd/* s3://xxx/s3_httpd/

在重启下service crond restart

终于成功了。正常上传,上传日志也输出到/home/log/s3.log 了

----------------
message center 不适用logrotate的几点说明:
1 logrotate会将log文件截断并重命名到old log路径下,若这样做的话,message center不会再重新生成log文件,导致log丢失
2 不會迭代處理子文件夾的log

s3cmd同步文件夹不需要自己处理文件是否更新的问题。s3cmd本身支持如果文件更新了才上传的判断。但是不要直接写某个文件名称。例如
/usr/local/bin/s3cmd sync ${sync_file_path} s3://${bucket_name}/xxx/${ip}/a.log >> ./sync_log.log


在旧的s3cmd版本(s3cmd version 1.1.0-beta3)中有无写a.log的效果是一样的,都会判断文件是否更新过。(通过size判断)
但是在新版本(s3cmd version 1.6.1)如果带了a.log则不论文件有无更新,一定会上传的。如果没有带a.log,则会判断是否更新(可以设置通过md5判断是否更新,当然速度会慢了),更新了才会上传

s3cmd 命令行参数说明:
http://s3tools.org/usage
分享到:
评论

相关推荐

    Apache.Logs.Viewer.v.5.39.Patch-URET.zip

    Apache Logs Viewer是一款专门用于分析Apache服务器日志的实用工具,版本号为5.39,本次更新包含了 Patch-URET 的修复和改进。这个软件能够帮助IT管理员和开发者有效地理解和解析Apache服务器生成的日志文件,从中...

    apache mod_log_rotate

    此apache mod_log_rotate 是win32下vc9版的apache 日志文件管理工具。 使用: 复制mod_log_rotate.so到 Apache2/modules 确保你的系统安装了 Visual C++ 2008 Redistributable (可从这里下载:) ...

    Laravel开发-laravel-logs-rotate

    `laravel-logs-rotate` 是一个针对Laravel的特性,它涉及到如何管理和处理日志文件的滚动与压缩,以保持日志数据的有序性和存储效率。下面将详细阐述这个主题。 ### 1. 日志系统 Laravel内置了一个强大的日志系统...

    ApacheLogsView

    ApacheLogsView破解,ApacheLogsView破解,ApacheLogsView破解,

    Windows下64位Apache-2.4.6

    如果遇到问题,查看错误日志(通常位于"logs"目录下的"error.log")会很有帮助。Apache也提供了丰富的文档资源,可以帮助解决常见的配置和运行时问题。 通过以上步骤,你可以在Windows 64位环境下成功安装和配置...

    darks-logs 1.0.7

    darks-logs可能是遵循某种开源许可证,如Apache License 2.0或MIT License,允许开发者在遵守特定条件的情况下自由使用和修改代码。 3. **README.md**:这是一个Markdown格式的文件,通常包含项目的基本信息、安装...

    apache服务器安装程序 apache_2.2.6-win32-x86

    - Apache的日志文件默认位于`%SystemDrive%\Apache2.2\logs`目录下,包括`access.log`(记录客户端请求)和`error.log`(记录错误信息)。通过分析这些日志,可以监控服务器状态,排查问题。 5. **其他扩展与集成*...

    Apache Web日志Hive实验数据

    LOCATION '/path/to/apache_log.txt'; ``` 接下来,我们可以对这个日志数据执行各种统计分析操作。例如: - 统计访问量最高的页面: ```sql SELECT url, COUNT(*) as visit_count FROM apache_logs GROUP BY url ...

    Apache_2.2.11与Trac构建

    CustomLog /path/to/your/trac/logs/access.log combined ``` 3. 保存配置并重启 Apache 服务,以应用新的配置。 现在,你应该可以在浏览器中访问 `http://your.trac.domain/`,看到你的 Trac 系统了。在 Trac 中...

    apache 2.2.29-x64

    日志文件通常位于logs目录下。 7. **readme_first.html**:这个文件很可能是提供给用户的初始指南,里面可能包含了一些安装、配置和使用Apache 2.2.29-x64的重要信息和建议。 在使用Apache 2.2.29-x64时,确保遵循...

    Linux apache环境多域名配置

    ### Linux Apache环境多域名配置详解 #### 一、前言 在互联网开发中,单一服务器部署多个项目并分别对应不同的域名是一种常见的需求。这不仅能够提高服务器资源的利用率,还能帮助开发者更好地组织和管理不同类型...

    log4j:ERROR Failed to rename错误解决办法

    在Tomcat6下使用Log4j记录日志,天创建新日志文件时(日志文件设置为:org.apache.log4j.DailyRollingFileAppender)报: log4j:ERROR Failed to rename错误; 网上查找了下原因,大概意思是日志文件始终被占有,所以...

    Apache服务安全加固1

    Apache 服务安全加固指南 Apache 服务安全加固是非常重要的,以下是相关知识点的详细说明: 一、账号设置 Apache 服务需要以专门的用户帐号和组运行,以避免使用root权限运行 Apache,从而提高安全性。为此,...

    apache 2.4.10 win32位版本

    2. 错误日志与访问日志:在logs目录下,分别记录了服务器运行时的错误信息和客户端访问记录。 3. 性能监控:使用工具如ApacheBench进行压力测试,评估服务器性能。 五、安全与最佳实践 1. 定期更新Apache以获取...

    免安装apache 64位

    这个压缩包包含了Apache服务器的所有核心组件和必要的配置文件,如httpd.exe(服务器主程序)、conf目录(存储配置文件)以及logs目录(存放日志文件)等。 首先,你需要下载这个压缩包并解压到你希望Apache运行的...

    Apache-Tomcat-7.0.68

    - `logs`:日志文件存储的地方,用于调试和监控。 - `webapps`:默认的Web应用程序部署目录,`.war`文件或已展开的目录可以直接放入此目录启动应用。 - `work`:存放Tomcat在运行时生成的临时文件和编译后的JSP...

    Apache+SVN+Trac

    【Apache+SVN+Trac】是一个常见的项目管理和版本控制系统组合,主要用于软件开发团队协作。Apache 作为Web服务器,Subversion (SVN) 提供版本控制功能,而 Trac 则是一个集成的项目管理工具,提供了缺陷跟踪、文档...

    Apache+Tomcat环境搭建

    - **设置日志**:`JkLogFile logs/mod_jk.log` 设置日志文件位置,`JkLogLevel info` 设置日志级别为信息级别。 - **配置虚拟主机**:`ServerAdmin localhost` 指定服务器管理员,`DocumentRoot` 设置网站根目录,...

Global site tag (gtag.js) - Google Analytics