通過SkyWalking為應用埋點并上報鏈路數據至可觀測鏈路 OpenTelemetry 版后,可觀測鏈路 OpenTelemetry 版即可開始監控應用,您可以查看應用拓撲、調用鏈路、異常事務、慢事務和SQL分析等一系列監控數據。本文介紹如何通過SkyWalking Nginx LUA module自動埋點并上報Nginx的鏈路追蹤數據。
前提條件
新版控制臺
登錄可觀測鏈路 OpenTelemetry 版控制臺,在左側導航欄單擊接入中心。
在開源框架區域單擊SkyWalking卡片。
在彈出的SkyWalking面板中選擇數據需要上報的地域。
說明初次接入的地域將會自動進行資源初始化。
選擇連接方式,然后復制接入點信息。
若您的服務部署在阿里云上,且所屬地域與選擇的接入地域一致,推薦使用阿里云內網方式,否則選擇公網方式。
舊版控制臺
在左側導航欄單擊集群配置,然后在右側頁面單擊接入點信息頁簽。
在頁面頂部選擇需要接入的地域,然后在集群信息區域打開顯示Token開關。
在客戶端采集工具區域單擊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。
從Registry中拉取鏡像。
docker pull registry.cn-hangzhou.aliyuncs.com/public-community/skywalking-nginx-lua:0.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
訪問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=/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;;"
刷新/etc/profile配置文件。
source /etc/profile
安裝Lua組件。
luarocks install luasocket luarocks install lua-resty-jit-uuid luarocks install luaunit luarocks install lua-cjson 2.1.0-1
確認Lua組件是否安裝成功。
luarocks list
下載并安裝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.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
修改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
查看結果
在可觀測鏈路 OpenTelemetry 版控制臺的應用列表頁面選擇目標應用,查看鏈路數據。