在使用链路追踪控制台追踪Nginx的链路数据之前,需要将链路数据上报至链路追踪服务台。本文介绍如何通过SkyWalking Nginx LUA module上报Nginx的链路追踪数据。
背景信息
SkyWalking是一款广受欢迎的国产应用性能监控APM(Application Performance Monitoring)产品,主要针对微服务、Cloud
Native和容器化(Docker、Kubernetes、Mesos)架构的应用。SkyWalking的核心是一个分布式追踪系统,且目前是Apache基金会的顶级项目。
要通过SkyWalking将Java应用数据上报至链路追踪控制台,首先需要完成埋点工作。SkyWalking既支持自动埋点(Dubbo、gRPC、JDBC、OkHttp、Spring、Tomcat、Struts、Jedis等),也支持手动埋点(OpenTracing)。本文介绍自动埋点方法。
准备工作
- 登录链路追踪Tracing Analysis控制台。
- 在左侧导航栏单击集群配置,并在顶部菜单栏选择目标地域。
- 在集群配置页面上单击接入点信息页签,在集群信息区域打开显示Token开关。
- 在客户端采集工具区域单击SkyWalking。
- 在下方表格的相关信息列中,单击接入点信息末尾的复制图标。

说明 如果应用部署于阿里云生产环境,则选择阿里云VPC网络接入点,否则选择公网接入点。
通过Docker镜像快速配置skywalking-nginx-lua
使用打包好的Docker配置skywalking-nginx-lua。
- 从Registry中拉取镜像。
docker pull registry.cn-hangzhou.aliyuncs.com/public-community/skywalking-nginx-lua:0.2
- 运行Nignx Docker。
docker run --rm -p 80:80 -e "BACKEND_URL=$skywalking-nginx-lua" -d registry.cn-hangzhou.aliyuncs.com/public-community/skywalking-nginx-lua:0.2
$skywalking-nginx-lua
是准备工作中保存的nginx-lua接入点信息。
例如:
docker run --rm -p 80:80 -e "BACKEND_URL=http://tracing-analysis-dc-hz.aliyuncs.com/adapt_123@abc_456@efg" -d registry.cn-hangzhou.aliyuncs.com/public-community/skywalking-nginx-lua:0.2
- 访问Nginx页面。
- 在浏览器上访问
localhost/nginx.conf
。
- 执行命令
curl "localhost/nginx.conf"
。
通过Dockerfile配置skywalking-nginx-lua
- 下载Dockerfile。
wget https://arms-apm.oss-cn-hangzhou.aliyuncs.com/demo/nginx-skywalking-docker.tgz
tar -xzvf nginx-skywalking-docker.tgz
cd nginx-lua
- 编译Docker。
docker build --rm --tag skywalking-nginx-lua:0.2 .
- 运行Docker。
docker run --rm -p 80:80 -e "BACKEND_URL=$skywalking-nginx-lua" -d skywalking-nginx-lua:0.2
$skywalking-nginx-lua
是准备工作中保存的nginx-lua接入点信息。
例如:
docker run --rm -p 80:80 -e "BACKEND_URL=http://tracing-analysis-dc-hz.aliyuncs.com/adapt_123@abc_456@efg" -d skywalking-nginx-lua:0.2
- 访问Nginx页面。
- 在浏览器上访问
localhost/nginx.conf
。
- 执行命令
curl "localhost/nginx.conf"
。
在ECS上配置skywalking-nginx-lua
此处以在CentOS 7.0上的操作为例。
- 配置Lua运行环境。
- 安装工具库。
yum install gcc gcc-c++ kernel-devel -y
yum install readline-devel -y
yum install ncurses-devel -y
- 下载并安装Lua 5.3.5。
cd /usr/local/src
wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar -zxvf lua-5.3.5.tar.gz
cd /usr/local/src/lua-5.3.5 && echo "INSTALL_TOP= /usr/local/lua_5.3.5" >> Makefile && make linux && make install
- 下载并安装LuaRocks 2.2.2。
cd /usr/local/src
wget http://keplerproject.github.io/luarocks/releases/luarocks-2.2.2.tar.gz
tar -xzvf luarocks-2.2.2.tar.gz
cd luarocks-2.2.2
./configure --prefix=/usr/local/luarocks_2.2.2 --with-lua=/usr/local/lua_5.3.5
make build
make install
- 在/etc/profile文件中添加以下内容。
export LUA_HOME=/data/software/lua_install/lua_5.3.5
export LUALOCKS_HOME=/data/software/lua_install/luarocks_2.2.2
PATH=$PATH:$HOME/bin:$LUALOCKS_HOME/bin:$LUA_HOME/bin
export PATH
export LUA_PATH="$LUALOCKS_HOME/share/lua/5.3/?.lua;?.lua;;"
export LUA_CPATH="$LUALOCKS_HOME/lib/lua/5.3/?.so;?.so;;"
- 刷新/etc/profile配置文件。
- 安装Lua组件。
luarocks install luasocket
luarocks install lua-resty-jit-uuid
luarocks install luaunit
luarocks install lua-cjson 2.1.0-1
- 确认Lua组件是否安装成功。
- 下载并安装OpenResty Nginx。
yum install pcre-devel openssl-devel gcc curl postgresql-devel
cd /usr/local/src
wget -c https://openresty.org/download/openresty-1.15.8.1rc2.tar.gz
tar -zxvf openresty-1.15.8.1rc2.tar.gz
cd openresty-1.15.8.1rc2
./configure --prefix=/usr/local/openresty/ --with-http_stub_status_module --with-luajit --without-http_redis2_module --with-http_iconv_module --with-http_postgres_module --with-stream && gmake && gmake install
export PATH=/usr/local/openresty/nginx/sbin:$PATH
- 下载并安装skywalking-nginx-lua。
- 下载并解压skywalking-nginx-lua安装包。
cd /usr/local/skywalking-nginx-lua
wget https://mirrors.bfsu.edu.cn/apache/skywalking/nginx-lua/0.3.0/skywalking-nginx-lua-0.3.0-src.tgz
tar -xzvf skywalking-nginx-lua-0.3.0-src.tgz
- 修改nginx.conf文件中的lua_package_path和startBackendTimer。
例如:
- lua_package_path改为
/usr/local/skywalking-nginx-lua/lib/?.lua;;"
。
- startBackendTimer改为
require("skywalking.client"):startBackendTimer("http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***")
。
- 启动skywalking-nginx-lua。
nginx -c /usr/local/skywalking-nginx-lua/examples/nginx.conf
在文档使用中是否遇到以下问题
更多建议
匿名提交