关于服务监控的对话
1. 容器监控工具
用户询问除了cAdvisor之外的容器监控工具,并希望了解它们是否能与Prometheus集成。Kimi 提供了Sysdig、ManageEngine 应用程序管理器、AppOptics等选项,并简要介绍了它们的功能和集成能力。
2. Docker Swarm 介绍
用户对Docker Swarm表示好奇。Kimi 解释了Docker Swarm是Docker的原生容器编排工具,它允许将多个Docker主机组合成一个虚拟的单一主机,并列举了其关键特性,如集群管理、服务发现、负载均衡等。
3. Docker Swarm与Kubernetes的区别
用户询问Docker Swarm和Kubernetes的区别。Kimi 从多方面进行了比较,指出Kubernetes在功能和社区支持方面更强大,而Docker Swarm以其简单性和快速部署的特点适用于中小规模集群。
4. SkyWalking介绍
用户询问SkyWalking是什么。Kimi 描述了SkyWalking是一个开源的可观察性分析平台(OAP)和应用性能管理系统(APM),专为微服务和云原生架构设计,并提供了其核心功能和特点。
5. SkyWalking的部署方式
用户询问SkyWalking是否可以单独使用,并希望了解如何在Docker Compose管理的容器机器上安装和使用SkyWalking。Kimi 提供了详细的步骤,包括拉取SkyWalking镜像、编写docker-compose文件、启动服务、检查服务状态和访问SkyWalking UI。
6. SkyWalking与Prometheus、cAdvisor的联系
用户询问SkyWalking与Prometheus和cAdvisor的联系。Kimi 瞎解释了。
7. SkyWalking、ManageEngine APM和AppOptics的比较
用户希望比较SkyWalking、ManageEngine的APM功能和AppOptics。Kimi 从历史和特点两个方面进行了比较,指出每个工具的优势和适用场景。
8. SkyWalking Agent的数据通讯
用户询问SkyWalking Agent如何与SkyWalking进行数据通讯。Kimi 解释了SkyWalking Agent通过配置与OAP服务建立连接,并在应用运行时自动收集性能数据,然后通过gRPC协议将数据上报给OAP服务的过程。
添加到应用的启动参数里:
- "-javaagent:/tmp/sky/skywalking-agent/skywalking-agent.jar"
- "-Dskywalking.agent.service_name=xxmanagement"
- "-Dskywalking.agent.log_path=/tmp/sky/skywalking-agent/logs/sky_ta.log"
- "-Dskywalking.agent.config=/tmp/sky/skywalking-agent/config/agent.config"
- "-Dorg.apache.skywalking.apm.dependencies.net.bytebuddy.experimental=true"
- "-jar"
9. SkyWalking的安装部署步骤
用户下载了SkyWalking的tar.gz文件,询问安装部署步骤。Kimi 提供了详细的安装部署步骤,包括解压文件、启动服务、访问UI界面和配置修改。
10. SkyWalking服务的关闭方法
用户询问如何关闭SkyWalking服务(因为没有stop.sh)。Kimi 提供了停止进程的方法。
11. SkyWalking使用的端口
用户询问SkyWalking是否会使用3000(grafana)和9090(prometheus)端口。Kimi 解释了SkyWalking默认不会使用这些端口。
prom和grafana容器化运行、没做持久化,docker-compose做stop,别做down,否则容器被删掉、配置都丢了。
/bin/prometheus --version
prometheus, version 2.54.1
bin/grafana --version
grafana version 11.2.0
prom的配置文件:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
#下面为新增配置
- job_name: "yy_job"
static_configs:
- targets:
- "192.168.191.215:9100"
relabel_configs:
- action: replace
source_labels: ['__address__']
regex: (.*):(.*)
replacement: $1
target_label: instance
- job_name: "yy_docker_job"
static_configs:
- targets:
- "192.168.191.215:28080"
relabel_configs:
- action: replace
source_labels: ['__address__']
regex: (.*):(.*)
replacement: $1
target_label: instance
采集器node_exporter直接主机运行:
cadvisor在容器里运行、下面有运行命令
12. SkyWalking启动脚本的作用
用户询问SkyWalking的启动脚本oapServiceInit.sh、oapServiceNoInit.sh、oapService.sh、startup.sh和webappService.sh的作用。Kimi 对每个脚本的功能进行了解释。
13. SkyWalking日志中的端口冲突问题
用户报告SkyWalking日志中有端口冲突问题。Kimi 提供了可能的原因和解决方案,包括检查其他进程占用端口、更改端口配置、防火墙设置和网络配置问题。
14. SkyWalking与Prometheus端口冲突
用户报告SkyWalking和Prometheus端口冲突问题。Kimi 瞎解释了SkyWalking默认不使用9090端口,并提供了解决端口冲突的建议。
15. Docker安装cAdvisor的命令
用户询问如何使用Docker安装cAdvisor。Kimi 提供了一个命令docker run,用于下载并运行cAdvisor容器,并解释了命令中的各个参数。
容器采集数据的可视化,建议用这个https://grafana.com/grafana/dashboards/19792-cadvisor-dashboard/
可以看到容器配置信息,比如这个不是通过docker-compose而是docker直接启动的
16. Docker是否需要先下载镜像
用户询问是否需要先下载cAdvisor镜像。Kimi 解释了Docker在运行容器时会自动下载所需的镜像。
17. 下载cAdvisor镜像的命令
用户请求提供一个单独下载cAdvisor镜像的命令。Kimi 提供了docker pull命令来下载cAdvisor镜像。
18. YAML文件中_的含义
问错了
19. YAML文件中-的含义
用户询问YAML文件中-的含义。Kimi 解释了-用于表示列表项的开始,并提供了使用-的YAML示例。
20. cAdvisor容器日志中的OOM检测问题
用户报告cAdvisor容器日志中出现OOM检测配置失败的问题。Kimi 解释了错误信息的含义,并提供了几种可能的解决方案,包括使用特权模式运行cAdvisor容器、使用--cap-add=SYS_ADMIN运行cAdvisor容器、配置Docker守护进程以允许访问/dev/kmsg。
docker run --privileged --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=28080:8080 --detach=true --name=cadvisor google/cadvisor:latest
21. Grafana中Angular的弃用
用户询问为什么Grafana将来不支持Angular。Kimi 解释了Grafana可能弃用Angular的原因,包括技术演进、维护成本、社区趋势、性能和可扩展性、简化开发以及长期支持和更新。
22. Java调试参数的影响
用户询问以调试模式运行Java服务是否会影响性能。Kimi 解释了调试模式可能对性能产生的影响,包括调试器附加、调试信息生成、代码优化、内存消耗、I/O操作、上下文切换和监控开销。
docker-compose: - "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5108"
23. 容器CPU使用率异常
用户报告容器内的CPU使用率加起来比宿主机的实际CPU使用率高。Kimi 解释了可能的原因,包括并发与时间共享、CPU核心数、超线程技术、监控工具的统计方式、资源争用和上下文切换、容器监控的粒度、虚拟化开销和监控数据的采样率。
24. Feign客户端的连接拒绝错误
用户报告Feign客户端调用失败的错误。
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept 是 Apache SkyWalking Java Agent 中的一个方法,它属于 SkyWalking 的核心库。这个方法是拦截器(Interceptor)的一部分,用于在目标方法执行前后进行增强处理,也就是所谓的 AOP(面向切面编程)。
在 SkyWalking 中,拦截器用于:
1. 监控方法执行时间:它可以测量被拦截方法的执行时间,以监控应用的性能。
2. 跟踪方法调用:它可以跟踪方法的调用链,这对于分布式追踪和诊断问题非常有用。
3. 修改方法行为:在方法执行前后插入额外的代码,以修改方法的行为。
4. 错误处理:它可以捕获方法执行中发生的异常,并进行相应的错误处理。
当您看到 Feign request failed - Client: IsapLogFeignClient, Method: upsertLog, Error: Connection refused executing POST http://xxxx-admin/inner/log/upsert 这样的错误,并且它与 InstMethodsInter.intercept 方法相关联时,这意味着 SkyWalking Agent 正在尝试监控 Feign 客户端发起的 upsertLog 方法调用,但是调用失败了,因为无法连接到 xxxx-admin 服务。
这个问题可能与 SkyWalking 无关,而是由于 Feign 客户端无法连接到 xxxx-admin 服务导致的。SkyWalking 只是监控了这个调用,并报告了失败的结果。您需要检查 xxxx-admin 服务的状态和网络配置,以确保 Feign 客户端可以成功连接。
25. SkyWalking Agent的异常错误
ERROR 2024-12-11 11:25:25.481 http-nio-8310-exec-8 SkyWalkingAgent : Enhance class com.controlplatform.isc.common.enums.CertificateClientStatusEnums error.
java.lang.IllegalArgumentException: Java 23799 (-3777245) is not supported by the current version of Byte Buddy which officially supports Java 22 (66) - update Byte Buddy or set org.apache.skywalking.apm.dependencies.net.bytebuddy.experimental as a VM property
很多类似的报错,并且每次Java 23799这个数字无规律变化
用户报告SkyWalking Agent增强类时出现异常错误。Kimi 解释了错误信息的含义,并提供了可能的原因和解决方案,包括Java版本与Byte Buddy兼容性问题、升级Byte Buddy或设置VM属性以允许实验性支持。
26. 查看Byte Buddy版本
用户询问如何查看Java应用程序使用的Byte Buddy版本。Kimi 提供了几种方法,包括检查项目的依赖管理文件、使用Maven或Gradle命令、检查JAR文件的MANIFEST.MF、使用IDE以及临时不使用xjar运行加密JAR文件。
我的java版本是:openjdk version "17.0.10" 2024-01-16
27. xjar与Java版本号异常
用户询问是否因为使用了加密后的xjar导致读取的Java版本号异常。Kimi 解释了xjar与Java版本号异常之间没有直接关系,并提供了一些验证步骤和建议。
28. 添加VM参数后的报错
docker-compose里面: - "-Dorg.apache.skywalking.apm.dependencies.net.bytebuddy.experimental=true"
新的报错如:
ERROR 2024-12-11 14:09:03.866 main SkyWalkingAgent : Enhance class com.controlplatform.isc.common.service.impl.RedisServiceImpl error. java.lang.IllegalArgumentException: Unsupported class file major version 28389
多种类似报错、且这里的version后面的数字也总是变,如:Unsupported class file major version 19095
用户报告添加-Dorg.apache.skywalking.apm.dependencies.net.bytebuddy.experimental=true参数后出现新的报错。Kimi 解释了错误信息的含义,并提供了可能的原因和解决方案,包括升级Byte Buddy和SkyWalking Agent、降低Java版本、重新编译类文件和设置JVM参数。
29. 多个类文件主版本号不支持的错误
30. 实验性模式下的SkyWalking UI数据显示
用户报告即使添加了实验性模式参数后有报错,但SkyWalking的UI上有数据展示。有数据展示,也有可能是之前太着急了,因为添加skywalking agent后,启动时有转换同时有大量skywalking的报错,导致java程序启动变的很慢,甚至超时都不能启动完成。
Kimi 提到了即使有兼容性问题,SkyWalking Agent仍然能够收集一些监控数据,但也提醒用户注意数据完整性、稳定性问题,并建议寻找长期稳定的解决方案。
31. Kibana和Grafana的异同
用户询问Kibana和Grafana的异同。Kimi 总结了两者在数据可视化、开源性质、实时监控、插件和扩展等方面的相同点,以及在数据源、用途、功能侧重点、集成和生态系统、用户体验、部署和配置等方面的不同点。
- 点赞
- 收藏
- 关注作者
评论(0)