APM工具skywalking部署
一 整体架构
整个架构,分成上、下、左、右四部分:
- 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
- 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
- 右部分 Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
- 左部分 SkyWalking UI :负责提供控台,查看链路等等。
二 安装
已验证skywalking9.6.0,centos7.0, MySQL8.0.26
2.1 jdk安装
-
Skywalking9.6.0需要jdk9+及以上
- 下载解压到/usr/local/java/jdk11
- 配置环境变量
# 打开文件
vim /etc/profile
# 在文件最后加上
JAVA_HOME=/usr/local/java/jdk11
PATH=$PATH:$JAVA_HOME/bin
# 保存退出
# 应用修改
source /etc/profile
# 验证:
java -version
2.2 安装skywalking
- 下载安装包官网(慢),推荐清华源
- 解压放置路径/usr/local/skywalking
2.2.1 运行
-
进入/usr/local/skywalking/bin目录
运行oapService
./oapService.sh &运行ui webappService,默认端口8080
./webappService.sh & -
验证运行结果
[root@localhost bin]# jps 6099 Jps 18824 OAPServerStartUp 9817 ApplicationStartUp # 查看访问 [root@localhost bin]# curl localhost:8080浏览器访问IP:8080(防火墙开启端口)
2.2.2 结果

三 配置
3.1 数据库
-
skywalking 默认使用h2数据库,基于内容的数据库,重启服务后数据重置,修改存储,支持数据持久化
-
修改/usr/local/skywalking/config/application.yaml
# line 159 storage:selector: ${SW_STORAGE:h2}
-
修改为mysql ,我这里用的MySQL8.0.26
# line 159 storage:selector: ${SW_STORAGE:mysql}# line 191 变更自己的库名,添加驱动包名mysql:properties:jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://yourIP:3306/swtest?rewriteBatchedStatements=true&allowMultiQueries=true"}dataSource.user: ${SW_DATA_SOURCE_USER:root}dataSource.password: ${SW_DATA_SOURCE_PASSWORD:your password}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}maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4}driver: com.mysql.cj.jdbc.Driver# 保存退出,配置修改完成
-
添加MySQL8驱动包到路径/usr/local/skywalking/oap-libs/下
-
重启oapService服务验证,是否正常运行
- jps
- kill -9 pid (oapService的)
- 重启oapService
3.2 访问端口修改
- 修改文件/usr/local/skywalking/webapp/application
- 重启webappService服务
- jps
- kill -9 pid(webappService的)
- 重启webappService
四 监控

- Prometheus 节点导出器从虚拟机收集指标数据。
- OpenTelemetry Collector 通过 Prometheus Receiver 从 node-exporter 获取指标,并通过 OpenTelemetry gRPC 导出器将指标推送到 SkyWalking OAP Server。
- SkyWalking OAP Server 使用 MAL 解析表达式,以过滤/计算/聚合和存储结果。
4.1 self-observability自监控
4.1.1 节点导出器
-
修改配置文件/usr/local/skywalking/config/application.yaml
# line 452 telemetry:selector: ${SW_TELEMETRY:prometheus}none:prometheus:host: ${SW_TELEMETRY_PROMETHEUS_HOST:0.0.0.0}port: ${SW_TELEMETRY_PROMETHEUS_PORT:1234}sslEnabled: ${SW_TELEMETRY_PROMETHEUS_SSL_ENABLED:false}sslKeyPath: ${SW_TELEMETRY_PROMETHEUS_SSL_KEY_PATH:""}sslCertChainPath: ${SW_TELEMETRY_PROMETHEUS_SSL_CERT_CHAIN_PATH:""}
-
重启oapService服务。
4.1.2 节点收集器
-
安装OpenTelemetry Collector
# RPM Installation sudo yum update sudo yum -y install wget systemctl wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.89.0/otelcol_0.89.0_linux_amd64.rpm sudo rpm -ivh otelcol_0.89.0_linux_amd64.rpm
-
修改OpenTelemetry Collector配置文件
-
创建自己的配置文件otel-collection-config.yaml (/etc/otelcol/)
receivers:prometheus:config:scrape_configs:- job_name: "skywalking-so11y" scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:1234"]labels:host_name: vmlinuxservice: self-observability processors:batch:exporters:otlp:endpoint: "your IP:11800" # The OAP Server addresstls:insecure: truelogging:loglevel: debug service:pipelines:metrics:receivers: [prometheus]processors: [batch]exporters: [otlp, logging]
-
修改OpenTelemetry Collector启动记载配置文件/etc/otelcol/otelcol.conf指向新建的otel-collection-config.yaml
# Systemd environment file for the otelcol service # Command-line options for the otelcol service. # Run `/usr/bin/otelcol --help` to see all available options. # OTELCOL_OPTIONS="--config=/etc/otelcol/config.yaml" OTELCOL_OPTIONS="--config=/etc/otelcol/otel-collector-config.yaml"
-
重启OpenTelemetry Collector
systemctl restart otelcol
-
4.1.3 访问查看

4.2 基础设施监控-Linux
4.2.1 节点导出器
- 安装并运行节点导出器
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
mkdir /usr/local/skywalking/exporter
mv node_exporter-1.7.0.linux-amd6 /usr/local/skywalking/exporter/node_exporter
cd node_exporter
nohup ./node_exporter > /usr/local/skywalking/exporter/node_exporter/node_exporter.log 2>&1 &
# 验证
curl 127.0.0.1:9100
4.2.2 节点收集器
- 修改OpenTelemetry Collector配置文件otel-collection-config.yaml
receivers:prometheus:config:scrape_configs:- job_name: "vm-monitoring"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:9100"]labels:node_identifier_host_name: vm-machine- job_name: "skywalking-so11y"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:1234"]labels:host_name: vmlinuxservice: self-observability
processors:batch:exporters:otlp:endpoint: "you IP:11800" # The OAP Server addresstls:insecure: truelogging:loglevel: debug
service:pipelines:metrics:receivers: [prometheus]processors: [batch]exporters: [otlp, logging]
- 重启OpenTelemetry Collector
systemctl restart otelcol
4.2.3 查看访问

4.3 数据库-Redis
4.3.1 节点导出器
wget https://github.com/oliver006/redis_exporter/releases/download/v1.55.0/redis_exporter-v1.55.0.linux-amd64.tar.gz
tar xvfz redis_exporter-v1.55.0.linux-amd64.tar.gz
mv node_exporter-1.7.0.linux-amd6 /usr/local/skywalking/exporter/redis_exporter
cd redis_exporter
nohup ./redis_exporter -redis.password="your password" > /usr/local/skywalking/exporter/redis_exporter/redis_exporter.log 2>&1 &
# 验证
curl 127.0.0.1:9100
4.3.2 节点导入器
-
修改OpenTelemetry Collector配置文件otel-collection-config.yaml
receivers:prometheus:config:scrape_configs:- job_name: "vm-monitoring"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:9100"]labels:node_identifier_host_name: vm-machine- job_name: "skywalking-so11y"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:1234"]labels:host_name: vmlinuxservice: self-observability- job_name: "redis-monitoring"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:9121"]labels:host_name: redis processors:batch:exporters:otlp:endpoint: "your IP:11800" # The OAP Server addresstls:insecure: truelogging:loglevel: debug service:pipelines:metrics:receivers: [prometheus]processors: [batch]exporters: [otlp, logging]
-
重启OpenTelemetry Collector
systemctl restart otelcol
4.3.3 访问查看

4.4 数据库-MySQL
4.4.1 节点导出器
- 创建MySQL监控账号并授权
CREATE USER 'mysql_exporter'@'%' IDENTIFIED BY 'your password' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql_exporter'@'%';
FLUSH PRIVILEGES;
- mysqld_exporter.conf
[client]
user=mysql_exporter
password=your password
- 启动mysql_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gz
tar xvfz mysqld_exporter-0.15.0.linux-amd64.tar.gz
mv mysqld_exporter-0.15.0.linux-amd64 /usr/local/skywalking/exporter/mysqld_exporter
cd mysqld_exporter
# 创建配置MySQL监控账号的文件/usr/local/skywalking/exporter/mysqld_exporter/mysqld_exporter.conf
nohup ./mysqld_exporter --config.my-cnf="mysqld_exporter.conf" > /usr/local/skywalking/exporter/mysql_exporter/mysql_exporter.log 2>&1 &
# 验证
curl 127.0.0.1:9104
4.4.2 节点接收器
-
修改OpenTelemetry Collector配置文件otel-collection-config.yaml
receivers:prometheus:config:scrape_configs:- job_name: "vm-monitoring"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:9100"]labels:node_identifier_host_name: vm-machine- job_name: "skywalking-so11y"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:1234"]labels:host_name: vmlinuxservice: self-observability- job_name: "mysql-monitoring"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:9104"]labels:host_name: mysql8- job_name: "redis-monitoring"scrape_interval: 10sstatic_configs:- targets: ["0.0.0.0:9121"]labels:host_name: redisprocessors:batch:exporters:otlp:endpoint: "your IP:11800" # The OAP Server addresstls:insecure: truelogging:loglevel: debug service:pipelines:metrics:receivers: [prometheus]processors: [batch]exporters: [otlp, logging]-
重启OpenTelemetry Collector
systemctl restart otelcol
-
4.4.3 访问查看

相关文章:
APM工具skywalking部署
一 整体架构 整个架构,分成上、下、左、右四部分: 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是&…...
MFC打开可执行文件exe
CString exeName, propathdir;//propath _T("D:\\vs2017\\Project\\work\\mySqlselect\\release64\\mySqlselect.exe");//propathdir _T("D:\\vs2017\\Project\\work\\mySqlselect\\elease64\\");//路径太深的时候要指明文件所在路径,奇葩//p…...
css实现原生form表单label必填选项红色*样式,以及js控制必填校验
文章目录 一、css实现原生form表单label必填选项红色*样式,以及js控制必填校验?二、实现方案参考原文 一、css实现原生form表单label必填选项红色*样式,以及js控制必填校验? 二、实现方案 1.css实现原生form表单label必填选项红色…...
10_6 input输入子系统,流程解析
简单分层 应用层 内核层 --------------------------- input handler 数据处理层 driver/input/evdev.c1.和用户空间交互,实现fops2.不知道数据怎么得到的,但是可以把数据上传给用户--------------------------- input core层1.维护上面和下面的两个链表2.为上下两层提供接口--…...
竞赛选题 题目:垃圾邮件(短信)分类 算法实现 机器学习 深度学习 开题
文章目录 1 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于机器学习的垃圾邮件分类 该项目…...
Web前端—移动Web第三天(移动Web基础、rem、less、综合案例—极速问诊)
版本说明 当前版本号[20231120]。 版本修改说明20231120初版 本课程的笔记已经更新完毕,各位可以通过点击《黑马程序员2023新版前端Web开发HTML5CSS3移动web视频教程,前端web入门首选》学习笔记总目录查看所有知识点,同时也能免费下载学习…...
MySQL--慢查询(一)
1. 查看慢查询日志是否开启 show variables like slow_query%; show variables like slow_query_log; 参数说明: 1、slow_query_log:这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。 2、long_query_time:当SQL语句执行…...
【大神支招】3步,打造一张BI报表
随着BI报表的高效直观、灵活分析的特点越来越被大家所熟知,很多BI零基础的用户可积极尝试制作BI报表,以达到灵活自助分析、高效智能分析的效果。那么BI报表零基础的小白们该怎么做BI报表,才能又快又好地做出来? 大神支招…...
【Linux】文件操作
欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻文件是什么?&am…...
(动手学习深度学习)第13章 实战kaggle竞赛:狗的品种识别
文章目录 1. 导入相关库2. 加载数据集3. 整理数据集4. 图像增广5. 读取数据6. 微调预训练模型7. 定义损失函数和评价损失函数9. 训练模型 1. 导入相关库 import os import torch import torchvision from torch import nn from d2l import torch as d2l2. 加载数据集 - 该数据…...
自定义注解+AOP
自定义注解与AOP(面向切面编程)的结合常常用于在应用程序中划定切面,以便在特定的方法或类上应用横切关注点。以下是一个简单的示例,演示了如何创建自定义注解,并使用Spring AOP来在被注解的方法上应用通知。 如何创建…...
Ribbon
在Spring Cloud中,Ribbon是一个用于客户端负载均衡的组件,它可以与其他服务发现组件(例如Eureka)集成,以提供更强大的负载均衡功能。Ribbon使得微服务架构中的客户端能够更加智能地调用其他服务的实例,从而…...
git -1
1.创建第一个仓库并配置local用户信息 git config git config --global 对当前用户所有仓库有效 git config --system 对系统所有登录的用户有效 git config --local 只对某个仓库有效 git config --list 显示配置 git config --list --global 所有仓库 git config --list…...
基于SSM+Vue的鲜花销售系统/网上花店系统
基于SSM的鲜花销售系统/网上花店系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringMyBatisSpringMVC工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 管理员界面 摘要 鲜花销售系统是一个基于SSM(Spring …...
安卓:Android Studio4.0~2023中正确的打开Android Device Monitor
Android Studio4.0~2023 中如何正确的打开Android Device Monitor(亲测有效) 前些天买了新电脑,安装了新版本的Android Studio4.0想试一试,结果就出现了一些问题。 问题引出: Android Device Monitor在工具栏中找不到,后来上网查…...
装备制造企业设备远程运维平台的建设-天拓四方分享
设备远程运维平台是一种基于互联网和物联网技术的设备管理平台,可以实现设备的远程监控、故障诊断、预警维护等功能。近年来,随着云计算、大数据、人工智能等技术的不断发展,设备远程运维平台的智能化程度越来越高,传统的设备运维…...
群晖NAS搭建WebDav服务做文件共享,可随时随地远程访问
文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后,启动webdav服务,并勾选HTTP复选框 2. 局域网测试WebDav服务2.1 下载RaiDrive客户端2.2 打开RaiDrive,设置界面语言可以选择中文2.3 点击添加按钮,新建虚拟驱动区2…...
c++调用Lua(table嵌套写法)
通过c调用lua接口将数据存储到虚拟栈中,就可以在lua脚本在虚拟栈中取得数据 c调用lua库,加载lua文件, lua_State* L;//定义一个全局变量***************************L luaL_newstate();luaL_openlibs(L);//打开Lua脚本文件std::string pat…...
算法复杂度分析
文章目录 有数据范围反推算法复杂度以及算法内容一般方法递归 有数据范围反推算法复杂度以及算法内容 c一秒可以算 1 0 7 10^7 107~ 1 0 8 10^8 108次 一般方法 看循环 有几层循环就可以初步分析O( n i n^i ni) 双指针算法除外O(n) 递归 公式法 根据公式的形式࿰…...
几款Java源码扫描工具(FindBugs、PMD、SonarQube、Fortify、WebInspect)
说明 有几个常用的Java源码扫描工具可以帮助您进行源代码分析和检查。以下是其中一些工具: FindBugs:FindBugs是一个静态分析工具,用于查找Java代码中的潜在缺陷和错误。它可以检测出空指针引用、资源未关闭、不良的代码实践等问题。FindBu…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
