rsync同步Nginx日志遇到问题总结
一、目的
将nginx 日志通过普通用户利用rsync公钥认证的方式实时同步到本地服务器上,之后使用elk程序进行处理。
二、遇到问题及解决方法思路
问题1.文件权限:nginx 的日志默认权限如下:
[root@elk ~]# ll /var/log/nginx/access.log
-rw-r----- nginx adm Sep : /var/log/nginx/access.log
我新建的是普通用户,标准的用户组,用rsync同步时,报个错误,说是没有该文件的权限
receiving file list ...
file to consider
rsync: send_files failed to open "/var/log/nginx/access.log": Permission denied ()
问题1解决方法:于是我直接修改了该文件的权限为其它用户也可读。修改后的权限如下:
[root@elk ~]# ll /var/log/nginx/access.log
-rw-r--r-- nginx adm Sep : /var/log/nginx/access.log
上述方法修改后,普通帐号是可以读取该日志的。rsync同步到本地也没有问题
问题2.第二天查看,发现rsync 同步计划有失败错误的信息。检查后发现文件权限竟然又变成之前的640了。
查了nginx相关的资料:关于日志切割的任务计划、日志默认权限、以及linux 用户组的权限,在下一节将主要说明。
问题2解决方法:将之前用于同步的普通用户加入一个附属组,即adm 组中。或者重新建立一个权限合适(对系统日志只读、并附加的adm组)的用户,如下:
[root@elk ~]# useradd -m -g systemd-journal -G adm logersync
三、涉及知识点
1.nginx日志logrotate 程序自动切割:
nginx 的日志文件,每天都会自动分割,/var/log/nginx/*.log,并自动gzip打包存放在和日志同级目录下。
先看下logrotate程序中nginx 分割的配置文件
[root@elk ~]# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
默认参数解释:
- daily:按照每日进行日志切割(weekly、monthly)
- missingok:日志不存在时忽略错误
- rotate:切割52次后,然后会删除最早的
- compress:使用gzip压缩切割后的日志
- delaycompress:如果一个日志还正在写入或被程序使用,分割后将会稍后压缩。
- notifempty:不切割空的文件
- create 640 nginx adm:设置切割后新的日志文件权限是640,属主是nginx,属组是adm(这里就是我第的二个问题原因所在)
- sharedscripts:所有的log文件执行切割完成后,在执行下面的脚本
- postrotate:下面[]号中的内容,是向nginx主进程发送一个USR1的信号,告诉nginx,日志已经切割,你应该使用新的文件。
- endsrciprs:脚本结束
nginx
参考资料:
https://zh.wikipedia.org/wiki/SIGUSR1%E5%92%8CSIGUSR2
http://drumcoder.co.uk/blog/2012/feb/03/nginx-and-logrotate/
2.用户所在组权限问题
添加用户时可以指定组,如下:
[root@elk ~]# useradd -g adm testuser1
[root@elk ~]# id testuser1
uid=(testuser1) gid=(adm) groups=(adm)
上面加了一个testuser1用户并指定组为adm组。创建用户时如果不指定组,将会自动创建一个与用户名同名的组名及gid号
还可以给用户添加多个组。这样就拥有其它组下的权限了,如:
[root@elk ~]# gpasswd -a testuser1 users
Adding user testuser1 to group users
[root@elk ~]# id testuser1
uid=(testuser1) gid=(adm) groups=(adm),(users)
上面是将testuser1 也附加到users组中。
四、总结
主要涉及到了nginx服务的日志切割的默认。
参考文章:
https://wiki.archlinux.org/index.php/Users_and_groups_(简体中文)
rsync同步Nginx日志遇到问题总结的更多相关文章
- 实现Rsync同步Nginx前端配置
近期,由于我们的阿里前端服务器频频受到恶意的流量攻击,导致前端NGINX进入黑洞而无法正常访问公司网站. 按之前的预计方法,采用加速乐及备用全配置前端的作法,将恶意短时流量攻击的损失时间降到最短.现将 ...
- 同步nginx日志到s3 bulket
1.此处用的是增量同步 #!/bin/bash rm -rf /var/log/nginx/access.log.*.* local_host="`hostname --i`" a ...
- Nginx日志导入到Hive0.13.1,同步Hbase0.96.2,设置RowKey为autoincrement(ID自增长)
---------------------------------------- 博文作者:迦壹 博客地址:Nginx日志导入到Hive,同步Hbase,设置RowKey为autoincrement( ...
- 09、日志轮转+rsync同步
logrotate - rotates, compresses, and mails system logs 日志轮转 rotate 日志切割 轮转 切割 备份 归档 常见 ...
- Linux rsync 同步实践
目录[-] 1. rsync 同步的大致思路 2. rsync的安装 3. rsync的配置 4. rsync的基本操作 服务器端启动 注2. 实时同步 注3. rsync通过linux防火墙 公司网 ...
- Rsync同步部署web服务端配置
Rsync同步部署web服务端配置 1,参数详解: -v, --verbose 详细模式输出. -q, --quiet 精简输出模式. -c, --checksum 打开校验开关,强制对文件传输进行校 ...
- 用 JuiceFS 备份 Nginx 日志可以这么简单
在我们线上的生产环境中要备份的东西很多,各种服务日志.数据库数据.用户上传数据.代码等等.用 JuiceFS 来备份可以节省你大量时间,我们会围绕这个主题写一系列的教程,整理出一套最佳实践,方便大家. ...
- 运维工作中常用到的几个rsync同步命令
作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync. 下面结合本人近几年运维工作中对这一 ...
- rsync同步工具学习笔记
rsync同步工具 1.rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于unix/linux/windows等多种操作 ...
随机推荐
- 解决ASP.NET在IE10中Session丢失问题【转】
今天发现在IE10中登录我公司的一个网站时,点击其它菜单,页面总会自动重新退出到登录页,后检查发现,IE10送出的HTTP头,和.AUTH Cookie都没问题,但使用表单验证机制(FormsAuth ...
- Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...
- Codeforces Round #383 (Div. 2) 题解【ABCDE】
Codeforces Round #383 (Div. 2) A. Arpa's hard exam and Mehrdad's naive cheat 题意 求1378^n mod 10 题解 直接 ...
- [转] IE6中请求莫名中断
这两天碰到的问题,IE6下某个js生成的a节点,设置了href="javascript:;",点击时触一个ajax请求,但在IE6下就是无法执行succese里的内容,所以就用se ...
- 将w3cplus网站中的文章页面提取并导出为pdf文档
最近在看一些关于CSS3方面的知识,主要是平时看到网页中有很多用CSS3实现的很炫的效果,所以就打算系统的学习一下.在网上找到很多的文章,但都没有一个好的整理性,比较凌乱.昨天看到w3cplus网站中 ...
- leveldb - sstable格式
整体上,sstable文件分为数据区与索引区,尾部的footer指出了meta index block与data index block的偏移与大小,data index block指出了各data ...
- Django 源码小剖: 更高效的 URL 调度器(URL dispatcher)
效率问题 django 内部的 url 调度机制说白了就是给一张有关匹配信息的表, 这张表中有着 url -> action 的映射, 当请求到来的时候, 一个一个(遍历)去匹配. 中, 则调用 ...
- EXCELL中怎么将两列数据对比,找出相同的和不同的数据?
假设你要从B列中找出A列里没有的数据,那你就在C1单元格里输入“=IF(ISNA(VLOOKUP(B1,A:A,1,0)),"F","T")”显示T就表示有,F ...
- jquery.pjax.js bug问题解决集锦
jquery.pjax 是一个很好的局部刷新插件,但实际应用过程是还是会有很多小问题,部分问题解决如下: 1.pjax 局部加载时候,IE 存在缓存问题,很容易理解,pjax是通过jquery的aja ...
- C++读取mysql中utf8mb4编码表数据乱码问题及UTF8转GBK编码
数据库编码为utf8,但是由于某些表的一些字段存储了emoji字符,表采用了utf8mb4编码,默认情况下在C++代码中读出的中文字段值都变成了乱码. 解决方法为,在进行数据库查询前,在C++中执行一 ...