全部产品
Search
文档中心

应用实时监控服务ARMS:使用Skywalking对Nginx进行链路追踪

更新时间:Nov 24, 2023

在使用可观测链路 OpenTelemetry 版控制台追踪Nginx的链路数据之前,需要将链路数据上报至可观测链路 OpenTelemetry 版服务端。本文介绍如何通过SkyWalking Nginx LUA module上报Nginx的链路追踪数据。

前提条件

获取接入点信息

  1. 登录可观测链路 OpenTelemetry 版控制台

  2. 在左侧导航栏单击集群配置,然后在右侧页面单击接入点信息页签。

  3. 在页面顶部选择需要接入的地域,然后在集群信息区域打开显示Token开关。

  4. 客户端采集工具区域单击SkyWalking

    在下方表格的相关信息列中,获取接入点信息。

    SkyWalking接入点信息

    说明

    如果应用部署于阿里云生产环境,则选择阿里云VPC网络接入点,否则选择公网接入点。

背景信息

SkyWalking是一款广受欢迎的国产应用性能监控APM(Application Performance Monitoring)产品,主要针对微服务、Cloud Native和容器化(Docker、Kubernetes、Mesos)架构的应用。SkyWalking的核心是一个分布式追踪系统。

要通过SkyWalking将Java应用数据上报至可观测链路 OpenTelemetry 版控制台,首先需要完成埋点工作。SkyWalking既支持自动埋点(Dubbo、gRPC、JDBC、OkHttp、Spring、Tomcat、Struts、Jedis等),也支持手动埋点(OpenTracing)。本文介绍自动埋点方法。

通过Docker镜像快速配置skywalking-nginx-lua

使用打包好的Docker配置skywalking-nginx-lua。

  1. 从Registry中拉取镜像。

    docker pull registry.cn-hangzhou.aliyuncs.com/public-community/skywalking-nginx-lua:0.2
  2. 运行Nginx 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
  3. 访问Nginx页面。

    • 在浏览器上访问localhost/nginx.conf

    • 执行命令curl "localhost/nginx.conf"

通过Dockerfile配置skywalking-nginx-lua

  1. 下载Dockerfile。

    wget https://arms-apm.oss-cn-hangzhou.aliyuncs.com/demo/nginx-skywalking-docker.tgz
    tar -xzvf nginx-skywalking-docker.tgz
    cd nginx-lua
  2. 编译Docker。

    docker build --rm --tag skywalking-nginx-lua:0.2 .
  3. 运行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
  4. 访问Nginx页面。

    • 在浏览器上访问localhost/nginx.conf

    • 执行命令curl "localhost/nginx.conf"

在ECS上配置skywalking-nginx-lua

此处以在CentOS 7.0上的操作为例。

  1. 配置Lua运行环境。

    1. 安装工具库。

      yum install gcc gcc-c++ kernel-devel -y
      yum install readline-devel -y
      yum install ncurses-devel -y
    2. 下载并安装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
    3. 下载并安装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
    4. /etc/profile文件中添加以下内容。

      export LUA_HOME=/usr/local/lua_5.3.5
      export LUAROCKS_HOME=/usr/local/luarocks_2.2.2
      PATH=$PATH:$HOME/bin:$LUAROCKS_HOME/bin:$LUA_HOME/bin
      export PATH
      export LUA_PATH="$LUAROCKS_HOME/share/lua/5.3/?.lua;?.lua;;"
      export LUA_CPATH="$LUAROCKS_HOME/lib/lua/5.3/?.so;?.so;;"
    5. 刷新/etc/profile配置文件。

      source /etc/profile
    6. 安装Lua组件。

      luarocks install luasocket
      luarocks install lua-resty-jit-uuid
      luarocks install luaunit
      luarocks install lua-cjson 2.1.0-1
    7. 确认Lua组件是否安装成功。

      luarocks list
  2. 下载并安装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
  3. 下载并安装skywalking-nginx-lua。

    1. 下载并解压skywalking-nginx-lua安装包。

      cd /usr/local/skywalking-nginx-lua
      wget https://mirrors.tuna.tsinghua.edu.cn/apache/skywalking/nginx-lua/0.5.0/skywalking-nginx-lua-0.5.0-src.tgz
      tar -xzvf skywalking-nginx-lua-0.5.0-src.tgz
    2. 修改nginx.conf文件中的lua_package_pathstartBackendTimer

      例如:

      • lua_package_path改为/usr/local/skywalking-nginx-lua/lib/?.lua;;"

      • startBackendTimer改为require("skywalking.client"):startBackendTimer("http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***")

    3. 启动skywalking-nginx-lua。

      nginx -c /usr/local/skywalking-nginx-lua/examples/nginx.conf

查看结果

登录ARMS控制台后,在应用监控 > 应用列表页面选择目标应用,查看链路数据。

说明

语言列显示Java图标图标的应用为接入应用监控的应用,显示-图标的应用为接入可观测链路 OpenTelemetry 版的应用。