首页 > 系统相关 >使用RSyslog将Nginx Access Log写入Kafka

使用RSyslog将Nginx Access Log写入Kafka

时间:2025-01-12 19:02:29浏览次数:3  
标签:15 Log omkafka 192.168 Kafka Access nginx RSyslog rsyslog

个人博客地址:使用RSyslog将Nginx Access Log写入Kafka | 一张假钞的真实世界

环境说明

  • CentOS Linux release 7.3.1611
  • kafka_2.12-0.10.2.2
  • nginx/1.12.2
  • rsyslog-8.24.0-34.el7.x86_64.rpm

创建测试Topic

$ ./kafka-topics.sh --zookeeper 192.168.72.25:2181/kafka --create --topic develop-test-topic --partitions 10 --replication-factor 3

RSyslog安装

一般系统自带RSyslog服务无需另外安装。但是因为数据需要通过RSyslog的omkafka模块写入到Kafka,而omkafka在RSyslog的v8.7.0+版本才支持,所以要看当前系统中RSyslog的版本是否需要升级。使用以下命令查看:

# rsyslogd -v
rsyslogd 7.4.7, compiled with:
	FEATURE_REGEXP:				Yes
	FEATURE_LARGEFILE:			No
	GSSAPI Kerberos 5 support:		Yes
	FEATURE_DEBUG (debug build, slow code):	No
	32bit Atomic operations supported:	Yes
	64bit Atomic operations supported:	Yes
	Runtime Instrumentation (slow code):	No
	uuid support:				Yes

See http://www.rsyslog.com for more information.

执行以下命令安装:

# sudo yum install rsyslog

安装依赖关系如下:

添加omkafka模块

# yum install rsyslog-kafka

RSyslog Client Nginx配置

注意,Nginx 1.7.1之后才支持syslog的方式处理日志。具体配置项参见官网文档Logging to syslog

Nginx配置主要是日志格式和Access Log配置项:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

server {
    listen 11000;

    location / {
        proxy_pass http://10.16.0.144:11000;
        access_log syslog:server=localhost,facility=local7,tag=nginx11000Root,severity=info main;
    }
}

RSyslog Server端配置

RSyslog的主配置文件/etc/rsyslog.conf,其中会包含引入/etc/rsyslog.d下扩展名为conf的配置文件。

修改配置文件/etc/rsyslog.conf将下面两行前面的注释去掉:

$ ModLoad imudp
$ UDPServerRun 514

/etc/rsyslog.d目录下创建rsyslog_nginx_kafka_cluster.conf,配置内容如下:

module(load="imudp")
input(type="imudp" port="514")

# nginx access log ==> rsyslog server(local) ==> kafka
module(load="omkafka")

template(name="nginx-11000-root" type="string" string="%msg%")

if $inputname == "imudp" then {
    if ($programname == "nginx11000Root") then
        action(type="omkafka"
            template="nginx-11000-root"
            broker=["192.168.72.10:9092","192.168.72.20:9092","192.168.72.25:9092","192.168.72.26:9092","192.168.72.27:9092","192.168.72.48:9092","192.168.72.55:9092","192.168.72.80:9092","192.168.72.81:9092","192.168.72.97:9092"]
            topic="develop-test-topic"
            partitions.auto="on"
            confParam=[
                "socket.keepalive.enable=true"
            ]
        )
}

:rawmsg, contains, "nginx11000Root" ~

联调测试

启动RSyslog服务:

# service rsyslog start
Redirecting to /bin/systemctl start  rsyslog.service

遇到的问题

syslog tag 只能包含字母和数字

# nginx -t
nginx: [emerg] syslog "tag" only allows alphanumeric characters and underscore in     /etc/nginx/conf.d/jx-11000-jenkins149-36-144.conf:7
nginx: configuration file /etc/nginx/nginx.conf test failed

‘omkafka’ is unknown

RSyslog中没有包含omkafka模块,需要另外安装。查看/var/log/messages日志信息会有以下提示:

# tail -f messages
Mar 15 15:13:40 192-168-72-29 systemd: Started System Logging Service.
Mar 15 15:13:40 192-168-72-29 rsyslogd: could not load module '/usr/lib64/rsyslog/omkafka.so', dlopen:     /usr/lib64/rsyslog/omkafka.so: cannot open shared object file: No such file or directory  [v8.24.0-34.el7 try     http://www.rsyslog.com/e/2066 ]
Mar 15 15:13:40 192-168-72-29 rsyslogd: could not load module '/usr/lib64/rsyslog/omkafka.so', dlopen:     /usr/lib64/rsyslog/omkafka.so: cannot open shared object file: No such file or directory  [v8.24.0-34.el7 try     http://www.rsyslog.com/e/2066 ]
Mar 15 15:13:40 192-168-72-29 rsyslogd: module name 'omkafka' is unknown [v8.24.0-34.el7 try     http://www.rsyslog.com/e/2209 ]
Mar 15 15:13:40 192-168-72-29 rsyslogd: module name 'omkafka' is unknown [v8.24.0-34.el7 try     http://www.rsyslog.com/e/2209 ]

CentOS 6.5升级Rsyslog

CentOS 6.5自带的RSyslog版本是rsyslogd 5.8.10。按照以下方式安装新版本:

# cd /etc/yum.repos.d/
# wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
# yum install rsyslog

标签:15,Log,omkafka,192.168,Kafka,Access,nginx,RSyslog,rsyslog
From: https://blog.csdn.net/weixin_46161645/article/details/145096593

相关文章

  • 【Weblogic T3协议】反序列化漏洞分析(上)
    免责声明此文章中所涉及的技术、思路和工具仅供网络安全学习为目的,不得以盈利为目的或非法利用,否则后果自行承担!一、前言在初入安全的时候,就听说过weblogic的大名,当然听说的并不是weblogic如何如何好用,而是因为其漏洞出现频率实在是有点高...于是乎,便抱着学习的心态跟了跟web......
  • Kafka 是一个分布式流式平台,主要用于处理大规模、高吞吐量的消息传递、日志收集和实时
    Kafka集群是什么?Kafka是一个分布式流式平台,主要用于处理大规模、高吞吐量的消息传递、日志收集和实时数据流。Kafka集群是由多个Kafka服务器(称为Broker)组成的,它们共同工作以实现消息的高可用性、可靠性、可扩展性和容错性。Kafka集群的目的是确保消息的持久化和高效传输,同......
  • asp毕业设计下载(全套源码+配套论文)——基于asp+access的实验室设备管理系统设计与实现
    基于asp+access的实验室设备管理系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于asp+access的实验室设备管理系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于asp+access的实验室设备管理系统设计与实现(毕业论文+程序源码)1、项目简介2、资源......
  • asp毕业设计下载(全套源码+配套论文)——基于asp+access的商品销售网站设计与实现
    基于asp+access的商品销售网设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于asp+access的商品销售网设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于asp+access的商品销售网设计与实现(毕业论文+程序源码)1、项目简介2、资源详情3、关键词:4、资源下载......
  • 写得很好的blog记录,以便随时阅读|持续更新
    目录傅里叶变换GANWGAN扩散模型DDPM推导大神的博客傅里叶变换白话理解傅里叶变换原理(时域频域):https://blog.csdn.net/fanzy_edu/article/details/119874915GANWGAN令人拍案叫绝的WassersteinGAN:https://zhuanlan.zhihu.com/p/25071913扩散模型DDPM推导深度推导DDPM数学......
  • el-dialog拖拉拽改造
    <template><divid="app"><el-button@click="dialogVisible=true">OpenDialog</el-button><el-dialogv-model="dialogVisible"title="ResizableDialog"class=&qu......
  • EMLOG安装指南
    环境准备PHP版本:支持PHP5.6、PHP7、PHP8,推荐使用PHP7.4及以上版本。数据库:需要MySQL5.6及以上版本,或者MariaDB10.3及以上版本。服务器环境:推荐使用Linux+nginx的组合。服务器选择:建议使用云服务器,如阿里云ECS或雨云-KVM。服务器管理面板:推荐使用宝塔面板,它支持一键部......
  • 如何修改Z-Blog的数据库连接信息?
    当您需要更换数据库版本或迁移网站到新的主机时,修改Z-Blog的数据库连接信息是一个必不可少的步骤。正确的配置不仅能够确保网站正常运行,还能提高数据的安全性和稳定性。以下是详细的修改步骤和注意事项。1.修改配置文件路径Z-Blog的数据库配置文件位于zb_users/c_option.php。......
  • 【Verilog实例】1_LCD字符串显示
    功能描述:  通过写入指令或数据,控制内部的驱动芯片,从而实现在LCD显示屏上显示字符串:I_❤L......
  • 【云安全】AccessKey泄露-安全问题分析
    AccessKey泄露是所有依赖API访问的云服务都会面临的潜在安全风险。AccessKey是云服务中常用的身份认证凭证,如果泄露,攻击者可能会冒充合法用户进行操作,带来严重的安全隐患。什么是AccessKey?通常包括以下两个部分:AccessKeyID(AKID):用于标识用户身份。AccessKeySecret(AKS......