skywalking应用性能监控

1.skywalking描述

官方文档
SkyWalking 是一个开源的可观测性平台,用于收集、分析、汇总和可视化来自服务及云原生基础设施的数据。SkyWalking 为维护分布式系统的清晰视图提供了简便的方法,即使是在跨云环境中也能做到。它是一款专为云原生、基于容器的分布式系统设计的现代应用性能管理工具。
SkyWalking 能够满足云原生环境中的所有可观测性需求,包括:

  • Tracing 支持 SkyWalking 原生数据格式以及 Zipkin v1 和 v2 格式的追踪数据。
  • Metrics(指标)。SkyWalking 支持成熟的指标格式,包括原生计数器格式、OTEL 指标格式和 Telegraf 格式。SkyWalking 与服务网关平台(通常为 Istio 和 Envoy)集成,将可观测性融入数据平面或控制平面。此外,SkyWalking 原生代理可以在指标模式下运行,这极大地提高了性能。
  • Logging(日志记录)。包括从磁盘收集的日志或通过网络收集的日志。原生代理能够自动将追踪上下文与日志绑定,或者使用 SkyWalking 通过文本内容将跟踪和日志进行绑定。(有关人或事物的)资料收集。性能分析是一种强大的工具,可帮助开发人员从代码行的角度了解其应用程序的性能。SkyWalking 提供了内置在原生语言代理和独立的 ebpf 代理中的性能分析功能。
  • Event(事件)。事件是一种特殊类型的数据,用于记录系统中的重要时刻,例如版本升级、配置更改等。将事件与指标相联系有助于解释指标中的峰值或低谷,而将事件与跟踪和日志相联系则有助于排查根本原因。

2.下载安装

环境安装:

  • elasticsearch:
    安装文档:https://blog.csdn.net/tan809417133/article/details/120708567

  • jdk17安装:

    apt install openjdk-17-jre-headless
    

skywalking安装:
下载地址:https://www.apache.org/dyn/closer.cgi/skywalking/10.2.0/apache-skywalking-apm-10.2.0.tar.gz
下载成功上传到服务器(笔者使用ubuntu24),解压到/usr/local 命令:
bash tar -zxvf apache-skywalking-apm-10.2.0.tar.gz -C /usr/local
修改配置:

#进入安装目录
cd /usr/local/apache-skywalking-apm-bin
#编辑config目录application.yml
vi config/application.yml

关键配置信息:

cluster:selector: ${SW_CLUSTER:standalone} #单机模式standalone:
#存储使用elasticsearch
storage:selector: ${SW_STORAGE:elasticsearch}banyandb:# Since 10.2.0, the banyandb configuration is separated to an independent configuration file: `bydb.yaml`.elasticsearch:namespace: ${SW_NAMESPACE:""}clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} #多个以“,”号隔开user: ${SW_ES_USER:"user"}password: ${SW_ES_PASSWORD:"password"}

配置ui
编辑webapp目录application.yml,自定义serverPort端口号

serverPort: ${SW_SERVER_PORT:-8081}# Comma seperated list of OAP addresses.
oapServices: ${SW_OAP_ADDRESS:-http://localhost:12800}zipkinServices: ${SW_ZIPKIN_ADDRESS:-http://localhost:9412}

启动skywalking

./bin/startup.sh

访问skywalking:
http://ip:8081
在这里插入图片描述

3.Java agent

Apache SkyWalking 的 Java agent,为 Java 项目提供原生的跟踪/指标/日志/事件/分析能力
下载java agent:https://www.apache.org/dyn/closer.cgi/skywalking/java-agent/9.4.0/apache-skywalking-java-agent-9.4.0.tgz
监控其他语言项目:https://skywalking.apache.org/downloads/

  • 项目集成agent https://skywalking.apache.org/docs/skywalking-java/v9.4.0/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/

  • 将apache-skywalking-java-agent-9.4.0.tgz 解压到项目目录

    tar -zxvf apache-skywalking-java-agent-9.4.0.tgz -C /app/run/test #你的项目目录
    
  • 进入/app/run/test修改agent配置文件

    #skywalking-agent是apache-skywalking-java-agent-9.4.0.tgz解压后的目录
    vi  skywalking-agent/config/agent.config

    主要配置:

    #The group name is optional only
    agent.service_name=${SW_AGENT_NAME:test}
    # The agent cluster
    agent.cluster=${SW_AGENT_CLUSTER:100}
    # Backend service addresses.
    collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:localhost:11800}
    
  • 启动test
    jvm 参数新增 -javaagent:./skywalking-agent/skywalking-agent.jar

     nohup java -javaagent:./skywalking-agent/skywalking-agent.jar  -jar  -Xms1024M -Xmx1024M test.jar > /dev/null 2>&1 &
    

重新打开控制台可以正常看到服务监控指标:
常规服务-服务-选择查看的服务:
在这里插入图片描述

4.报警设置

进入skywalking安装目录,编辑config目录下alarm-settings.yml,以下是默认配置:

# SkyWalking 告警规则配置
rules:# 服务响应时间告警规则service_resp_time_rule:# 表达式:当服务响应时间超过1000ms的情况在最近10分钟内累计达到3次时触发告警expression: sum(service_resp_time > 1000) >= 3# 检查周期:每10分钟检查一次period: 10# 静默周期:触发告警后静默5分钟silence-period: 5# 告警消息:服务{name}在最近10分钟内有3分钟的响应时间超过1000msmessage: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.# 服务成功率告警规则service_sla_rule:# 表达式:当服务成功率低于80%(即SLA值小于8000)的情况在最近10分钟内累计达到2次时触发告警expression: sum(service_sla < 8000) >= 2# 检查周期:每10分钟检查一次period: 10# 静默周期:触发告警后静默3分钟silence-period: 3# 告警消息:服务{name}在最近10分钟内有2分钟的成功率低于80%message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutes#发送钉钉通知信息hooks:- "dingtalk.default"# 服务响应时间百分位数告警规则service_resp_time_percentile_rule:# 表达式:当服务的响应时间百分位数(p50, p75, p90, p95, p99)中任何一个超过1000ms的情况在最近10分钟内累计达到3次时触发告警expression: sum(service_percentile{p='50,75,90,95,99'} > 1000) >= 3# 检查周期:每10分钟检查一次period: 10# 静默周期:触发告警后静默5分钟silence-period: 5# 告警消息:服务{name}的百分位响应时间在最近10分钟内有3分钟告警,因为p50、p75、p90、p95、p99中有超过一个条件大于1000msmessage: Percentile response time of service {name} alarm in 3 minutes of last 10 minutes, due to more than one condition of p50 > 1000, p75 > 1000, p90 > 1000, p95 > 1000, p99 > 1000# 服务实例响应时间告警规则service_instance_resp_time_rule:# 表达式:当服务实例响应时间超过1000ms的情况在最近10分钟内累计达到2次时触发告警expression: sum(service_instance_resp_time > 1000) >= 2# 检查周期:每10分钟检查一次period: 10# 静默周期:触发告警后静默5分钟silence-period: 5# 告警消息:服务实例{name}在最近10分钟内有2分钟的响应时间超过1000msmessage: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes# 数据库访问响应时间告警规则database_access_resp_time_rule:# 表达式:当数据库访问响应时间超过1000ms的情况在最近10分钟内累计达到2次时触发告警expression: sum(database_access_resp_time > 1000) >= 2# 检查周期:每10分钟检查一次period: 10# 告警消息:数据库访问{name}在最近10分钟内有2分钟的响应时间超过1000msmessage: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutes# 端点关系响应时间告警规则endpoint_relation_resp_time_rule:# 表达式:当端点关系响应时间超过1000ms的情况在最近10分钟内累计达到2次时触发告警expression: sum(endpoint_relation_resp_time > 1000) >= 2# 检查周期:每10分钟检查一次period: 10# 告警消息:端点关系{name}在最近10分钟内有2分钟的响应时间超过1000msmessage: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes

Hooks向外部发送告警信息

参考文档:https://skywalking.apache.org/docs/main/v10.2.0/en/setup/backend/backend-alarm/#hooks

发送钉钉通知:

hooks:dingtalk:default:is-default: truetext-template: |-{"msgtype": "text","text": {"content": "Apache SkyWalking Alarm: \n %s."}}webhooks:- url: https://oapi.dingtalk.com/robot/send?access_token=xxsecret: xx

重启服务使配置生效

动态配置无需重启服务:https://skywalking.apache.org/docs/main/v10.2.0/en/setup/backend/dynamic-config/

5.为了保护 SkyWalking UI 和相关接口的安全性,可以通过 NGINX 配置基本认证(Basic Authentication)来限制访问

5.1 安装依赖工具

首先需要安装 apache2-utils(Ubuntu/Debian)或 httpd-tools(CentOS/RHEL)来生成密码文件:

# Ubuntu/Debian
sudo apt-get install apache2-utils# CentOS/RHEL
sudo yum install httpd-tools

5.2. 创建认证用户和密码

使用 htpasswd 命令创建密码文件并添加用户:

# 创建新的密码文件并添加用户
sudo htpasswd -c /etc/nginx/.htpasswd username
# 添加更多用户(不需要 -c 参数)
sudo htpasswd /etc/nginx/.htpasswd anotheruser# 查看密码文件
cat /etc/nginx/.htpasswd

5.3. NGINX 配置

server {listen 80;server_name skywalking.yourdomain.com;# 保护整个 SkyWalking UIlocation / {auth_basic "SkyWalking Admin";auth_basic_user_file /etc/nginx/.htpasswd;proxy_pass http://localhost:8080;  # SkyWalking UI 默认端口proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

效果:
在这里插入图片描述

6.agent上报设置token

https://skywalking.apache.org/docs/main/v10.2.0/en/setup/backend/backend-token-auth/#token-authentication

  • agent Set token in agent.config file
# Authentication active is based on backend setting, see application.yml for more details.
agent.authentication = ${SW_AGENT_AUTHENTICATION:xxxx}
  • Set token in application.yml file
receiver-sharing-server:default:authentication: ${SW_AUTHENTICATION:""}

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

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

相关文章

如何彻底清除服务器上的恶意软件与后门

清除服务器上的恶意软件与后门 是确保服务器安全的关键步骤。恶意软件和后门可能导致数据泄露、性能下降&#xff0c;甚至服务器被攻击者完全控制。以下是彻底清除恶意软件与后门的详细指南&#xff0c;包括 检测、清理、修复与预防 的步骤。1. 彻底清除恶意软件与后门的步骤1.…

Linux和Windows基于V4L2和TCP的QT监控

最近工作需要用QT做一个网络摄像头测试&#xff0c;简单记录&#xff1a;服务端&#xff0c;主机配置为Ubuntu&#xff0c;通过端口12345采集传输MJPEG格式图片windows客户端&#xff0c;QT Creator通过ip地址连接访问提前准备服务端需要安装QT5sudo apt-get install qt5-defau…

yolo格式

labelimg中的格式yolo格式id 框中心点X对于总图片的比例 框中心点Y对于总图片的比例 框X总长度对于总图片的比例 框Y总长度对于总图片的比例

Day 8-zhou R包批量安装小补充!!!

BiocManager::install(c(“S4Vectors”, “BiocGenerics”)) 以下是使用BiocManager安装S4Vectors和BiocGenerics包的详细步骤。这些步骤基于最新的Bioconductor和R版本&#xff08;R 4.5&#xff09;。 安装步骤安装BiocManager 如果你还没有安装BiocManager&#xff0c;可以使…

电商项目_核心业务_数据归档

无论采用哪种存储系统&#xff0c;数据查询的耗时取决于两个因素查找的时间复杂度数据总量查找的时间复杂度又取决于查找算法数据存储结构以Mysql存储的订单数据为例&#xff0c;随着业务的发展&#xff0c;数据量越来越大&#xff0c;对一些历史归档数据的查询&#xff0c;如果…

第十讲:stack、queue、priority_queue以及deque

目录 1、stack 1.1、stack的使用 1.2、stack的OJ题 1.2.1、最小栈 1.2.2、栈的压入弹出序列 1.2.3、逆波兰表达式求值 1.3、stack的模拟实现 2、queue 2.1、queue的使用 2.2、queue的OJ题 2.2.1、二叉树的层序遍历 2.3、queue的模拟实现 3、priority_queue 3.1、…

如何思考一个动态规划问题需要几个状态?

如何思考一个动态规划问题需要几个状态&#xff1f;第一步&#xff1a;思考 角色第二步&#xff1a;考虑 过去的影响第三步&#xff1a;画出状态转移图第四步&#xff1a;写出状态转移方程第五步&#xff1a;验证是否能覆盖所有路径 边界几个常见题目总结&#xff1a;第一步&a…

【每天一个知识点】生成对抗聚类(Generative Adversarial Clustering, GAC)

&#x1f4d8; 生成对抗聚类&#xff08;Generative Adversarial Clustering, GAC&#xff09; 一、研究背景与动机 聚类是无监督学习中的核心任务。传统方法如 K-means、GMM、DBSCAN 等难以适应高维、非线性、复杂结构数据。 生成对抗聚类&#xff08;GAC&#xff09; 融合…

Qt 窗口 工具栏QToolBar、状态栏StatusBar

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 一段时间没有更新&#xff0c;这段时间一直在忙各种事情&#xff0c;后续将再次上路持续更新C相关知识 本章将继续前面的QT篇章&#xff0c;本章主要讲…

FFmpeg——参数详解

FFmpeg参数详解一、基本命令结构1.1、查询参数1.1.1、version1.1.2、buildconf1.1.3、devices1.1.4、formats1.1.5、muxers1.1.6、demuxers1.1.7、codecs1.1.8、decoders1.1.9、encoders1.1.10、bsfs1.1.11、protocols1.1.12、filters1.1.13、pix_fmts1.1.14、layouts1.1.15、s…

流媒体传输:RTSP传输详解(包含RTP,RTCP,RTSP详解)

一、什么是 RTSP​协议 1.1 RTSP 协议简介​ RTSP&#xff0c;全称实时流传输协议&#xff08;Real Time Streaming Protocol&#xff09;&#xff0c;是一种位于应用层的网络协议。它主要用于在流媒体系统中控制实时数据&#xff08;如音频、视频等&#xff09;的传输&#…

Python学习-----1.认识Python

目录 前言 1.关于Python博客前期的内容 2.计算机基础概念 2.1.什么是计算机? 2.2.什么是编程&#xff1f; 2.3.编程语言有哪些&#xff1f; 3.Python背景知识 3.1.Python是怎么来的&#xff1f; 3.2.Python都可以用来干什么&#xff1f; 3.3.Python的优缺点 3.4.Py…

MongoDB频繁掉线频繁断开服务的核心原因以及解决方案-卓伊凡|贝贝|莉莉|糖果

MongoDB频繁掉线频繁断开服务的核心原因以及解决方案-卓伊凡|贝贝|莉莉|糖果查看日志内容 &#xff1a;2025-07-22T17:05:20.2160800 I CONTROL [initandlisten] MongoDB starting : pid34231 port28018 dbpath/data/mongodb 64-bit hostVM-0-17-centos 2025-07-22T17:05:20.21…

VUE懒加载(4种方式)

第一种 使用 Webpack 的动态导入&#xff08;Dynamic Imports&#xff09;第二种 Vue Router 中的懒加载第三种 使用第三方库第四种 使用 Vuex 进行异步数据加载虽然不是直接的懒加载&#xff0c;但你可以在组件内部或 Vuex store 中使用异步 action 来加载数据&#xff0c;确保…

【ROS1】09-ROS通信机制——参数服务器

目录 一、参数服务器概念 二、参数操作 2.1 C实现 2.1.1 新增参数 2.1.2 修改参数 2.1.3 查询参数 2.1.4 删除参数 2.2 python实现 2.2.1 新增参数 2.2.2 修改参数 2.2.3 查询参数 2.2.4 删除参数 一、参数服务器概念 假设正在开发一个复杂的机器人应用&#xff0…

C#.NET dapper 详解

简介 Dapper 是由 Stack Overflow 团队开发的一个简单、高性能的微型 ORM&#xff08;Object‑Relational Mapper&#xff09;&#xff0c;仅几千行代码&#xff0c;依赖于 ADO.NET 的 IDbConnection&#xff0c;通过动态生成 IL 来映射结果到实体对象。 与 EF、NHibernate 这类…

【LeetCode 热题 100】35. 搜索插入位置——二分查找(左闭右开)

Problem: 35. 搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 文章目录整体思路完整代码时空复杂度时间…

Python-初学openCV——图像预处理(四)——滤波器

目录 一、图像噪点消除噪声&#xff1a; 1、概念 2、均值滤波 3、方框滤波 4 、高斯滤波 5、中值滤波 6、双边滤波 7、总结 一、图像噪点消除噪声&#xff1a; 1、概念 指图像中的一些干扰因素&#xff0c;通常是由图像采集设备、传输信道等因素造成的&#xff0c;表现…

嵌入式系统可靠性设计

嵌入式系统可靠性设计硬件件可靠性设计1. 硬件设计原则2. 硬件设计注意问题2.1 引脚布局和走线2.2 元器件选择和布局2.3 电源和地线分离2.4 EMI/EMC设计2.5 系统可靠性2.6 资源利用和扩展性软件可靠性设计1. 设计原则1.1 模块化设计1.2 冗余设计1.3 容错设计1.4 实时性保障1.5 …

cJSON在STM32单片机上使用遇到解析数据失败问题

我们在单片机上解析JSON格式时&#xff08;比如在用云平台物联网开发时&#xff09;&#xff0c;可以直接使用cJson库来完成自己的操作&#xff0c;而不需要单独实现&#xff0c;具体使用方法可以搜一下。 cJson&#xff1a;一个基于 C 语言的 Json 库&#xff0c;它是一个开源…