nginx纳入skywalking调用链监控

nginx纳入skywalking调用链监控

  • 一、说明
  • 二、nginx部署
    • 2.1 OpenResty介绍
    • 2.2 准备SkyWalking Nginx Agent
    • 2.3 docker方式部署OpenResty
      • 2.3.1 修改配置文件
      • 2.3.2 启动OpenResty容器
    • 2.4 验证

一、说明

服务器中已部署好skywalking,并将tomcat纳入skywalking监控(tomcat接入skywalking的方式可以参考https://blog.csdn.net/qq_44209563/article/details/131420026)。

已有部署信息:

组件访问地址备注
skywalkinghttp://132.122.107.9:8082数据采集端口12800
tomcathttp://132.122.107.9:8089

现在需要部署nginx,同时也将nginx纳入skywalking监控;测试访问请求从nginx转到tomcat,在skywalking中查到相关的调用链信息。

二、nginx部署

SkyWalking Nginx Agent只为Nginx提供了由Nginx LUA模块驱动的本机跟踪功能。Nginx不自带LUA模块,可以编译安装或者使用OpenResty

也就是说,nginx需要纳入skywalking监控,需要依赖LUA模块,但是nginx本身没有,所以将nginx改用OpenResty

2.1 OpenResty介绍

官网地址:https://openresty.org/cn/

OpenResty® 是一个基于Nginx 与 Lua 的高性能 Web 平台, 正是我们所需要的。
OpenResty 简单理解成 就相当于封装了nginx,并且集成了LUA脚本, 配置使用同nginx相似。

2.2 准备SkyWalking Nginx Agent

skywalking-nginx-lua是nginx的agent,基本由lua语言编写。

下载:
执行命令wget https://github.com/apache/skywalking-nginx-lua/archive/refs/tags/v0.6.0.tar.gz

解压:
执行命令tar -zxvf skywalking-nginx-lua-0.6.0.tar.gz,解压后有个文件夹:
在这里插入图片描述
文件夹内容如下:
在这里插入图片描述

skywalking-nginx-lua-0.6.0文件路径,(以自己的解压路径为准,以下只是我在服务器中的解压路径):
/home/it_ops/test/apps/skywalking-nginx-lua-0.6.0

2.3 docker方式部署OpenResty

OpenResty配置文件信息参考:https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files
在这里插入图片描述

拉取镜像:
docker pull openresty/openresty:latest

OpenResty容器内的配置文件位置主要有两个:
1./usr/local/openresty/nginx/conf/nginx.conf, 查看其中内容可以发现包含另一处的配置文件:
在这里插入图片描述
2. /etc/nginx/conf.d/目录下的的*.conf,也就是上图提到的位置

2.3.1 修改配置文件

参考文章:
https://blog.csdn.net/m0_60244783/article/details/127716816
github地址:
https://github.com/apache/skywalking-nginx-lua

新建一个配置文件mysit.conf(在/home/it_ops/test/apps/myConfig目录下新建), 将使用挂载的方式挂到容器的/etc/nginx/conf.d/目录下,内容如下:

    ## nginx-agent包的路径, 启动容器时命令添加参数-v /home/it_ops/test/apps/skywalking-nginx-lua-0.6.0:/usr/local/nginx-lua,使用挂载的方式lua_package_path "/usr/local/nginx-lua/lib/?.lua;;";# Buffer represents the register inform and the queue of the finished segmentlua_shared_dict tracing_buffer 100m;# Init is the timer setter and keeper# Setup an infinite loop timer to do register and trace report.init_worker_by_lua_block {local metadata_buffer = ngx.shared.tracing_buffer-- Set service name# 服务名metadata_buffer:set('serviceName', 'nginx-test-service')-- Instance means the number of Nginx deployment, does not mean the worker instances# 服务实例metadata_buffer:set('serviceInstanceName', 'nginx-instance')-- type 'boolean', mark the entrySpan include host/domainmetadata_buffer:set('includeHostInEntrySpan', false)-- set ignoreSuffix, If the operation name(HTTP URI) of the entry span includes suffixes in this set, this segment would be ignored. Multiple values should be separated by a comma(',').-- require("skywalking.util").set_ignore_suffix(".jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.svg")-- set random seedrequire("skywalking.util").set_randomseed()# skywalking服务的Ip和数据采集端口require("skywalking.client"):startBackendTimer("http://132.122.107.9:12800")-- If there is a bug of this `tablepool` implementation, we can-- disable it in this way-- require("skywalking.util").disable_tablepool()skywalking_tracer = require("skywalking.tracer")}server {## 监听端口listen 80;## 路径location /tomcat {default_type text/html;rewrite_by_lua_block {-------------------------------------------------------- NOTICE, this should be changed manually-- This variable represents the upstream logic address-- Please set them as service logic name or DNS name---- Currently, we can not have the upstream real network address------------------------------------------------------skywalking_tracer:start("openresty-132.122.107.9:8085")-- If you want correlation custom data to the downstream service-- skywalking_tracer:start("upstream service", {custom = "custom_value"})}## 代理地址,设置成tomcat地址,## 注意端口号后边要加上"/", 达到访问ip:80/tomcat -> 转发到http://132.122.107.9:8089的效果## 如果不加"/", 那么访问 ip:80/tomcat -> 则转发到http://132.122.107.9:8089/tomcatproxy_pass http://132.122.107.9:8089/;body_filter_by_lua_block {if ngx.arg[2] thenskywalking_tracer:finish()end}log_by_lua_block {skywalking_tracer:prepareForReport()}}}

2.3.2 启动OpenResty容器

执行命令:
sudo docker run --rm -p 8085:80 -v /home/it_ops/test/apps/skywalking-nginx-lua-0.6.0:/usr/local/nginx-lua -v /home/it_ops/test/apps/myConfig:/etc/nginx/conf.d/ openresty/openresty:v-test

启动后访问服务IP+端口:http://132.122.107.9:8085,出现以下信息表示部署成功:
在这里插入图片描述

参数解释:
-p 8085:80 -> 容器端口80,同配置文件中的监听端口一致
在这里插入图片描述

-v /home/it_ops/test/apps/skywalking-nginx-lua-0.6.0:/usr/local/nginx-lua
-> /home/it_ops/test/apps/skywalking-nginx-lua-0.6.0, 服务器解压nginx-agent包的路径, 挂载到容器内的/usr/local/nginx-lua(nginx-lua目录需要自己在容器内新建,再把容器制作成新的镜像openresty/openresty:v-test供后续使用)
-> /usr/local/nginx-lua,容器内的路径,挂载放置着服务器的nginx-agent包
在这里插入图片描述
-v /home/it_ops/test/apps/myConfig:/etc/nginx/conf.d
-> 新建mysite.conf文件的目录挂载到容器内的/etc/nginx/conf.d目录

2.4 验证

通过访问OpenResty,转到tomcat,访问服务IP:8085/tomcat:
http://132.122.107.9:8085/tomcat
在这里插入图片描述
说明请求转发成功。
再查看skywalking服务,查看是否有注册的nginx服务名:
在这里插入图片描述
说明注册成功。
查看拓扑信息,可以看到调用链的具体情况:
在这里插入图片描述
至此表示所有测试完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9642.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity包体积优化实践

目录 简述优化前优化中assets目录资源ab包动态下发资源大小优化dll大小优化场景模型动态下载和加载优化assets目录后大小 lib目录优化目标架构裁剪代码优化代码和引用 其他优化项Shader优化Release模式编译选项 优化后 简述 在移动端App混合Unity开发的项目中,Unit…

MATLAB图像处理实现高光抑制

下面是的几个用MATLAB进行高光抑制的处理例子。 1. 基于最大值滤波的亮光抑制方法 原理是用某像素周围一定大小的邻域中的最大值减去该像素值,可达到亮光抑制的效果。在MATLAB中,可以使用mat2gray函数将图像归一化后,再使用imextendedmax函…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册10

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

目标检测的评估指标

Precision(精确率/查准率):是指在所有被预测为正的样本中,确实是正样本的占比。当Precision越大时,FP越小,此时将其他类别预测为本类别的个数也就越少,可以理解为预测出的正例纯度越高。Precision越高,误检…

ORA-01122 ORA-01200故障处理---惜分飞

由于某种原因客户的数据库启动报ORA-01122 ORA-01200错误 让客户把system01.dbf文件发给我进行分析,发现system01.dbf文件大于32G(在8k的blocksize库中,默认情况system01.dbf文件不会超过32G),这个明显异常 检测坏块情况发现4096000之后的block全部为全0块 通过bbed分析文…

uniapp-设置全屏

需求&#xff1a;就是想要小程序不受限制&#xff0c;可以把图片或者文字全屏的展示&#xff0c;如下图 vue代码如下&#xff1a; <template><view class"content"><image class"image-bg" src"/static/logo.png" /><imag…

学生成绩管理系统的设计与实现(论文+源码)_kaic

摘要 该系统在开发过程中&#xff0c;要注意使其与业务流程的运作相一致&#xff0c;力争使该系统全面&#xff0c;通用&#xff0c;以便该系统不仅适用于教育机构。在开发方法的选择上&#xff0c;选择生命周期方法和原型方法&#xff0c;并按照四个主要阶段的系统研究&#x…

Jvm jmx_exporter Prometheus dubbo Grafana 重点看端口要对应上 单独进程和程序进程内jmx_exporter

目录 JMX Exporter 的两种用法 启动独立进程 jmx_prometheus_httpserver-0.18.0.jar 方式 下载 jmx_exporter 找地方随便一放 创建配置文件 config_jmx_exporter.yaml 增加 启动 jvm 配置 一定要是jvm参数 可别意外写成程序参数 启动jmx_exporter Prometheus yml 配置 …

php://input文件包含

实验目的 通过本实验&#xff0c;了解php封装伪协议&#xff0c;掌握php://input文件包含的用法 实验环境 操作机&#xff1a;kali 靶机&#xff1a;Windows 实验地址&#xff1a;http://靶机ip/exp/include2/input/input2/ 工具&#xff1a;burpsuite 用户名&#xff1a…

UE4/5用贴图和GeneratedDynamicMeshActor曲面细分与贴图位移制作模型

目录 制作逻辑&#xff1a; ​编辑 曲面细分函数&#xff1a; 添加贴图逻辑&#xff1a; 代码&#xff1a; 制作逻辑&#xff1a; 在之前的文章中&#xff0c;我们使用了网格细分&#xff0c;而这一次我们将使用曲面细分函数&#xff0c;使用方法和之前是一样的&#xff1a…

k8s中kubectl陈述式/声明式资源管理

k8s陈述资源管理方法的说明 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具&#xff0c;用于与 apiserver 进行通信&#xff0c;将用户在命令行输入的命令&#xff0c;组织并转化为 apiserver 能识别的信息&…

Linux-vim与gdb与make/makefile

三个模式&#xff1a;命令模式 文本模式 底行模式 yum :instell 安装 remove 卸载 gcc -o执行后生成文件命名 gcc 1.c -o fst.out -E预编译 -S汇编 -c生成机器码 Linux 中 静态库&#xff1a;.a&#xff1b;动态库&#xff1a;.so Linux默认动态库&#xff0c;…