安装前的准备
Nginx1.9.9
LuaJIT-2.0.4
lua-nginx-module-0.10.2
ngx_devel_kit-0.3.0rc1
lua-resty-kafka
kafka_2.11-0.9.0.1
参考的这几篇文章方成此方案
基于Lua+Kafka+Heka的Nginx Log实时监控系统
提供一个相关软件和详细配置说明的网盘下载地址http://pan.baidu.com/s/1c2LmX36
1 安装LuaJIT
下载http://luajit.org/download.html
http://luajit.org/install.html
命令如下:
tar zxf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
make PREFIX=/usr/local/LuaJIT
make install PREFIX=/usr/local/LuaJIT
echo "/usr/local/LuaJIT/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf
ldconfig
#注意环境变量!
export LUAJIT_LIB=/usr/local/LuaJIT/lib
export LUAJIT_INC=/usr/local/LuaJIT/include/luajit-2.0
2 安装lua-nginx-module
https://github.com/openresty/lua-nginx-module/tags
cd /usr/local
tar zxvf lua-nginx-module-0.10.2.tar.gz
3 安装ngx_devel_kit
https://github.com/simpl/ngx_devel_kit/tags
http://17173ops.com/2013/11/01/17173-ngx-lua-manual.shtml
cd /usr/local
tar zxvf ngx_devel_kit-0.3.0rc1.tar.gz
4 安装编译Nginx
http://17173ops.com/2013/11/01/17173-ngx-lua-manual.shtml
给Nginx添加下面的参数,如果已经安装了Nginx则用
nginx -V
--add-module=/usr/local/lua-nginx-module-0.10.2 --add-module=/usr/local/ngx_devel_kit-0.3.0rc1
如:
cd /usr/local/nginx-1.9.9
./configure --prefix=/usr/local/nginxnew/ --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=/root/install/ngx_log_if-master --add-module=/usr/local/lua-nginx-module-0.10.2 --add-module=/usr/local/ngx_devel_kit-0.3.0rc1
5 lua插件lua-resty-kafka
https://github.com/doujiang24/lua-resty-kafka
mkdir /usr/local/lua
上传lua-cjson-2.1.0.3.tar.gz到/usr/local/lua
上传lua-resty-kafka到/usr/local/lua
6 lua插件cjson
http://www.kyne.com.au/~mark/software/lua-cjson-manual.html
cd /usr/local/lua
tar zxvf lua-cjson-2.1.0.3.tar.gz
7,nginx的配置
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
log_format ht-video '$request|$msec|$http_x_forwarded_for|$http_user_agent|$request_body';
lua_package_path "/usr/local/lua/lua-resty-kafka/lib/?.lua;;";
server{
listen 8080;
server_name 192.168.50.42;
location / {
root /usr/local/nginx/htm;
index index.html;
}
location /ht{
#root html;
#index index.html index.htm;
if ( $request ~ "GET" ) {
#access_log logs/ht-video.log ht-video;
access_log /htlog/ht-video.log ht-video;
}
# proxy_set_header Host $http_host;
# proxy_pass http://localhost:6099;
client_max_body_size 8000M;
#error_page 405 =200 $1;
}
}
server {
listen 6099;
server_name localhost;
location /ht {
root /usr/local/nginx;
index index.html index.htm;
client_max_body_size 8000M;
error_page 405 =200 $1;
}
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#为了方便调试,关闭了lua_code_cache,如果是生产环境,应该开启它。
lua_code_cache off;
location / {
root html;
index index.html index.htm;
}
location /lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
location = /lua-v {
content_by_lua '
ngx.header.content_type = "text/plain";
if jit then
ngx.say(jit.version)
else
ngx.say(_VERSION)
end
';
}
location /ht3/video/p {
content_by_lua '
ngx.header.content_type = "text/plain";
--local cjson = require "cjson"
--local client = require "resty.kafka.client"
local producer = require "resty.kafka.producer"
local broker_list = {
{ host = "192.168.50.42", port = 9092 }
}
local broker_list_host_ip = {
{ host = "kafka1.livecourse.com", ip = "192.168.50.42" },
}
local key = "key"
--local message = $request|$msec|$remote_addrx|$http_user_agent|$request_body
local myIP = ngx.req.get_headers()["X-Real-IP"]
if myIP == nil then
myIP = ngx.req.get_headers()["x_forwarded_for"]
end
if myIP == nil then
myIP = ngx.var.remote_addr
end
local h = ngx.req.get_headers()
local message = ngx.req.get_method() .. " " .. ngx.var.uri
if ngx.var.args ~= nil then
message = message .. "?" .. ngx.var.args .. "|"
end
message = message .. ngx.now() .. "|"
message = message .. myIP .. "|"
message = message .. h["user-agent"] .. "|"
local bodyData = ngx.req.get_body_data()
if bodyData == nil then
bodyData = "-"
end
message = message .. bodyData
-- this is async producer_type and bp will be reused in the whole nginx worker
local bp = producer:new(broker_list, { producer_type = "async" , broker_list_host_ip = broker_list_host_ip,refresh_interval = 3000})
local ok, err = bp:send("test", key, message)
-- 定义kafka异步生产者
-- 发送日志消息,send第二个参数key,用于kafka路由控制:
-- key为nill(空)时,一段时间向同一partition写入数据
-- 指定key,按照key的hash写入到对应的partition
-- 指定key,按照key的hash写入到对应的partition
if not ok then
--ngx.say("send err:", err)
ngx.say("void(1);");
return
end
ngx.say("void(0);");
--ngx.say("send success, ok:", ok)
';
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
注意配置文件标红的的,第一个标红的为kafka的安装服务器地址和端口,如果有多台则配置多个,第二个标红的test为kafka的topic名称
8 完成
请求Url:http://localhost/ht3/video/p?a=bbbb 就能将日志内容发送到kafka
相关推荐
高性能架构面试题系列:Nginx+ActiveMQ+RabbitMQ+Kafka 请解释Nginx如何处理HTTP请求。 Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并...
Nginx++Keepalived+Tomcat负载均衡&动静分离配置 本文主要介绍了Nginx、Keepalived和Tomcat的负载均衡和动静分离配置,旨在帮助读者了解如何搭建高可用、高性能的Web应用系统。 一、环境准备 在开始配置之前,...
Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理 本文主要介绍了如何使用 Nginx 1.2.1 和 JBOSS AS 7 实现负载均衡和 Session 处理。文章首先介绍了使用 Nginx 1.2.1 和 JBOSS AS 7 做为应用服务器的理由,然后...
这个"granfana+prometheusr+redis+kafka+nginx+node+postgres软件包.zip"压缩包包含了多个用于构建高效监控和数据处理系统的组件。让我们逐一深入探讨这些组件的功能、用途以及它们如何协同工作。 1. **Prometheus*...
Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑
在构建高性能、高可用性的Web服务时,"Nginx+Tomcat+Redis"的组合是一种常见的架构模式。这个架构充分利用了每个组件的优势,以实现高效的数据处理、动态内容渲染和负载均衡。以下是对这套技术栈的详细解释: 1. **...
大型电商项目实战1:Redis+Rest+Linux+Nginx+Spring+SpringMVC实现JAVA高并发秒杀系统,baidu链接,谢谢
nginx+lua+redis通过匹配客户端ip进行灰度发布 本文将讲述如何使用nginx、lua和redis来实现灰度发布,通过匹配客户端IP来实现灰度发布。灰度发布是一种常见的软件发布方式,它允许开发者在生产环境中发布新的版本,...
Web服务器三剑客运维配置实战 Nginx+JVM+Tomcat+HTTP协议 视频教程+笔记+课件+资料 虽然在课程中还讲解了部分HTTP协议的技术,但是课程的重点还是NGINX、JVM、Tomcat三相运维与配置技术。课程内容包括了Nginx进阶...
nginx-1.6.0.tar.gz mysql-5.6.19.tar.gz php-5.5.14.tar.gz pcre-8.35.tar.gz openssl-1.0.1h.tar.gz zlib-1.2.8.tar.gz cmake-2.8.11.2.tar.gz libmcrypt-2.5.8.tar.gz yasm-1.2.0.tar.gz t1lib-5.1.2.tar.gz gd-...
【Nginx1.11】 Nginx是一款高性能的HTTP和反向代理服务器,也是一款邮件协议代理服务器。Nginx 1.11是其1.x系列的一个稳定版本。它以其出色的并发处理能力、低内存占用和高效的性能而著称。Nginx支持负载均衡、URL...
### Web环境搭建:Linux+Nginx+PHP+MySQL+Redis #### 一、环境概述与推荐版本 在构建一个高效且稳定的商城系统时,选择合适的Web环境至关重要。本指南将介绍一套广泛应用于电商平台的技术栈——**Ubuntu + PHP + ...
这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...
### Nginx+KeepAlived+Tomcat负载架构详解 #### 一、概述 随着互联网应用的日益增多,单一服务器已经难以满足高并发、高可用性的需求。因此,越来越多的企业开始采用集群技术来提高系统的稳定性和扩展性。本文将...
《国产中标麒麟操作系统Nginx+Tomcat+Redis集群安装部署手册》是针对在中标麒麟操作系统上搭建Web服务环境的详细指南。这份手册由东软集团股份有限公司于2019年12月编撰,旨在解决在实际部署过程中可能出现的各种...
《LNMP环境构建与Flume+Kafka+Storm+HDFS实时系统集成详解》 在当前的互联网时代,数据量的急剧增长使得大数据处理成为一项关键任务。本篇将深入探讨如何在Linux环境下搭建LNMP(Linux + Nginx + MySQL + PHP)...
CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本,Docker version 18.06.1-ce,docker-compose version 1.22.0
标题 "nginx1.9.7+keepalive1.3.2" 暗示我们要讨论的是一个特定版本的 Nginx 服务器软件,与 Keepalive 模块的结合使用。Nginx 是一款广泛使用的高性能 web 服务器和反向代理服务器,而 Keepalive 模块则是增强其...
本资源包“nginx+lua+redis集群 连接插件和脚本”正是为了解决这三者之间的协同工作,特别是针对原插件没有密码功能的问题进行了改进,使得安全性得到了提升。 首先,Nginx是一款轻量级的Web服务器/反向代理服务器...
【Linux平台CentOS7系统 - ELK+logback+kafka+nginx搭建分布式日志分析平台】 在复杂的IT环境中,日志管理和分析对于诊断问题、优化性能以及确保系统稳定性至关重要。ELK栈(Elasticsearch、Logstash、Kibana)正是...