SkyWalking使用案例

news2024/10/3 8:25:37

SkyWalking监控java项目Halo博客

在这里插入图片描述

Halo是一个开源的博客项目,使用java编写,官网地址:https://halo.run/

安装java环境,Halo对java版本有限制,1.4.3版本以上需要使用java11以上
在这里插入图片描述

apt -y install openjdk-11-jdk
java --version

下载SkyWalking对应的Java Agent
在这里插入图片描述
在这里插入图片描述

wget https://dlcdn.apache.org/skywalking/java-agent/8.14.0/apache-skywalking-java-agent-8.14.0.tgz
tar xf apache-skywalking-java-agent-8.14.0.tgz -C /usr/local/src/

修改SkyWalking Java Agnet的配置文件

vim /usr/local/src/skywalking-agent/config/agent.config	#修改下面3个配置参数,其余可保持默认
########################################
 20 agent.service_name=${SW_AGENT_NAME:halo}	#agent监控的项目或服务在SkyWalking UI上对应的服务名称
 21
 22 # The agent namespace
 23 agent.namespace=${SW_AGENT_NAMESPACE:n70}	#agent所在的名称空间,可以用来标示服务所属项目
104 collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.122.28:11800}	#指定SkyWalking Server的地址和端口

下载Halo项目jar包

mkdir /usr/local/src/halo
wget https://github.com/halo-dev/halo/releases/download/v1.6.0/halo-1.6.0.jar -O /usr/local/src/

运行Halo项目

#通过-javaagent选项指定Java Agnet的路径
nohup java -javaagent:/usr/local/src/skywalking-agent/skywalking-agent.jar -jar /usr/local/src/halo/halo-1.6.0.jar &

运行之后对Halo进行初始华设置
在这里插入图片描述
在这里插入图片描述

之后就可以在SkyWalking的UI界面上看到关于Halo项目的数据
在这里插入图片描述

在这里插入图片描述

SkyWalking监控nginx+Jenkins项目

在这里插入图片描述

Jenkins部署

下载tomcat和jenkins安装包

cd /usr/local/src
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.86/bin/apache-tomcat-8.5.86.tar.gz
wget https://get.jenkins.io/war-stable/2.375.3/jenkins.war
tar xf apache-tomcat-8.5.86.tar.gz -C /usr/local/
ln -sv /usr/local/apache-tomcat-8.5.86 /usr/local/tomcat
cd /usr/local/tomcat/webapps
mv /usr/local/src/jenkins.war ./

修改catalina.sh,配置tomcat启动时加载skywalking java-agent

vim /usr/local/tomcat/bin/catalina.sh
############################
#在文件开头添加此行,指定skywalking java-agent位置
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS

skywalking java-agent的下载和配置可以参考上面的Halo项目配置

启动tomcat

/usr/local/tomcat/bin/catalina.sh start

查看tomcat的启动日志/usr/local/tomcat/logs/catalina.out,确保服务正常启动

访问jenkins,进行初始化设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

现在SkyWalking UI界面就已经有Jenkins服务的相关数据了

在这里插入图片描述

nginx编译安装

由于Skywalking nginx-lua-agent需要lua环境,所以需要nginx编译的时候需要加载lua相关模块

配置luajit2

cd /usr/local
wget https://github.com/openresty/luajit2/archive/refs/tags/v2.1-20230119.tar.gz -O luajit2-2.1-20230119.tar.gz
tar xf luajit2-2.1-20230119.tar.gz
cd luajit2-2.1-20230119/
make install PREFIX=/usr/local/luajit2-2.1-20230119

#配置系统变量,编译nginx时使用
echo "export LUAJIT_LIB=/usr/local/luajit2-2.1-20230119/lib" >>/etc/profile
echo "export LUAJIT_INC=/usr/local/luajit2-2.1-20230119/include//luajit-2.1" >>/etc/profile
source /etc/profile

#配置系统加载luajit2相关的库文件
vim /etc/ld.so.conf.d/libc.conf
#############################
# libc default configuration
/usr/local/lib
/usr/local/luajit2-2.1-20230119/lib
#############################
ldconfig

配置lua-resty-core

cd /usr/local
wget https://github.com/openresty/lua-resty-core/archive/refs/tags/v0.1.25.tar.gz -O lua-resty-core-0.1.25.tar.gz
tar xf lua-resty-core-0.1.25.tar.gz
cd lua-resty-core-0.1.25/
mkae install PREFIX=/usr/local/luacore

配置lua-resty-lrucache

cd /usr/local
wget https://github.com/openresty/lua-resty-lrucache/archive/refs/tags/v0.13.tar.gz -O lua-resty-lrucache-0.13.tar.gz
tar xf lua-resty-lrucache-0.13.tar.gz
cd lua-resty-lrucache-0.13/
make install PREFIX=/usr/local/lua-lrucache

配置lua-cjson

cd /usr/local
wget https://github.com/openresty/lua-cjson/archive/refs/tags/2.1.0.9.tar.gz -O lua-cjson-2.1.0.9.tar.gz
tar xf lua-cjson-2.1.0.9.tar.gz
cd lua-cjson-2.1.0.9/

vim Makefile    #编辑Makefile文件,将LUA_INCLUDE_DIR的路径修改为前面luajit2的路径
#####################
LUA_INCLUDE_DIR ?=   /usr/local/luajit2-2.1-20230119/include//luajit-2.1
######################

#执行编译
make
make install

下载ngx_devel_kit和lua-nginx-module模块,编译nginx时添加

cd /usr/local/
wget https://github.com/vision5/ngx_devel_kit/archive/refs/tags/v0.3.2.tar.gz -O ngx_devel_kit-0.3.2.tar.gz
tar xf ngx_devel_kit-0.3.2.tar.gz

wget https://github.com/openresty/lua-nginx-module/archive/refs/tags/v0.10.23.tar.gz -O lua-nginx-module-0.10.23.tar.gz
tar xf lua-nginx-module-0.10.23.tar.gz

编译安装nginx

cd /usr/local/src/
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar xf nginx-1.22.1.tar.gz
cd nginx-1.22.1
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-file-aio \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--add-module=/usr/local/ngx_devel_kit-0.3.2/ \
--add-module=/usr/local/lua-nginx-module-0.10.23/	#注意要添加这两个模块

make && make install

测试nginx lua环境是否生效

vim /usr/local/nginx/conf/nginx.conf    #修改nginx配置,导入lua包,添加lua测试页面
##################################
http {
    include       mime.types;
    default_type  application/octet-stream;
    #添加此行,指定之前安装的lua-lrucache和lua-resty-core包位置
    lua_package_path "/usr/local/lua-lrucache/lib/lua/?.lua;/usr/local/luacore/lib/lua/?.lua;;";
    
    
    ......
    
    server {
        #添加一个/hello测试页面
        location /hello {
          default_type text/html;
          content_by_lua_block {
          ngx.say("Hello Lua")
          }
        }
            
    }
}
###################################
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf    #启动nginx

访问测试页面验证,能成功显示Hello Lua就表示lua环境已经生效

在这里插入图片描述

Skywalking nginx-lua-agent配置

nginx-lua-agent项目地址:https://github.com/apache/skywalking-nginx-lua
nginx-lua-agent使用文档:https://skywalking.apache.org/docs/skywalking-java/v8.14.0/readme/

下载安装包

cd /usr/local/
wget https://github.com/apache/skywalking-nginx-lua/archive/refs/tags/v0.6.0.tar.gz -O skywalking-nginx-lua-0.6.0.tar.gz
wget https://github.com/openresty/lua-tablepool/archive/refs/tags/v0.02.tar.gz -O lua-tablepool-0.02.tar.gz
tar xf skywalking-nginx-lua-0.6.0.tar.gz
tar xf lua-tablepool-0.02.tar.gz
cp lua-tablepool-0.02/lib/tablepool.lua skywalking-nginx-lua-0.6.0/lib/

修改nginx配置文件,配置加载nginx-lua-agent

可以参考github上的文档进行配置:https://github.com/apache/skywalking-nginx-lua/tree/v0.6.0

vim /usr/local/nginx/nginx.conf
##################################
http {
    ......
    #在http段添加下面的配置
    #指定nginx-lua-agent包位置
    lua_package_path "/usr/local/lua-lrucache/lib/lua/?.lua;/usr/local/luacore/lib/lua/?.lua;/usr/local/skywalking-nginx-lua-0.6.0/lib/?.lua;;";

    # Buffer represents the register inform and the queue of the finished segment
    lua_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
        -- 指定服务名称,在SkyWalking UI上显示的Service名字
        metadata_buffer:set('serviceName', 'fronted-nginx')    
        -- Instance means the number of Nginx deployment, does not mean the worker instances
        -- 指定实例名称,在SkyWalking UI上显示的Instance名字
        metadata_buffer:set('serviceInstanceName', 'nginx-node1')
        -- type 'boolean', mark the entrySpan include host/domain
        metadata_buffer:set('includeHostInEntrySpan', false)

        -- set random seed
        require("skywalking.util").set_randomseed()
        -- 指定Skywalking Backend Server的地址
        require("skywalking.client"):startBackendTimer("http://192.168.122.29:11800")

        -- 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 {
        
         location / {
            root   html;
            index  index.html index.htm;
        }       
        
        #在需要监控的后端(location配置)中启用nginx-lua-agent收集数据,以jenkins转发配置为例
        location /jenkins {
          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("jenkins")
              -- If you want correlation custom data to the downstream service
              -- skywalking_tracer:start("upstream service", {custom = "custom_value"})
          }

          proxy_pass http://192.168.122.29:8080;

          body_filter_by_lua_block {
              if ngx.arg[2] then
                  skywalking_tracer:finish()
              end
          }

          log_by_lua_block {
              skywalking_tracer:prepareForReport()
          }
        }
    
    }
}

主要涉及两个位置

  • 在http{}段加载nginx-lua-agent模块,并添加关于nginx-lua-agent的一些初始化配置
  • 在http{server{}}段针对需要监控的后端(location配置)中启用nginx-lua-agent收集数据

重新启动nginx

/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx

验证

先通过nginx访问jenkins,产生一些数据

在这里插入图片描述

然后就可以在SkyWalking UI查看nginx服务数据

在这里插入图片描述
在这里插入图片描述

在Topology页面可以看到当前服务的拓扑图
在这里插入图片描述

在Trace界面可以看到请求对应的调用链信息
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matplotlib常用操作

文章目录1 matplotlib绘图1.1 绘图步骤2 matplotlib基本元素2.1 matplotlib 画布2.2 设置坐标轴长度和范围2.3 设置图形的线型和颜色2.4 设置图形刻度范围、刻度标签和坐标轴标签等2.4.1 设置刻度范围2.4.2 设置坐标轴刻度2.5 文本标签图例3 matplotlib的ax对象绘图4 绘制子图5…

2.3 黑群晖驱动:开启nvme缓存、将nvme缓存作为存储盘 教程

黑群晖驱动安装工具下载:链接:https://pan.baidu.com/s/1CMLl6waOuW-Ys2gKZx7Jgg?pwdchct提取码:chct一、开启NVME缓存在群辉->控制面板->终端机和SNMP->终端机中 勾选“启动SSH”功能,并点击应用;下载安装P…

HACKTHEBOX——Teacher

nmapnmap -sV -sC -p- -T4 -oA nmap 10.10.10.153nmap只发现了对外开放了80端口,从http-title看出可能是某个中学的官网http打开网站确实是一个官网,查看每个接口看看有没有可以利用的地方发现了一个接口,/images/5.png,但是响应包…

国内有哪些支持定制化的低代码平台?

编者按:贴合企业业务需求的系统才是好系统,高程度的定制能力平台意味着可以提供更高契合度的产品,更好地匹配业务需求。本文介绍了国内支持定制化的老厂商低代码平台,具有源码交付、私有化部署、国产化、数据对接等优势。关键词&a…

服务端开发之Java备战秋招面试篇5

努力了那么多年,回头一望,几乎全是漫长的挫折和煎熬。对于大多数人的一生来说,顺风顺水只是偶尔,挫折、不堪、焦虑和迷茫才是主旋律。我们登上并非我们所选择的舞台,演出并非我们所选择的剧本。继续加油吧! 目录 1.ArrayList与LinkedList区别, 应用场景…

免费数据恢复软件哪个好?排名前十的软件有这些!

我们经常会使用电脑,有时是为了放松娱乐,有时是为了处理工作。里面保存着大大小小的数据,多的数不胜数。如果我们的数据丢失,通过很多方法都没有办法恢复,那么软件可以帮助用户轻松处理各种丢失的文件,并可…

IDEA git cherry pick 简单使用

cherry pick的作用: 参考了一些博客, eg:参考博客1 参考博客2 再做了个小案例后,我目前的理解是,cherry pick的作用是将一个分支的部分提交/历史提交,可以合并到另外一个分支。这也只是解决办法之一,之后遇到详细真实场…

普元EOS中导出excl页面下载

起因 需要做一个筛选功能的导出表格 解决办法 这个垃圾eos我是真受不了,sb玩意的缺点三天三夜也说不完 后边就没法整response的这些个东西,可真是够愁人的 在网上搜了搜 在普元的帮助文档里也看了看 普元提供的像是老太太的裹脚布一般又臭又长 参照这个可以看一下

怕被AI取代快想办法“攒”个“数字第二大脑”

每日经济新闻发文:来自央视财经微博2月27日消息,美国《财富》杂志网站近日报道,美国一家提供就业服务的平台对1000家企业进行了调查。结果显示,美国最新调查显示50%企业已在用ChatGPT,其中48%已让其代替员工,有公司省下10多万美元!还有30%表示,有计划使用。

4年经验来面试20K的测试岗,一问三不知,我还真不如去招应届生。

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试…

华为OD机试题【找出通过车辆最多颜色】用 C++ 进行编码 (2023.Q1)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明找出通…

4.7 全文本搜索

文章目录1.概述2.使用全文本搜索2.1 启用全文本搜索支持2.2 进行全文本搜索2.3 使用查询拓展2.4 布尔文本搜索3.全文本搜索使用说明1.概述 首先我们要知道,不是所有搜索引擎都支持全文本搜索,前边我们介绍过MySql支持多种数据类型,而其默认的…

【微服务】-微服务环境搭建

目录 2.1 技术选型 2.2 模块设计 2.3 微服务调用 2.4 创建⽗⼯程 2.5 创建商品微服务 2.6 创建订单微服务 2.1 技术选型 持久层: SpingData Jpa 数据库: MySQL5.7 其他: SpringCloud Alibaba 技术栈 2.2 模块设计 --- shop-parent ⽗⼯程 --- shop-product-api 商品微服…

go提高升阶(四) I/O流学习

I/O 官网课程 购买课程找博主推荐 文章目录I/O文件信息创建文件、目录IO读IO写(权限)文件复制Seeker接口断点续传遍历文件夹bufio电脑中一切,都是以 二进制流的形式存在的。jpg:010100000010010101001010101010010101010 编码格式,还原为一个…

(02)Unity HDRP Volume 详解

1.概述这篇文章主要针对HDRP中的Volume和Volume Post-processing进行解释,针对于各个组件只能进行部分参数的解释,具体的信息可参考官方资料,这里只是对官方文档的图片效果补充以及笔者自己的理解。看到这里进入正文,请确保你的Un…

企业IT信息化,BI 能做什么?

随着数字化相关技术、应用的发展,社会总体的数字化发展进入了加速阶段,各行各业都开始有了数字化的身影,在这种情况下,数据已经成为了越来越多企业的重要资产,所以如何处理数据,让数据从资产转化为实际的价…

【Linux】理解文件系统

文章目录理解文件系统了解磁盘结构inode理解文件系统 了解磁盘结构 磁盘是计算机中的一个 机械设备 这个磁盘的盘片就像光盘一样,数据就在盘片上放着, 但是光盘是只读的,磁盘是可读可写的 机械硬盘的寻址的工作方式: 盘片不断旋转,磁头不断摆动,定位到特定的位置 我们可以把…

代码随想录算法训练营day46 | 动态规划之背包问题 139.单词拆分

day46139.单词拆分1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp[i]139.单词拆分 题目链接 解题思路:单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。…

NJ+SCU42做Modbus RTU从站

NJSCU42做Modbus RTU从站实验时间:2023.2.28 硬件设备:NJ501-1300,CJ1W-SCU42 软件:Sysmac Studio,Commix串口调试助手 案例简介:发送Modbus RTU命令读取NJ里的数据 1. 系统概述 264 ​ 本次实验使用C…

「TCG 规范解读」PC 平台相关规范(4)

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…