Skywalking 性能监控
- 2.Skywalking 性能监控
-
- 2.1.Skywalking简介
- 2.2.Skywalking安装
- 2.3.使用nacos管理服务
- 2.4.使用mysql数据存储
- 2.5.使用ES数据存储
- 2.6.Agent探针配置
-
- 2.6.1.通过Idea启动agent探针配置
- 2.6.2.通过命令行启动agent探针配置
- 2.6.3.日志记录
- 2.7.告警配置
- 2.8.TTL数据存储时间设置
- 2.9.Gateway网关配置
- 2.10.自定义跟踪忽略
- 2.11.Web ui 说明
- 2.12.Skywalking7.x docker安装与使用
- 2.13.Windows Skywalking8.x安装与使用
2.Skywalking 性能监控
官网:
http://skywalking.apache.org/downloads/
下载地址:
https://archive.apache.org/dist/skywalking/
官方使用文档:
https://skywalking.apache.org/docs/
https://github.com/apache/skywalking/tree/v8.1.0/docs
https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-skywalking-agent-CN.md
https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-backend-in-standalone-mode-CN.md
https://github.com/apache/skywalking/blob/5.x/docs/README_ZH.md
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/backend/backend-storage.md
参考文档
https://blog.csdn.net/tcy1429920627/article/details/107815750?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242
https://blog.csdn.net/qq_29553063/article/details/91488561
2.1.Skywalking简介
SkyWalking为超大规模而生。无论你的微服务是否在服务网格(Service Mesh)架构下,它都可以提供高性能且一致性的监控,作者吴晟。
SkyWalking做为Apache的顶级项目,是一个开源的APM和可观测性分析平台,它解决了21世纪日益庞大、分布式和异构的系统的问题。它是为应对当前系统管理所面临的困难而构建的:就像大海捞针,SkyWalking可以在服务依赖复杂且多语言环境下,获取服务对应的指标,以及完整而有意义的性能视图。
SkyWalking是一个非常全面的平台,无论你的微服务是否在服务架构下,它都可以提供高性能且一致性的监控。
让我们来看看,SkyWalking是如何解决大规模集群的可观测性问题,并从一个纯粹的链路跟踪系统,发展成为一个每天分析百亿级跟踪数据,功能丰富的可观测性平台。
为超大规模而生
SkyWalking的诞生,时间要追溯到2015年,当时它主要应用于监控顶级电信公司(例如:中国联通和中国移动)的第一代分布式核心系统。2013-2014年,这些电信公司计划用分布式系统取代传统的单体架构应用。从诞生那天开始,SkyWalking首要的设计目标,就是能够支持超大型分布式系统,并具有很好可扩展性。那么支撑超大规模系统要考虑什么呢?
拉取vs推送
与数据流向息息相关的:拉取模式和推送模式。Agent(客户端)收集数据并将其推送到后端,再对数据进一步分析,我们称之为“推送”模式。究竟应该使用拉取还是推送?这个话题已经争论已久。关键因素取决于可观测性系统的目标,即:在Agent端花最小的成本,使其适配不同类型的可观测性数据。
Agent收集数据后,可以在短时间内发送出去。这样,我们就不必担心本地缓存压力过大。举一个典型的例子,任意服务都可以轻松地拥有数百个甚至数千个端点指标(如:HTTP的URI,gRPC的服务)。那么APM系统就必须具有分析这些数量庞大指标的能力。
此外,度量指标并不是可观测性领域中的唯一关注点,链路跟踪和日志也很重要。在生产环境下,SkyWalking为了能提供100%采样率的跟踪能力,数据推送模式是唯一可行的解决方案。
SkyWalking即便使用了推送模式,同时也可进行数据拉取。在最近的8.x的发版本中,SkyWalking支持从已经集成Prometheus的服务中获取终端用户的数据,避免重复工程建设,减少资源浪费。另外,比较常见的是基于MQ的传输构建拉取模式,Kafka消费者就是一个比较典型的例子。SkyWalking的Agent端使用推送模式,OAP服务器端使用拉取模式。
结论:SkyWalking的推送模式是原生方式,但拉取式模式也适用于某些特殊场景。
度量指标分析并不仅仅是数学统计
度量指标依赖于数学理论和计算。Percentile(百分位数)是用于反映响应时间的长尾效应。服务具备合理的平均响应时间和成功率,说明服务的服务等级目标(SLO)很好。除此之外,分布式跟踪还为跟踪提供了详细的信息,以及可分析的高价值指标。
运维团队(OPS)和系统稳定性(SRE)团队通过服务拓扑图,用来观察网络情况(当做NOC dashboard使用)、确认系统数据流。SkyWalking依靠trace(跟踪数据),使用STAM(Streaming Topology Analysis Method)方法进行分析拓扑结构。在服务网格环境下,使用ALS(Envoy Access Log Service)进行拓扑分析。节点(services)和线路(service relationships)的拓扑结构和度量指标数据,无法通过sdk轻而易举的拿到。
为了解决端点度量指标收集的局限性,SkyWalking还要从跟踪数据中分析端点依赖关系,从而拿到链路上游、下游这些关键具体的信息。这些依赖关系和度量指标信息,有助于开发团队定位引起性能问题的边界,甚至代码块。
首先,Skywalking进行了精准的领域模型划分:
整个系统分为三部分:
?agent:采集tracing(调用链数据)和metric(指标)信息并上报
?OAP:收集tracing和metric信息通过analysis core模块将数据放入持久化容器中(ES,H2(内存数据库),mysql等等),并进行二次统计和监控告警
?webapp:前后端分离,前端负责呈现,并将查询请求封装为graphQL提交给后端,后端通过ribbon做负载均衡转发给OAP集群,再将查询结果渲染展示
而整个Skywalking(包括agent和OAP,而webapp后端业务非常简单主要就是认证和请求转发)均通过微内核+插件式的模式进行编码,代码结构和扩展性均非常强,具体设计可以参考: 从Skywalking看如何设计一个微核+插件式扩展的高扩展框架 ,Spring Cloud Gateway的GatewayFilterFactory的扩展也是通过这种plugin define的方式来实现的。
Skywalking也提供了其他的一些特性:
?配置重载:支持通过jvm参数覆写默认配置,支持动态配置管理
?集群管理:这个主要体现在OAP,通过集群部署分担数据上报的流量压力和二次计算的计算压力,同时集群也可以通过配置切换角色,分别面向数据采集(collector)和计算(aggregator,alarm),需要注意的是agent目前不支持多collector负载均衡,而是随机从集群中选择一个实例进行数据上报
?支持k8s和mesh
?支持数据容器的扩展,例如官方主推是ES,通过扩展接口,也可以实现插件去支持其他的数据容器
?支持数据上报receiver的扩展,例如目前主要是支持gRPC接受agent的上报,但是也可以实现插件支持其他类型的数据上报(官方默认实现了对Zipkin,telemetry和envoy的支持)
?支持客户端采样和服务端采样,不过服务端采样最有意义
?官方制定了一个数据查询脚本规范:OAL(Observability Analysis Language),语法类似Linq,以简化数据查询扩展的工作量
?支持监控预警,通过OAL获取数据指标和阈值进行对比来触发告警,支持webhook扩展告警方式,支持统计周期的自定义,以及告警静默防止重复告警
2.2.Skywalking安装
官网:
http://skywalking.apache.org/downloads/
文档:
https://github.com/apache/skywalking/tree/v8.1.0/docs
https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-skywalking-agent-CN.md
历史版本下载地址:
https://archive.apache.org/dist/skywalking/
官网下载:https://skywalking.apache.org/docs/
最新版本是8.3,skywalking从7.x开始jdk版本进行升级,最低要求jdk11。
8.3文档:
https://github.com/apache/skywalking/tree/8.3.0/docs-hotfix/docs/en/setup/backend
8.x安装参考:
下面介绍windows skywalking6.5安装及使用
1、安装必要环境配置
JDK要求jdk8及以上版本。
2、将下载的压缩文件解压缩
2、修改配置application.yml文件
3、修改配置application.yml文件
我这里使用单机版测试,所以其他服务管理配置都注释掉。
修改restHost地址、restPort端口、gRPCHost地址、gRPCPort端口,我这里使用本地安装,所以改为localhost,端口可以不修改,如果有端口被占用,则修改端口,如果是先上服务器,host需要改为服务器ip地址。
4、进入到skywalking安装目录中的webapp目录。
点击webapp.yml,web ui默认端口是8080,如果被占用,则需要修改端口,连接地址可以不用修改。
5、进入到skywalking安装目录中的bin目录。
点击startup.cmd启动服务,启动后有两个服务,一个是后端服务,一个是web ui服务。
启动服务日志:
以上启动完成后,登陆skywalking ,默认账号admin admin,登陆地址:http://localhost:8080/
具体使用查看《Web ui 说明》
2.3.使用nacos管理服务
1、进入到skywalking安装目录,修改application.yml配置文件,这使用阿里巴巴nacos服务注册发现管理,具体nacos安装参考:
https://blog.csdn.net/seashouwang/article/details/110138297
nacos:
#服务名称,自己命名serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
#链接nacos地址,nacos默认端口是8848hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}#Nacos Configuration namespace
#nacos命名空间,默认是public,如果是其他自定义命名空间,自这里namespace的值必须是命名空间id,不是名称
#namespace: 'public'namespace: 'e835f88b-092f-48a7-a786-62979c25c814'
注意: 如果使用nacos作为服务管理,必须要先安装nacos.
2、启动skywalking服务,登陆nacos管理平台,查看服务注册情况,从下图可以看到,skywalking注册成功,我这里使用的是自定义dev命名空间。
以上表示nacos作为服务管理配置成功。
2.4.使用mysql数据存储
1、新建skywalking链接数据库,我这里是本地安装mysql5.7数据测试,数据库安装官网下载
https://dev.mysql.com/downloads/mysql/5.7.html
打开mysql客户端,创建数据库swtest ,这时只是一个空数据库,没有任何表。
2、进入到skywalking安装目录,修改application.yml配置文件
修改application.yml的数据存储节点storage,将其他存储方式注释,打开mysql存储方式,修改数据库链接,用户名、密码。
配置如下:
mysql:properties:jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai"}dataSource.user: ${SW_DATA_SOURCE_USER:root}dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
3、使用mysql连接时,需要mysql驱动包,下载mysql数据库驱动包,添加到oap-libs目录中,我这里使用mysql-connector-java-5.1.47.jar
4、进入到skywalking安装目录中的bin目录中,点击startup.cmd启动服务,该服务启动包含两个服务,一个是后台服务,一个是web界面服务,具体如下:
进入到skywalking安装目录总的logs目录,查看日志信息,首次启动如下:
通过日志可以看到启动时使用mysql数据库存储,并且启动成功,后面是提示数据表不存在,会自动创建这些表到数据库中。刷新mysql客户端数据库可以看到,skywalking启动后自动创建了表。
以上表示mysql数据存储配置成功。
2.5.使用ES数据存储
1、必须安装elasticsearch,并且jdk版本需要与es对于,7.x版本开始使用jdk11,7.x以下使用jdk6-8即可。
2、进入skywalking安装目录,修改application.yml配置文件,将存储改为es作为存储。
具体如下:
修改clusterNodesIP地址,端口号,如果是集群,则以逗号分割配置多个ip地址
3、启动es服务,进入elasticsearch安装目录中的bin目录,通过elasticsearch.bat 或者elasticsearch.sh启动服务,es服务默认端是9200,通过网页查看服务启动。
4、进入skywalking安装目录的bin目录, 通过startup.cmd 或者startup.sh启动skywalking服务。
以上是通过agent探针收集java服务。
5、登陆kibana服务,管理中创建索引,skywalking创建的有all_、database_、endpoint_等开头的日志名称,我们创建一个database_*开头的匹配日志,主要是用于查询。
创建完成后,在discover(发现)中查看,我这里使用google浏览器,切换为中文,方便查看。
2.6.Agent探针配置
参考官网:
https://github.com/apache/skywalking/blob/5.x/docs/cn/Deploy-skywalking-agent-CN.md
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/service-agent/java-agent/Supported-list.md
1、部署 skywalking javaagent
1.拷贝agent目录到所需位置. 日志,插件和配置都包含在包中,请不要改变目录结构.
2.增加JVM启动参数, -javaagent:/path/to/skywalking-agent/skywalking-agent.jar. 参数值为skywalking-agent.jar的绝对路径。
新的 agent package 目录结构如下:
+-- skywalking-agent+-- activationsapm-toolkit-log4j-1.x-activation.jarapm-toolkit-log4j-2.x-activation.jarapm-toolkit-logback-1.x-activation.jar...+-- configagent.config +-- pluginsapm-dubbo-plugin.jarapm-feign-default-http-9.x.jarapm-httpClient-4.x-plugin.jar.....skywalking-agent.jar
?启动被监控应用.
2、高级特性
?插件全部放置在 /plugins 目录中.新的插件,也只需要在启动阶段,放在目录中,就自动生效,删除则失效.
?Log默认使用文件输出到 /logs目录中.
3、部署 java agent FAQs
?Linux Tomcat 7, Tomcat 8
修改 tomcat/bin/catalina.sh,在首行加入如下信息.
CATALINA_OPTS=“$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar”; export CATALINA_OPTS
?Windows Tomcat 7, Tomcat 8
修改 tomcat/bin/catalina.bat,在首行加入如下信息.
set “CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar”
?JAR file
在启动你的应用程序的命令行中添加 -javaagent 参数. 并确保在-jar参数之前添加它. 例如:
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
Agent代理可配置参数如下:
参数名称 配置含义
agent.namespace 跨进程链路中的header,不同的namespace会导致跨进程的链路中断
agent.service_name 一个服务(项目)的唯一标识,这个字段决定了在sw的UI上的关于service的展示名称,尽量采用英文
agent.sample_n_per_3_secs 每3秒采集Trace的数量,默认为负数,代表在保证不超过内存Buffer区的前提下,采集所有的Trace
agent.authentication 与collector进行通信的安全认证,需要同collector中配置相同
agent.span_limit_per_segment Skywalking每个segment的大小
agent.ignore_suffix 忽略特定请求后缀的trace
agent.is_open_debugging_class 探针调试开关,如果设置为true,探针会将所有操作字节码的类输出到/debugging目录下
collector.backend_service 探针需要同collector进行数据传输的IP和端口
logging.max_file_size 日志文件最大大小,默认为300M(单位:B),超过则生成新的文件
logging.level 记录日志级别,默认为DEBUG
注意:通过探针进行收集数据时,登陆skywalking ui界面查看时,一定要清空一下缓存,要不然可能探针收集服务没有,本人通过查看探针收集服务日志、skywalking服务日志排查,服务都正常,但是探针没有发现服务,也重启了skywalking服务,还是没有,怀疑是缓存问题,把浏览器缓存清空后,重新登录skywalking, 发现探针收集服务。
2.6.1.通过Idea启动agent探针配置
参考文档:
https://blog.csdn.net/qq_34532187/article/details/103871570?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
1、Idea启动项目后,在edit configuration配置jvm代理参数
在vm options中添加agent探针配置如下:
-javaagent:D:/devtools/apache-skywalking-apm-6.5.0/apache-skywalking-apm-bin/agent/skywalking-agent.jar
-Dskywalking.agent.service_name=daison-server -Dskywalking.collector.backend_service=localhost:11800
这里注意配置三个参数,
第一个javaagent是skywalking探针jar包路径,该路径必须与服务安装部署在同一台机器。第二个参数service_name是服务名称,自定义即可,最好是英文。
第三个参数backend_service,探针收集数据传输地址,即skywalking服务地址。
注意命令在输入时不能换行,命令之间通过空格间隔,这里展示换行是idea自动换行处理。
2、启动java服务进行数据收集。
通过日志可以发现,skywalking探针已经使用,访问接口,登陆skywalking页面查看链路跟踪,具体参考《Web ui说明》
2.6.2.通过命令行启动agent探针配置
优先级:探针 > JVM配置 > 系统环境变量 > agent.config,一般都使用探针方式,使用方式如下两种情况:
格式1(推荐):-javaagent:/path/to/skywalking-agent.jar={config1}={value1},{config2}={value2}
-javaagent:…/skywalking-agent.jar=agent.service_name=fw-gateway,collector.backend_service=127.0.0.1:11800
格式2:-Dskywalking.[option1]=[value2]
例如通过java命令启动服务启动app服务,需要执行命令如下:
java -javaagent:D:/devtools/apache-skywalking-apm-6.5.0/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=starsky-generator -Dskywalking.collector.backend_service=localhost:11800 -jar starsky-generator-1.0.0.jar
这里注意配置四个参数,
第一个javaagent是skywalking探针jar包路径,该路径必须与服务安装部署在同一台机器。第二个参数service_name是服务名称,自定义即可,最好是英文。
第三个参数backend_service,探针收集数据传输地址,即skywalking服务地址。
第四个参数-jar xxx.jar ,即启动服务jar包。
默认情况下skywalking会加载/apache-skywalking-apm-incubating/agent/config/agent.config文件,也可以手动指定。
示例:
这里我们启动一个服务测试,启动服务后,访问该服务相关接口,然后登陆skywalking 页面查看,浏览器登陆需要清空缓存。
java -javaagent:D:/devtools/apache-skywalking-apm-6.5.0/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=starsky-generator -Dskywalking.collector.backend_service=localhost:11800 -jar starsky-generator-1.0.0.jar
1、启动日志:
1、仪表盘
2、拓扑图
2.6.3.日志记录
参考文档:
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/service-agent/java-agent/README.md
Logback日志:
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/service-agent/java-agent/Application-toolkit-logback-1.x.md
Log4j:
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-1.x.md
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/service-agent/java-agent/Application-toolkit-log4j-2.x.md
?如果要在日志中打印跟踪上下文(例如traceId),请选择日志框架log4j, log4j2和logback
logback 插件使用
1、项目中引入依赖包
2、set %tid in Pattern section of logback.xml
设置%tid在Patternlogback.xml的部分
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder>
</appender>
3、使用MDC,%X{tid}在Patternlogback.xml部分中进行设置
?with the MDC, set %X{tid} in Pattern section of logback.xml
4、支持logback AsyncAppender(也支持MDC),不需要其他配置。请参阅下面的logback.xml演示。有关详细信息:登录AsyncAppender
<configuration scan="true" scanPeriod=" 5 seconds"><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"><layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern></layout></encoder></appender><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><discardingThreshold>0</discardingThreshold><queueSize>1024</queueSize><neverBlock>true</neverBlock><appender-ref ref="STDOUT"/></appender><root level="INFO"><appender-ref ref="ASYNC"/></root></configuration>
logstash logback plugin
1、引入依赖包
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>${skywalking.version}</version>
</dependency>
2、set LogstashEncoder of logback.xml
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"><provider class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.logstash.TraceIdJsonProvider"></provider>
</encoder>
?设置LoggingEventCompositeJsonEncoder在的logback-spring.xml logstash的定制JSON格式
1.将%tid的转换器添加为节点的子代
<!-为%tid添加转换器->
< conversionRule conversionWord = “ tid ” converterClass = “” org.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter “ />
2.添加自定义JSON格式的JSON编码器
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{"level": "%level","tid": "%tid","thread": "%thread","class": "%logger{1.}:%L","message": "%message","stackTrace": "%exception{10}"}</pattern></pattern></providers>
</encoder>
2.7.告警配置
参考文档:
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/backend/backend-alarm.md
Skywalking安装目录中有一个告警配置文件,在config文件夹下的alarm-settings.yml。
#Sample alarm rules.
rules:# Rule unique name, must be ended with `_rule`.service_resp_time_rule:metrics-name: service_resp_timeop: ">"threshold: 1000period: 10count: 3silence-period: 5message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.service_sla_rule:# Metrics value need to be long, double or intmetrics-name: service_slaop: "<"threshold: 8000# The length of time to evaluate the metricsperiod: 10# How many times after the metrics match the condition, will trigger alarmcount: 2# How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.silence-period: 3message: Successful rate of service {name} is lower than 80% in 2 minutes of last 10 minutesservice_p90_sla_rule:# Metrics value need to be long, double or intmetrics-name: service_p90op: ">"threshold: 1000period: 10count: 3silence-period: 5message: 90% response time of service {name} is more than 1000ms in 3 minutes of last 10 minutesservice_instance_resp_time_rule:metrics-name: service_instance_resp_timeop: ">"threshold: 1000period: 10count: 2silence-period: 5message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes
#Active endpoint related metrics alarm will cost more memory than service and service instance metrics alarm.
#Because the number of endpoint is much more than service and instance.
#
#endpoint_avg_rule:
#metrics-name: endpoint_avg
#op: ">"
#threshold: 1000
#period: 10
#count: 2
#silence-period: 5
#message: Response time of endpoint {name} is more than 1000ms in 2 minutes of last 10 minuteswebhooks:
#- http://127.0.0.1/notify/
#- http://127.0.0.1/go-wechat/
alarm-setting.yml为了方便起见,我们在发行版中提供了默认设置,其中包括以下规则
1.最近3分钟内服务平均响应时间超过1秒。
2.最近2分钟的服务成功率低于80%。
3.最近3分钟内服务90%的响应时间超过1秒
4.最近2分钟内服务实例的平均响应时间超过1秒。
5.最近2分钟内端点平均响应时间超过1秒。
参数说明:
参数 含义
service_resp_time_rule 告警规则的名词 具备唯一性 以rule结尾
metrics-name 指标数据名称
threshold 指标阈值
op 与阈值配合使用的操作符
period 告警检查周期
count 累计到达多少次后发送消息
silence-period 忽略相同告警周期
message 报警内容
告警配置开发:
1、编写接口类
2、将接口配置到alarm-settings.yml 文件的webhooks标签下。产生告警时会调用webhook接口,该接口必须是Post类型,同时接口参数使用RequestBody。
3、启动接口服务,当触发报警后,调用接口发送消息。具体示例参考
https://blog.csdn.net/qq_34532187/article/details/103871570?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
https://jiandansuifeng.blog.csdn.net/article/details/107149940?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control
2.8.TTL数据存储时间设置
官网:
https://github.com/apache/skywalking/blob/6.x/docs/en/setup/backend/ttl.md
在SkyWalking中,除了元数据外,还有两种类型的可观察性数据。
1.记录,包括跟踪和警报。也许将来登录。
2.度量标准,包括p99 / p95 / p90 / p75 / p50,热图,成功率,cpm(rpm)等。度量标准以分钟/小时/天/月/月的存储空间大小,不同的索引或表格分开。
您有以下针对不同类型的设置。
#设置指标数据超时。超时到期后,指标数据将自动删除。
enableDataKeeperExecutor: $ {SW_CORE_ENABLE_DATA_KEEPER_EXECUTOR:true} #将其关闭,然后将自动关闭指标数据删除。
dataKeeperExecutePeriod: $ {SW_CORE_DATA_KEEPER_EXECUTE_PERIOD:5} #数据门将执行定期运行多久,单位为分钟
recordDataTTL: $ {SW_CORE_RECORD_DATA_TTL:90} #单位为分钟
minuteMetricsDataTTL: $ {SW_CORE_MINUTE_METRIC_DATA_TTL:90} #单位为分钟
hourMetricsDataTTL:$ {SW_CORE_HOUR_METRIC_DATA_TTL:36} #单位为小时
dayMetricsDataTTL:$ {SW_CORE_DAY_METRIC_DATA_TTL:45} #单位为日
monthMetricsDataTTL:$ {SW_CORE_MONTH_METRIC_DATA_TTL:18} #单位为月
?recordDataTTL影响记录数据。
?minuteMetricsDataTTL,hourMetricsDataTTL,dayMetricsDataTTL并monthMetricsDataTTL影响分钟/小时/天/月维度的指标数据。
ElasticSearch 6存储TTL
具体来说:
由于ElasticSearch的功能,它会在执行query by delete命令后重建索引。这是一项繁重的操作,每次都会使ElasticSearch服务器挂断几秒钟。事实是有上百个索引可能会导致ElasticSearch意外退出服务。因此,我们每天创建索引以避免执行通过查询删除操作,然后直接删除索引,这是一项高性能的操作,告别挂断。
您在Elasticsearch存储中具有以下设置。
#这些数据TTL设置将覆盖核心模块中的相同设置。
recordDataTTL: $ {SW_STORAGE_ES_RECORD_DATA_TTL:7} #单位是
otherotherMetricsDataTTL: $ {SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} #单位是day
monthMetricsDataTTL: $ {SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} #单位是month
?recordDataTTL影响记录数据。
?otherMetricsDataTTL影响指标的分钟/小时/天尺寸。minuteMetricsDataTTL,hourMetricsDataTTL并且dayMetricsDataTTL仍然存在,但是它们的单位也更改为DAY。如果要手动设置它们,请删除otherMetricsDataTTL。
?monthMetricsDataTTL 影响指标的月份维度。
2.9.Gateway网关配置
1、进入skyw
alking安装目录,将optional-plugins目录中的
apm-spring-cloud-gateway-2.x-plugin-6.5.0.jar 拷贝到plugins目录中。
注意:这里的gateway版本是2.x,需要和springcloud版本对应,如果项目中使用的springcloud版本和插件版本不一致,可能导致探针收集不到数据,我这里项目使用的springboot是2.0.7版本,spring cloud版本是Finchley.SR2,springcloud-nacos 2.0.3.RELEASE,具体版本对应查看spring官网。
2、通过idea或者java命令启动服务
参考《agent探针配置》
3、启动skywalking服务,登陆ui查看。
访问gateway查看服务接口链路追踪具体信息。
2.10.自定义跟踪忽略
这是一个可选的插件 apm-trace-ignore-plugin
介绍
?该插件的目的是过滤跟踪系统期望忽略的端点。
?您可以设置多个URL路径模式,不会跟踪与这些模式匹配的端点。
?当前的匹配规则遵循Ant Path的比赛风格,像/path/*,/path/,/path/?。
?复制apm-trace-ignore-plugin-x.jar到agent/plugins,重新启动agent可以影响插件。
如何配置
有两种方法可以配置忽略模式。通过系统环境进行的设置具有更高的优先级。
1.通过系统环境变量进行设置,您需要添加skywalking.trace.ignore_path到系统变量中,该值是您需要忽略的路径,多个路径应用,
2.复制/agent/optional-plugins/apm-trace-ignore-plugin/apm-trace-ignore-plugin.config到/agent/config/目录,并添加规则以过滤跟踪
trace.ignore_path=/your/path/1/,/your/path/2/**
2.11.Web ui 说明
Skywalking服务启动后,webui默认端口8080,默认账号 admin admin
http://localhost:8080/
1、仪表盘
页面具体参数说明:
指标名称 指标含义
Global 全局
Service 服务,Tomcat容器
Endpoint 端点,即指请求的URL
Instance 实例,具体的请求
Global Heatmap 系统耗时热力分布图
Global Brief 系统概要
Global TopThroughPut 全局吞吐量排行
Global Response Percentile 全局响应时间占比图
Global Top Slow endpoint 全局响应最慢的请求排行
Global Top Slow endpoint 全局响应最慢的请求排行
Service AVG SLA 服务平均等级协议变化
Service TopThroughPut 服务吞吐量排行
Service Response Percentile 服务响应时间占比图
JVM CPU% cpu负载变化
JVM Non-Heap jvm方法区的使用情况
JVM Heap jvm堆的使用
JVM GC 垃圾回收耗时
JVM GC Count 垃圾回收次数
占比图百分数:
skywalking中有P50,P90,P95这种统计口径,就是百分位数的概念。
释义:在一个样本数据集合中,通过某个样本值,可以得到小于这个样本值的数据占整体的百分之多少,这个样本值的值就是这个百分数对应的百分位数。
2、拓扑图
可以选择不同的服务查看拓扑图,点击图标可以查看具体详细信息
3、链路追踪
?通过选择服务、示例、状态等信息查看服务请求具体信息。
?通过查看具体请求ui调用那些接口,执行sql语句,执行耗时、sql详细信息等
2.12.Skywalking7.x docker安装与使用
参考文档:
https://blog.csdn.net/hanjiangxue1006/article/details/105758272?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control
2.13.Windows Skywalking8.x安装与使用
官方文档:
https://github.com/apache/skywalking/tree/master/docs
参考文档:
https://blog.csdn.net/yy756127197/article/details/107458943?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control
SkyWalking8简单安装部署配置:
https://blog.csdn.net/lizz861109/article/details/107514354
skywalking 链路监控 8.1.0 集群安装及性能测试:
https://blog.csdn.net/qq_27384769/article/details/107944637?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control