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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
日志服务 SLS,月写入数据量 50GB 1个月
文件存储 NAS,50GB 3个月
简介: 业务服务器免装插件,使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.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
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
77 0
|
3天前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
|
24天前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
55 2
|
7天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
20天前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
21天前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力?
如何优化 SSR 应用以减少服务器压力?
|
30天前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
24天前
|
机器学习/深度学习 人工智能 边缘计算
高算力服务器的应用场景
【10月更文挑战第18天】高算力服务器作为现代信息社会不可或缺的计算资源,正广泛应用于各行各业。从人工智能到科学研究,从智能交通到数字孪生,它为复杂的计算任务提供了不可替代的支持。
30 0
|
1月前
|
监控 Java 关系型数据库
构建高效可靠的服务器端应用
【10月更文挑战第6天】构建高效可靠的服务器端应用