关于服务监控的对话

举报
黄生 发表于 2024/12/14 22:52:54 2024/12/14
【摘要】 1. 容器监控工具用户询问除了cAdvisor之外的容器监控工具,并希望了解它们是否能与Prometheus集成。Kimi 提供了Sysdig、ManageEngine 应用程序管理器、AppOptics等选项,并简要介绍了它们的功能和集成能力。2. Docker Swarm 介绍用户对Docker Swarm表示好奇。Kimi 解释了Docker Swarm是Docker的原生容器编排工具...

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.shoapServiceNoInit.shoapService.shstartup.shwebappService.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 总结了两者在数据可视化、开源性质、实时监控、插件和扩展等方面的相同点,以及在数据源、用途、功能侧重点、集成和生态系统、用户体验、部署和配置等方面的不同点。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。