Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,对其进行跟踪可以帮助我们更好的了解应用服务的运行状况。本文将详细介绍Nginx的链路跟踪的安装过程。
前提条件
获取接入点信息
- 登录ARMS控制台,在左侧导航栏选择。
- 在应用列表页面顶部选择目标地域,然后单击目标链路追踪应用名称。
说明 语言列显示

图标的应用为接入应用监控的应用,显示
-图标的应用为接入链路追踪的应用。
- 在弹出的页面中,单击左侧导航栏上方的
图标,返回上一层。
- 在左侧导航栏单击集群配置,然后在右侧页面单击接入点信息页签。
- 在页面顶部选择需要接入的地域,然后在集群信息区域打开显示Token开关。
- 在客户端采集工具区域单击需要使用的链路数据采集客户端。
在下方表格的相关信息列中,获取接入点信息。

说明
- 如果应用部署于阿里云生产环境,则选择私网接入点,否则选择公网接入点。对于Zipkin,一般情况下请使用v2版接入点,v1版接入点仅限对Zipkin十分了解的高阶用户使用。
教程概述
当Nginx代理的微服务出现假死现象时,因为采集不到任何数据,所以无法评估造成的影响。借助链路追踪,可以追踪微服务的上游Nginx,并快速统计出假死现象影响的访问量。
在Docker上部署和跟踪Nginx
- 下载Dockerfile并编译部署。
wget https://arms-apm.oss-cn-hangzhou.aliyuncs.com/demo/nginx-zipkin-docker.tgz
tar -xzvf nginx-zipkin-docker.tgz
cd nginx-zipkin
// 编译docker
docker build --rm --tag nginx-zipkin:0.1
- 运行Docker。
docker run --rm -p 80:80 -e "COLLECTOR_HOST=${ZIPKIN_ENDPOINT}?" -d nginx-zipkin:0.1
${ZIPKIN_ENDPOINT}
是前提条件中保存的v1版本的Agent接入点信息。不包括“http://”部分,且以英文问号(?)结尾。
例如:
docker run --rm -p 80:80 -e "COLLECTOR_HOST=tracing-analysis-dc-hz.aliyuncs.com/adapt_123@abc_456@efg/api/v1/spans?" -d nginx-zipkin:0.1
在ECS上部署和跟踪Nginx
- 安装Nginx。
- 下载并解压Nginx源码。
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -xzvf nginx-1.14.2.tar.gz
- 编译Nginx源码。
cd nginx-1.14.2
./configure --with-compat
make
sudo make install
- 安装OpenTracing插件。
- 下载OpenTracing插件并解压。
wget https://github.com/opentracing-contrib/nginx-opentracing/releases/download/v0.7.0/linux-amd64-nginx-1.14.0-ngx_http_module.so.tgz
tar -xzvf linux-amd64-nginx-1.14.0-ngx_http_module.so.tgz
- 拷贝.so文件至Nginx的modules目录。如果不存在该目录则需要先创建。
sudo mkdir /usr/local/nginx/modules
sudo cp ngx_http_opentracing_module.so /usr/local/nginx/modules/ngx_http_opentracing_module.so
- 使用Zipkin进行链路追踪。
- 下载Zipkin插件并将其拷贝至任意工作目录。
wget https://github.com/rnburn/zipkin-cpp-opentracing/releases/download/v0.5.2/linux-amd64-libzipkin_opentracing_plugin.so.gz
gunzip linux-amd64-libzipkin_opentracing_plugin.so.gz
sudo cp linux-amd64-libzipkin_opentracing_plugin.so /usr/local/lib/libzipkin_opentracing_plugin.so
- 配置/usr/local/nginx/conf/nginx.conf文件。
load_module modules/ngx_http_opentracing_module.so;
events {}
http {
opentracing on;
opentracing_load_tracer /usr/local/lib/libzipkin_opentracing.so /etc/zipkin-config.json;
server {
error_log /var/log/nginx/debug.log debug;
listen 80;
location ~ {
opentracing_operation_name $uri;
opentracing_trace_locations off;
# 跳转到代理的服务,用户根据需要替换。
proxy_pass http://127.0.0.1:8081;
opentracing_propagate_context;
}
}
}
- 在/etc/zipkin-config.json文件中配置Zipkin参数。
{
"service_name": "nginx",
"collector_host": "zipkin"
}
若使用阿里云的Zipkin托管服务,则将collector_host配置为Zipkin接口。
说明 Zipkin接口的值为前提条件中保存的v1版本的Agent接入点信息,不包括“http://”部分,且以英文问号(?)结尾。
"collector_host": "tracing-analysis-dc-hz.aliyuncs.com/adapt_abc123@abc456_abc123@abc356/api/v1/spans?"
- 通过sample_rate配置采样比例。
// 10%的采样比例
"sample_rate":0.1
- 运行Nginx并访问Nginx服务。
sudo /usr/local/nginx/sbin/nginx
curl "http://localhost"
在其他环境上部署和跟踪Nginx
- 从Registry中拉取镜像。
sudo docker pull registry.cn-hangzhou.aliyuncs.com/public-community/nginx-zipkin:0.1
- 运行Nginx Docker。
docker run --rm -p 80:80 -e "COLLECTOR_HOST=${ZIPKIN_ENDPOINT}?" -d registry.cn-hangzhou.aliyuncs.com/public-community/nginx-zipkin:0.1
${ZIPKIN_ENDPOINT}
是前提条件中保存的v1版本的Agent接入点信息。不包括“http://”部分,且以英文问号(?)结尾。
例如:
docker run --rm -p 80:80 -e "COLLECTOR_HOST=tracing-analysis-dc-hz.aliyuncs.com/adapt_******_******/api/v1/spans?" -d registry.cn-hangzhou.aliyuncs.com/public-community/nginx-zipkin:0.1
- 访问Nginx页面。
在浏览器访问localhost/nginx.conf或者curl "localhost/nginx.conf"。
查看结果
登录
ARMS控制台后,在页面选择目标应用,查看链路数据。
说明 语言列显示

图标的应用为接入应用监控的应用,显示
-图标的应用为接入链路追踪的应用。