业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1

三奇  收藏于2023-06-09   转藏1次

业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1

一、场景如下

AppServer业务服务器上的应用日志需要接入到GrayLog,进行字段分析及业务日志异常告警 

但是AppServer业务服务器为重要生产环境,不建议安装filebeat和nxlog等其他日志采集的Agent插件程序 

所以考虑将AppServer业务服务器上的应用日志实时同步到某个中间服务器上,然后再发往GrayLog

所以有了如下拓扑图的这种方案

(图片点击放大查看)

利用rsync将AppServer业务服务器上应用日志同步到群晖NAS上,然后NAS利用NFS或者其他协议挂载到GrayLog服务器上,在GrayLog服务器上面安装nxlog读取NFS挂载目录下的日志文件,即可实现日志采集读取

主要环境说明 

  • 1、AppServer业务服务器:192.168.31.230
  • 2、群晖NAS:192.168.31.140 
  • 3、GrayLog 192.168.31.170 

具体步骤如下

1、AppServer业务服务器使用ssh-keygen生成密钥对

                    
                    
                    
                      ssh-keygen -t rsa -b 4096 -C 
                      
                        "appserver"
                      
                      
cd  /root/.ssh/
cp id_rsa id_rsa_appserver.pem
cat /etc/ssh/sshd_config | grep authorized_keys
cat id_rsa.pub >> /root/.ssh/authorized_keys
sz /root/.ssh/id_rsa_appserver.pem

(图片点击放大查看)

(图片点击放大查看)

假设AppServer业务服务器的应用日志为/var/log/nginx/*.log

2、群晖NAS上配置ABB文件服务器rsync备份计划

选择通过SSH连接至rsync shell模式,然后

认证策略:通过SSH密钥验证 

备份模式:镜像 

备份到/LogSpace NAS的本地路径

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

(图片点击放大查看)

运行频率为每小时一次 

(图片点击放大查看)

(图片点击放大查看)

3、NAS上面配置NFS文件服务

(图片点击放大查看)

(图片点击放大查看)

4、GrayLog服务器上面挂载NFS

                    
                    
                    
                      yum install nfs-utils
                      
showmount -e 192.168.31.140
mkdir /log_collector
mount -t nfs 192.168.31.140:/volume1/LogSpace /log_collector/ -o proto=tcp -o nolock
echo   "mount -t nfs 192.168.31.140:/volume1/LogSpace /log_collector/ -o proto=tcp -o nolock"  >> /etc/rc.local
chmod a+x /etc/rc.d/rc.local 

(图片点击放大查看)

下面就可以在GrayLog安装nxlog去读取采集/log_collector/下的日志了

                    
                    
                    
                      /log_collector/var/
                      
                        log
                      
                      /nginx/*.
                      
                        log
                      
                      

二、优化方案

上面的同步方式可针对实时性要求不高的场景 由于群晖NAS上ABB(active backup for business)rsync备份只能每小时同步一次 

业务日志的实时性要求比较强,所以决定直接rsync+crontab定时任务这种方式来实时同步日志,再nxlog进行读取,如下图所示

(图片点击放大查看)

1、编写rsync同步的脚本

                    
                    
                    
                      mkdir /root/.ssh
                      
cd  /root/.ssh/
上传id_rsa_appserver.pem
mkdir /LogSpace
rsync --progress -avz --perms --chmod=ugo+r -og --chown=root:root -e  "ssh -p 22 -i /root/.ssh/id_rsa_appserver.pem"  root@192.168.31.230:/var/ log /nginx/ /LogSpace/
先确认rsync同步是否OK
报错:Permissions 0644 for   '/root/.ssh/id_rsa_appserver.pem'  are too open.
解决办法:chmod 0600 /root/.ssh/id_rsa_appserver.pem

(图片点击放大查看)

                    
                    
                    
                      cat /opt/logfiles_rsync.sh
                      
#!/bin/bash
LOCK=/var/ log /appserverlogs_rsync_record.log
echo   "同步日期:"  >>  ${LOCK}  2>&1
echo  `date  '+%Y-%m-%d_%T' `  >>  ${LOCK}  2>&1
echo   "================= AppServer logs Rsync starting==============================="    >>  ${LOCK}  2>&1
rsync --progress -avz --perms --chmod=ugo+r -og --chown=root:root -e  "ssh -p 22 -i /root/.ssh/id_rsa_appserver.pem"  root@192.168.31.230:/var/ log /nginx/ /LogSpace/ >>  ${LOCK}  2>&1
echo   "================= AppServer logs Rsync Finished==============================="    >>  ${LOCK}  2>&1
#chmod -R 755 /LogSpace/ >> ${LOCK} 2>&1
#chown -R root:root /LogSpace/ >> ${LOCK} 2>&1

(图片点击放大查看)

                    
                    
                    
                      crontab -e
                      
添加每1分钟定时同步应用日志到本地
*/59 * * * * /usr/sbin/ntpdate ntp.aliyun.com >> /tmp/ntp_sync.log
*/1 * * * * /opt/logfiles_rsync.sh 

(图片点击放大查看)

然后记得权限

                    
                    
                    
                      chmod 777 /opt/logfiles_rsync.sh 
                      

2、安装nxlog-ce

                    
                    
                    
                      yum localinstall nxlog-ce*.rpm
                      

3、修改nxlog配置文件

                    
                    
                    
                      vim /etc/nxlog/nxlog.conf 
                      

(图片点击放大查看)

(图片点击放大查看)

修改如下几处

                    
                    
                    
                      1)、运行用户改为root
                      
User root
Group root

2)、Input Output 和Route配置
<Extension _syslog>
    Module      xm_syslog
</Extension>

<Extension _json>
    Module      xm_json
</Extension>
<Input 192.168.31.230_appserver_log>
    Module      im_file
    File         "/LogSpace/*.log"
    SavePos     TRUE
    ReadFromLast TRUE
      <Exec>
            $Hostname  = file_name();
            $Message  =   $raw_event  ;
      </Exec>
</Input>

<Output toGraylog>
    Module      om_udp
    Host        192.168.31.170
    Port        2514
    Exec        to_syslog_bsd();
    Exec        parse_syslog(); to_json();
</Output>
########################################
# Routes                               #
########################################
<Route udproute>
    Path        192.168.31.230_appserver_log => toGraylog
</Route>
                    
                    
                    
                      systemctl 
                      
                        enable
                      
                       nxlog
                      
systemctl start nxlog
systemctl status nxlog

(图片点击放大查看)

排错命令

                    
                    
                    
                      journalctl -xe -u nxlog
                      
tail -f /var/ log /nxlog/nxlog.log

4、GrayLog配置日志接入

json日志解析,可以获取到日志的实际路径文件名字段

(图片点击放大查看)

(图片点击放大查看)

步骤省略,最后的效果

(图片点击放大查看)

Tips

1、nxlog与graylog能使用GELF格式对接

                    
                    
                    
                      https://docs.nxlog.co/userguide/integrate/graylog.html
                      

2、Graylog的MongoDB6.0开启账号认证

参考如下链接

                    
                    
                    
                      https://www.mongodb.com/docs/manual/tutorial/configure-scram-client-authentication/
                      

1、mongosh 命令行登录数据库,创建用户设置密码

                    
                    
                    
                      use admin
                      
db.createUser({user:  "admin" pwd "Admin@2023!" , roles: [ "root" ]})
db.auth( "admin" , "Admin@2023!" )
#创建graylog数据库并设置密码
use graylog
db.createUser({
   user:  "graylog"
    pwd "Graylog2023!" ,
   "roles"  : [{
       "role"  :  "dbOwner" ,
       "db"  :  "graylog"
    }, {
       "role"  :  "readWrite" ,
       "db"  :  "graylog"
    }]
})

(图片点击放大查看)

2、修改配置文件,开启认证

                    
                    
                    
                      vim /etc/mongod.conf 
                      
修改如下行
security:
  authorization: enabled

(图片点击放大查看)

3、GrayLog配置文件修改mongodb连接信息

                    
                    
                    
                      vim /etc/graylog/server/server.conf 
                      
连接配置信息修改成
mongodb_uri = mongodb://graylog:Graylog2023!@localhost/graylog

4、重启mongod和graylog-server

                    
                    
                    
                      systemctl restart mongod
                      
systemctl restart graylog-server.service 

(图片点击放大查看)

(图片点击放大查看)

5、账号密码方式连接数据库

                    
                    
                    
                      mongosh --port 27017  --authenticationDatabase     
                      
                        "admin"
                      
                       -u 
                      
                        "admin"
                      
                       -p
                      
mongosh --port 27017  --authenticationDatabase      "graylog"  -u  "graylog"  -p


特别重申:本篇文档资料为 “好网角收藏夹” 注册用户(收藏家)上传共享,仅供参考之用,请谨慎辨别,不代表本站任何观点。
好网角收藏夹为网友提供资料整理云存储服务,仅提供信息存储共享平台。

信息删除举报或发邮件到:dongye2016@qq.com
类似文章
最新转藏文章

文档下载

下载连接中...
返回
TOP
转Word 一键复制 我的收藏

提示信息

确定 返回

添加文章收藏

更多设置 (选填)

阅读权限:

转藏到好网角收藏夹

非法或侵权内容举报:

提交 (如果是侵权投诉,请将相关证明材料发送到邮箱:374524223@qq.com)