sersync+rsync+inotify-tools集中日誌,實時同步

用sersync+rsync+inotify-tools實時監控文件變化,實時同步,將多臺業務主機日誌集中到一臺服務器,便於研發實時grep、awk查看。
A服務器: 收集同步過來的文件
B服務器: 將產生的業務日誌實時同步到A上php

平臺:centos 7.4 x86_64express

A服務器配置
yum install -y epel-release
yum install -y rsynccentos

cp /etc/rsyncd.conf /etc/rsyncd.conf.bk服務器

vi /etc/rsyncd.conf
uid=root
gid=root
#最大鏈接數
max connections=36000
#默認爲true,修改成no,增長對目錄文件軟鏈接的備份 
use chroot=no
#定義日誌存放位置
log file=/var/log/rsyncd.log
#忽略無關錯誤
ignore errors = yes
#設置rsync服務端文件爲讀寫權限
read only = no 
#認證的用戶名與系統賬戶無關在認證文件作配置,若是沒有這行則代表是匿名
auth users = rsync
#密碼認證文件,格式(虛擬用戶名:密碼)
secrets file = /etc/rsync.pass
#這裏是認證的模塊名,在client端須要指定,能夠設置多個模塊和路徑
[ultron]
#自定義註釋
comment  = backend ultron
#B服務器同步過來的文件存放的路徑
path=/logcenter/backend/ultron
[inside]
comment  = backend inside
path=/logcenter/backend/insidedom

#建立rsync認證文件  能夠設置多個,每行一個用戶名:密碼,注意中間以「:」分割
echo "rsync:123456" > /etc/rsync.passssh

#設置文件全部者讀取、寫入權限
chmod 600 /etc/rsyncd.conf  
chmod 600 /etc/rsync.pass  socket

#啓動服務器B上的rsync服務
#rsync --daemon -v
rsync --daemonide

#監聽端口873
netstat -an | grep 873ui

#設置rsync爲服務啓動項(可選)
echo "/usr/local/bin/rsync --daemon" >> /etc/rc.localurl

#要 Kill rsync 進程,不要用 kill -HUP {PID} 的方式重啓進程,如下3種方式任選
#ps -ef|grep rsync|grep -v grep|awk '{print $2}'|xargs kill -9
#cat /var/run/rsyncd.pid | xargs kill -9
pkill rsync
#再次啓動
/usr/local/bin/rsync --daemon

B服務器上的配置
yum install -y epel-release
yum install -y rsync inotify-tools
cd /alidata/server
tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86 sersync
cd sersync
#配置下密碼文件,由於這個密碼是要訪問服務器A須要的密碼和上面服務器A的密碼必須一致
echo "123456" > user.pass
chmod 600 user.pass

vi confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
 <host hostip="localhost" port="8008"></host>
 <debug start="true"/>
 <fileSystem xfs="false"/>
 <filter start="false">
 <exclude expression="(.*)\.php"></exclude>
 <exclude expression="^data/*"></exclude>
 </filter>
 <inotify>
 <delete start="true"/>
 <createFolder start="true"/>
 <createFile start="false"/>
 <closeWrite start="true"/>
 <moveFrom start="true"/>
 <moveTo start="true"/>
 <attrib start="false"/>
 <modify start="false"/>
 </inotify>
 
 <sersync>
 <localpath watch="/var/www/runtime/log"> <!-- 這裏填寫服務器B要同步的文件夾路徑-->
 <remote ip="8.8.8.8" name="ultron"/> <!-- 這裏填寫服務器A的IP地址和模塊名-->
<remote ip="8.8.8.8" name="inside"/> <!-- 這裏填寫服務器A的IP地址和模塊名-->
 <!--<remote ip="192.168.28.39" name="tongbu"/>-->
 <!--<remote ip="192.168.28.40" name="tongbu"/>-->
 </localpath>
 <rsync>
 <commonParams params="-artuz"/>
 <auth start="true" users="rsync" passwordfile="/alidata/server/sersync/user.pass"/> <!-- rsync+密碼文件 這裏填寫服務器B的認證信息-->
 <userDefinedPort start="false" port="874"/><!-- port=874 -->
 <timeout start="false" time="100"/><!-- timeout=100 -->
 <ssh start="false"/>
 </rsync>
 <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--><!-- 修改失敗日誌記錄(可選)-->
 <crontab start="false" schedule="600"><!--600mins-->
 <crontabfilter start="false">
 <exclude expression="*.php"></exclude>
 <exclude expression="info/*"></exclude>
 </crontabfilter>
 </crontab>
 <plugin start="false" name="command"/>
 </sersync>
 
 <!-- 下面這些有關於插件的設置可忽略了 -->
 <plugin name="command">
 <param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /alidata/server/sersync/mmm.sh suffix-->
 <filter start="false">
 <include expression="(.*)\.php"/>
 <include expression="(.*)\.sh"/>
 </filter>
 </plugin>
 
 <plugin name="socket">
 <localpath watch="/home/demo">
 <deshost ip="210.36.158.xxx" port="8009"/>
 </localpath>
 </plugin>
 <plugin name="refreshCDN">
 <localpath watch="/data/htdocs/cdn.markdream.com/site/">
 <cdninfo domainname="cdn.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
 <sendurl base="http://cdn.markdream.com/cms"/>
 <regexurl regex="false" match="cdn.markdream.com/site([/a-zA-Z0-9]*).cdn.markdream.com/images"/>
 </localpath>
 </plugin>
</head>

啓動sersync服務 nohup ./sersync2 -r -d -o ./confxml.xml > ./sersync.log 2>&1 & -d:啓用守護進程模式 -r:在監控前,將監控目錄與遠程主機用rsync命令推送一遍 -n: 指定開啓守護線程的數量,默認爲10個 -o:指定配置文件,默認使用confxml.xml文件  

相關文章
相關標籤/搜索