网站首页 > 技术教程 正文
小白前段时间做Loki分布式追踪时,遇到需要在Nginx这一层生成TraceID和打印traceid相关日志的需求,在网上找了一大圈恁是没找到合适的Docker镜像。
原本应该用opentracing-contrib编译的nginx-opentracing的docker镜像,但是当pull镜像时居然发现它有1.5G的容量,看了Dockerfile才知道这个镜像把Nginx源码和所有编译所需的C库都放在里面,真是佩服。
最后还是得我们自己根据OpenTracing的方法给Nginx安装插件。按照阿里云的文档,小白做了一个Nginx1.14版本镜像提供给大家使用。
quay.io/cloudxiaobai/nginx-jaeger:1.14.0
安装过程参考:https://help.aliyun.com/document_detail/126251.html
zipkin也可以用如上方法炮制
如何使用镜像
1. 首先要启用trace的话,我们需要定义个jaeger的描述配置
jaeger.config
{
"service_name": "nginx",
"sampler": {
"type": "const",
"param": 1
},
"reporter": {
"localAgentHostPort": "jaeger:6831"
},
"headers": {
#一些默认的jaeger Baggage头设置
"jaegerDebugHeader": "jaeger-debug-id",
"jaegerBaggageHeader": "jaeger-baggage",
"traceBaggageHeaderPrefix": "uberctx-"
},
"baggage_restrictions": {
"denyBaggageOnInitializationFailure": false,
"hostPort": ""
}
}
2. nginx也需引入jaeger相关的动态库配置,如下
nginx.conf
# 加载OpenTracing的动态库
load_module modules/ngx_http_opentracing_module.so;
http {
# 加载Jaeger库
opentracing_load_tracer /usr/local/lib/libjaegertracing_plugin.so /etc/jaeger-nginx-config.json;
# 启用Jaeger
opentracing on;
# 选择性的注入Tag
opentracing_tag http_user_agent $http_user_agent;
upstream backend {
server app-service:9001;
}
location ~ {
opentracing_operation_name $uri;
opentracing_propagate_context;
proxy_pass http://backend;
}
}
3. 如果我们需要将Trace的日志打印出来,我们可以设置自定义的日志格式:
log_format opentracing '{"timestamp":"$time_iso8601",'
'"source":"$server_addr",'
'"hostname":"$hostname",'
'"ip":"$http_x_forwarded_for",'
'"traceID":"$opentracing_context_uber_trace_id",'
'"client":"$remote_addr",'
'"request_method":"$request_method",'
'"scheme":"$scheme",'
'"domain":"$server_name",'
'"referer":"$http_referer",'
'"request":"$request_uri",'
'"args":"$args",'
'"size":$body_bytes_sent,'
'"status": $status,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamaddr":"$upstream_addr",'
'"http_user_agent":"$http_user_agent",'
'"https":"$https"'
'}';
access_log /dev/stdout opentracing;
这样我们的日志打印出来的json格式
{
"source": "172.16.0.1",
"timestamp": "2020-11-02T15:58:15+00:00",
"args": "-",
"client": "172.16.0.20",
"domain": "",
"hostname": "e7b3c1369b96",
"http_user_agent": "Ruby",
"https": "",
"ip": "-",
"referer": "-",
"request": "/loki/api/v1/push",
"request_method": "POST",
"responsetime": 0.005,
"scheme": "http",
"size": 0,
"status": 204,
"traceID": "c39f7c73e43ddd29:c39f7c73e43ddd29:0:1",
"upstreamaddr": "172.20.0.3:3100",
"upstreamtime": "0.008"
}
扩展:Ingress-nginx怎么用启用OpenTracing
如果你在kubernetes中用了ingress-nginx作为服务的网关,那么可以直接在ingress中启用opentracing而不用重建镜像。
在启用前,我们需要在ingress-nginx-controller的configmap里面添加如下配置
apiVersion: v1
kind: ConfigMap
data:
enable-opentracing: "true"
#jaeger的常用篇日志
jaeger-collector-host: jaeger-agent.default.svc.cluster.local
jaeger-sampler-param: 1
jaeger-sampler-type: const
#zipkin的常用配置
zipkin-collector-host: zipkin.default.svc.cluster.local
zipkin-sample-rate: 1.0
#datadog的常用配置
datadog-collector-host: datadog-agent.default.svc.cluster.local
datadog-sample-rate: 1.0
metadata:
name: ingress-nginx-controller
namespace: kube-system
启用成功后,我们就可以在jaeger里面看到详情了。
猜你喜欢
- 2024-10-11 如何使用Nginx对Artifactory进行http应用
- 2024-10-11 IntelliJ IDEA必装插件以及SpringBoot使用小技巧合集
- 2024-10-11 WeCube 2.8.0 发布,一站式IT架构管理和运维工具
- 2024-10-11 Kong系列(三)——Kong插件「IP Restriction」使用
- 2024-10-11 docker开箱即用的java版本nginx-clojure实现负载均衡
- 2024-10-11 RTMP和RTSP的区别(rtp rtmp区别)
- 2024-10-11 「开源资讯」njs 0.4.1 发布,nginx 的 JavaScript 脚本语言
- 2024-09-22 免费又好用的缓存插件,非Speed Optimizer莫属
- 2024-09-22 web中间件nginx性能分析与调优(nginx中间件怎么看版本号?)
- 2024-09-22 orange(3)插件功能分析(property_rate_limiting)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)