skywalking agent监控java服务
一、前言
skywalking agent可以监控的服务类型有多种,python、go、java、nodejs服务等都可以监控,现在通过java服务来演示skywalking agent的使用,并且是使用容器的方式实现
二、部署skywalking agent监控
需要注意,skywalking agent服务也是需要使用java服务的,所以需要使用跟java服务对应的版本,我这边java服务使用的是jdk11版本,所以skywalking agent也需要用支持java11的版本,在skywalking官网的下载页面中有说到images的下载
官网路径:Downloads | Apache SkyWalking
image路径:https://hub.docker.com/r/apache/skywalking-java-agent
现在通过容器的方式去调用skywalking agent监控java服务
编辑yaml配置
vi k8s-cs.yaml
apiVersion: apps/v1
kind: Deployment
metadata: labels:app: k8s-csname: k8s-csnamespace: k8s-cs
spec:replicas: 5progressDeadlineSeconds: 600minReadySeconds: 10strategy:rollingUpdate:maxSurge: 1maxUnavailable: 0type: RollingUpdateselector:matchLabels:app: k8s-cstemplate:metadata:labels:app: k8s-csspec:volumes: #使用临时挂载的方式创建存放skywalking-agent文件的目录- name: skywalking-agentemptyDir: {}initContainers: #使用初始化容器的方式去启动skywalking-agent容器,在该容器执行完成后,就会启动后面指定的容器- name: skywalking-agent-containerimage: apache/skywalking-java-agent:8.7.0-alpine #使用skywalkinag-agent镜像volumeMounts:- name: skywalking-agent #挂载临时目录mountPath: /agent #将临时目录挂载到agent目录command: ["/bin/sh"] #执行命令args: ["-c","cp -R /skywalking/agent /agent/"] #将容器中/skywalking/agent目录下的所有文件都拷贝到挂载的临时目录中,相当于skywalking-agent服务的所有文件都要拷贝走containers: #配置java服务容器- name: k8s-csimage: harbor.apex.com/jdk/k8s-cs:jenkins-k8s-cs-217-02d8c7aimagePullPolicy: IfNotPresentports:- containerPort: 8761readinessProbe:httpGet:path: /port: 8761scheme: HTTPinitialDelaySeconds: 30periodSeconds: 10timeoutSeconds: 2successThreshold: 1failureThreshold: 2livenessProbe:tcpSocket:port: 8761initialDelaySeconds: 30periodSeconds: 10successThreshold: 1timeoutSeconds: 2failureThreshold: 2 env: #配置环境变量,以下变量在启动java服务的时候都需要使用- name: JAVA_TOOL_OPTIONS #定义使用skywalking-agent服务的变量value: "-javaagent:/skywalking/agent/skywalking-agent.jar"- name: SW_AGENT_NAME #定义skywalking-agent服务的名称value: "-DSW_AGENT_NAME=k8s-cs"- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES #指定skywalking opa服务的地址value: "-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=10.1.60.115:11800"volumeMounts: #挂载临时目录,因为上面使用此临时目录已经拷贝了skywalking-agent服务的文件,所以在java服务的容器中挂载然后使用就可以了- name: skywalking-agentmountPath: /skywalking #将临时目录挂载到/skywalking目录下,容器没有该目录时会自动创建imagePullSecrets:- name: harbor-secretrestartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:name: k8s-csnamespace: k8s-cs
spec:selector:app: k8s-cstype: NodePortclusterIP:ports:- port: 8761targetPort: 8761nodePort: 30003protocol: TCP
以上就是容器化使用skywalking agent的方式,接下来再看一下dockerfile是如何在启动java服务时调用skywalking agent服务的,一般来说使用skywalking agent服务只需要用到上面yaml文件中的三个变量即可,即指定skywalking agent服务的jar包,定义服务的名称,指定skywalking oap服务的地址
cat dockerfile
FROM harbor.apex.com/base_image/jdk11_image:latest
ENV JVM_OPTS="-Xms512m -Xms512m"
ENV HEAP_DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/java_jar/log"
RUN mkdir -p /opt/java_jar/log
WORKDIR /opt/java_jar/
COPY ./target/*.jar ./
EXPOSE 8761
#在启动java服务时应用为skywalking agent定义的三个变量,另外两个是定义java服务的
ENTRYPOINT java ${JAVA_TOOL_OPTIONS} ${SW_AGENT_NAME} ${SW_AGENT_COLLECTOR_BACKEND_SERVICES} ${JVM_OPTS} ${HEAP_DUMP_OPTS} -jar *.jar
执行该yaml生成容器
查看skywalking web看是否有监控到该java服务
在额外的讲解一下,关于skywalking agent服务的问题,我们通过进入 skywalking agent的容器中了解
可以看到容器中的/skywalking/anget目录下有多个skywalking agent服务的文件,其中skywalking-agent.jar是要在启动java服务时去调用的,但是不能单单只要该jar服务,不然会报错,需要把该目录下的所有文件都拷贝走,在启动该jar服务的时候,会调用到该目录下的其它文件
接下来再看一下java容器的变量
可以看到无论是dockerfile定义的环境变量,还是yaml定义的环境变量,都被应用到了java的容器中 ,再来看一下挂载的临时目录
可以看到也是正常挂载进来了
将java服务和skywalking agent服务分开来部署主要是为了,在有需求要升级skywalking agent的版本时,避免影响java服务的版本,如果两个服务部署到一起,在使用升级版本的skywalking agent服务后又要重新进行镜像的构造
相关文章:

skywalking agent监控java服务
一、前言 skywalking agent可以监控的服务类型有多种,python、go、java、nodejs服务等都可以监控,现在通过java服务来演示skywalking agent的使用,并且是使用容器的方式实现 二、部署skywalking agent监控 需要注意,skywalking…...
LARGE LANGUAGE MODEL AS AUTONOMOUS DECISION MAKER
本文是LLM系列文章,针对《LARGE LANGUAGE MODEL AS AUTONOMOUS DECISION MAKER》的翻译。 作为自主决策者的大语言模型 摘要1 引言2 前言3 任务形式化4 方法5 实验6 相关工作7 结论 摘要 尽管大型语言模型(LLM)表现出令人印象深刻的语言理解…...

【Unity-Cinemachine相机】Cinemachine Brain属性详解
在Package Manager中下载Cinemachine 创建一个Virtual Camera,然后会发现Main Camera后面多出了个标志,而且属性也不能再修改了 因为绑定了CinemachineBrain,它会读取场景中某个虚拟相机的配置,并以此配置来控制相机的行为&#x…...

使用Python对数据的操作转换
1、列表加值转字典 在Python中,将列表的值转换为字典的键可以使用以下代码: myList ["name", "age", "location"] myDict {k: None for k in myList} print(myDict) 输出: {name: None, age: None, loca…...

MyBatis-Plus —— 初窥门径
前言 在前面的文章中荔枝梳理了MyBatis及相关的操作,作为MyBatis的增强工具,MyBatis-Plus无需再在xml中写sql语句,在这篇文章中荔枝将梳理MyBatis-Plus的基础知识并基于SpringBoot梳理MyBatis-Plus给出的两个接口:BaseMapper和ISe…...

音频——I2S 标准模式(二)
I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S format时序图逻辑分析仪抓包 I2S format 飞利浦 (I2S) 标准模式 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB,其他位一直到 LSB 按顺序传传输依…...

Python语音识别处理详解
概要 人们对智能语音助手的需求不断提高,语音识别技术也随之迅速发展。在这篇文章中,我们将介绍如何使用Python的SpeechRecognition和pydub等库来实现语音识别和处理,从而打造属于自己的智能语音助手。 1. 什么是语音识别? 语音…...

【小吉送书—第一期】Kali Linux高级渗透测试
文章目录 🍔前言🛸读者对象🎈本书资源🎄彩蛋 🍔前言 对于企业网络安全建设工作的质量保障,业界普遍遵循PDCA(计划(Plan)、实施(Do)、检查&#x…...
服务器允许ssh登录root
用vim打开/etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config将sshd_config中的PermitRootLogin属性改为yes ... PermitRootLogin yes ...重启sshd服务 sudo service sshd restart...

【微服务部署】三、Jenkins+Maven插件Jib一键打包部署SpringBoot应用Docker镜像步骤详解
前面我们介绍了K8SDockerMaven插件打包部署SpringCloud微服务项目,在实际应用过程中,很多项目没有用到K8S和微服务,但是用到了Docker和SpringBoot,所以,我们这边介绍,如果使用Jenkinsjib-maven-plugin插件打…...

Ansible学习笔记9
yum_repository模块: yum_repository模块用于配置yum仓库的。 测试下: [rootlocalhost ~]# ansible group1 -m yum_repository -a "namelocal descriptionlocalyum baseurlfile:///mnt/ enabledyes gpgcheckno" 192.168.17.106 | CHANGED &g…...

Ubuntu22.04安装Mongodb7.0
Ubuntu安装Mongodb 1.平台支持2.安装MongoDB社区版2.1导入包管理系统使用的公钥2.2为MongoDB创建列表文件2.3重新加载本地包数据库2.4安装MongoDB包1.安装最新版MongoDB2.安装指定版MongoDB 3.运行MongoDB社区版1.目录2.配置文件3.初始化系统4.启动MongoDB5.验证MongoDB是否成功…...
Oracle中序列删除的正确语句(oracle删除序列语句)
Oracle中序列删除的正确语句 Oracle 是由世界上最大的软件公司 Oracle Corporation 提供的关系型数据库管理系统,拥有广泛的应用和功能,如存储过程、触发器、视图、序列以及其他的复杂的特性,能够满足丰富的业务需求。本文主要研究Oracle中序…...
ChatGPT AI在线免费体验
🤖 与ChatGPT亲密接触 🤖 ChatGPT!它就是一款强大的聊天型人工智能模型,可以与你进行各种有趣的对话,就像我们在这里一样。不论你想聊天、提问、寻求建议,还是只是想找个伙伴一起闲聊,ChatGPT都…...

CSS中如何实现文字渐变色效果(Text Gradient Color)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 文字渐变色效果(Text Gradient Color)⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这…...
尚硅谷SpringMVC (1-4)
一、SpringMVC简介 1、什么是MVC MVC 是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M : Model ,模型层,指工程中的 JavaBean ,作用是处理数据 JavaBean 分为两类: 一类称为实体类Bean&am…...

独家首发!openEuler 主线集成 LuaJIT RISC-V JIT 技术
RISC-V SIG 预期随主线发布的 openEuler 23.09 创新版本会集成 LuaJIT RISC-V 支持。本次发版将提供带有完整 LuaJIT 支持的 RISC-V 环境并带有相关软件如 openResty 等软件的支持。 随着 RISC-V SIG 主线推动工作的进展,LuaJIT 和相关软件在 RISC-V 架构下的支持也…...

在Mac 上安装flutter 遇到的问题
准备工作 1、升级Macos系统为最新系统 2、安装最新的Xcode 3、电脑上面需要安装brew https://brew.sh/ 4、安装chrome浏览器(开发web用) 下载Flutter、配置Flutter环境变量、配置Flutter镜像 下载Flutter SDK https://docs.flutter.dev/release/archive?tabmacos 根据自己…...

一个月能做什么?成长感悟分享
一个月做了什么? 八月做了些什么? 单词打卡 第一件事情就是单词打卡 英语很差的我,一样继续打卡,今天是第736天 当你还在纠结扇贝和不背、可可英语哪一个好的时候,别人已经同时使用了 当你还在咨询学编程、敲代码需…...

网络编程
1. 网络编程入门 1.1 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...