sykwalking8.2和mysql5.7快速部署

1.SkyWalking 是什么?

分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

2.SkyWalking 有哪些功能?

  • 多种监控手段。可以通过语言探针和 service mesh 获得监控是数据。
  • 多个语言自动探针。包括 Java,.NET Core 和 Node.JS。
  • 轻量高效。无需大数据平台,和大量的服务器资源。
  • 模块化。UI、存储、集群管理都有多种机制可选。
  • 支持告警。
  • 优秀的可视化解决方案。

3.整体架构

架构图

整个架构,分成上、下、左、右四部分:

考虑到让描述更简单,我们舍弃掉 Metric 指标相关,而着重在 Tracing 链路相关功能。

  • 上部分 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 :负责提供控台,查看链路等等。

4.搭建 SkyWalking 单机环境

4.1使用各种数据库作为skywalking数据存储的地方,可以是es,mysql,h2等

4.2在官网下载skywalking 

Index of /dist/skywalkingicon-default.png?t=N6B9https://archive.apache.org/dist/skywalking/

 

 将下载好的包上传至服务器,并解压

mkdir -p /Users/yunai/skywalking
cd /Users/yunai/skywalking
tar -zxvf 文件名

$ ls -ls4 drwxr-xr-x 8 root root  4096 Sep  9 15:09 agent # SkyWalking Agent4 drwxr-xr-x 2 root root  4096 Sep  9 15:44 bin # 执行脚本4 drwxr-xr-x 2 root root  4096 Sep  9 15:44 config # SkyWalking OAP Server 配置文件
32 -rwxr-xr-x 1 root root 28903 Sep  9 14:32 LICENSE4 drwxr-xr-x 3 root root  4096 Sep  9 15:44 licenses
32 -rwxr-xr-x 1 root root 31850 Sep  9 14:32 NOTICE
16 drwxr-xr-x 2 root root 16384 Sep  9 15:22 oap-libs # SkyWalking OAP Server4 -rw-r--r-- 1 root root  1978 Sep  9 14:32 README.txt4 drwxr-xr-x 2 root root  4096 Sep  9 15:44 webapp # SkyWalking UI

 4.3 启动步骤

正文

Skywalking整体分为 3 个部分:agent,backend,UI

  • agent 代理,应用启动的时候后,通过该agent收集数据并上报backend
  • backend 数据收集器,agent收集的数据会发送给backend,然后数据处理后入库。
  • ui也就是提供可视化服务的界面。

在安装前,请在官方网址进行下载:下载地址,下载的时候,请一定注意了不是第一行的Source Code而是第二行的Binary Distribution

backend

如上所述:backend的目的是收集agent的上报的数据,然后持久化到存储中,起到承上启下的功能,所以首先安装backend

前置知识

与之先关的目录和文件主要是如下几个:

  • bin目录下的oapService.sh,它就是 backend 的启动脚本
  • config目录下的application.yml,它是backend的配置信息
  • oap-libsbackend启动需要的所有jar
  • logs目录下的skywalking-oap-server.log是启动后的日志文件。

启动步骤

以下内容是 基于MySQL作为存储来讲解的。

第一步:修改config下的配置文件application.yml

  • storage.selector修改为mysql,默认是用于演示的h2,你也可以选择自己的存储介质。
  • 然后找到store下的 mysql节点
  • 修改mysql.properties中基本信息:jdbcUrl/dataSource.user/dataSource.password

2020年08月10日 补充

低估了 skywalking 使用数据空间的能力,差点导致了生产事故,幸好收到了短信提示,及时处理。这里补充下注意事项

在 该配置文件下还有:recordDataTTLmetricsDataTTL,表示的数据数据保存的时间,单位是天,分别为 3天 和 7天。

我这个服务有 3 个服务节点,12 个小时就占用了18G 的内存空间,这样算下来,基本上一个节点一小时最起码就占用了 0.5G 的空间。

所以请大家一定要注意评估你数据库的存储空间!

第二步:将mysql的驱动包,拷贝到opa-libs目录中。官方可没有自带mysql的驱动包,所以请自行下载后拷贝到这个目录。

  • mysql8一定要找对应的mysql8的 jar 包,不要找mysql5.7的驱动包,MySql8驱动
  • mysql5.7的数据库,最好也是5.7的(理论上 8 的也是兼容),MySQL5.7驱动

如果上述流程完成后,尝试运行bin目录下的oapService.sh

sh oapService.sh

然后查看logs/skywalking-oap-server.log的日志,如果失败会有日志,接下来你就见招拆招吧。

启动后,你可以通过如下几种方式观察是否成功。

第一就是可以通过查看端口运行情况判定:

lsof -i:12800 #数据上报端口,很重要的端口
lsof -i:11800

如果端口被占用,日志又没有错误保存,那么基本启动成功了。

第二就是查看jdbcUrl对应的数据库是否已经默认创建好了数据表。

Bug1

我在本文的时候,发现日志报错了一个错误,提示:Data too long for column 'statement' at row 1

简单查了下应该是Segment表的字段statement,原本是 200的长度,我将其改为 2000,该问题目前为止没有再输出。

还有就是top_n_database_staement有这个字段,我暂时也将其修改到了2000

同时提了issue官方也很快做出了响应,建议修改为2000。直达地址

Bug2

提示:Specified key was too long; max key length is 767 bytes

最简单的方法就是将参数:innodb_large_prefix修改为ON,其他方法请自行百度了解

ui

该组件将数据可视化出来,供大家更直观的查看数据。

前置知识

与之关联的目录和文件大体如下:

  • bin下的webappService.shUI的启动脚本
  • webapp目录,其中包括了 2 个重要的东西
    • webapp.yml,包括 UI启动的端口和上报地址
    • skywalking-webapp.jar,启动 jar包
  • logs下的文件webapp.log

启动步骤

第一步:修改webapp.yml,其默认的端口是经典的8080,所以还是修改为一个特殊点的端口,避免启动出错。

第二部:修改collecotr.ribbon.listofServers的 ip实际运行的 ip

第三步:通过 bin 下的webappService.sh启动

sh webappService.sh

不要看到控制台输出SkyWalking Web Application started successfully!就认为 OK 了。

还是要自己看看日志webapp.log有没有报错内容。、

agent

agent 的作用是同应用一起启动,将应用的指标数据上传。agent 我记得是可以共享的,就是所有的应用都用同一个 agent,但是为了安全,还是建议每个应用一个 agent

与之相关的目录为agent,其中最关键的就是agent/config/agent.config这个配置文件

以下是使用步骤:

  1. 拷贝一份agent到任意一个你喜欢的地方,我喜欢放在 jar包的同级目录。
  2. 修改agent.config中的参数
    1. agent.service_name修改实际的,同一个应用多个实例,其 service_name相同
    2. agent.instance_name每个实例都应该是唯一的,建议自行修改,这样UI上可视化后,更有意义。
    3. collector.backend_service修改为实际的backend所在主机的ip和端口。
  3. 在 jar包启动脚本中添加如下命令-javaagent:/xxx/agent/skywalking-agent.jar

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

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

相关文章

K8S之存储卷

K8S之存储卷 一、emptyDir emptyDir:可实现Pod中的容器之间共享目录数据,但emptyDir存储卷没有持久化数据的能力,存储卷会随着Pod生命周期结束而一起删除二、hostPath hostPath:将Node节点上的目录/文件挂载到Pod容器的指定目录…

LVS-DR模式下(RS检测)ldirectord工具实现部分节点掉点后将请求发往正常设备进行处理

基于前文的LVS-DR集群构建环境 一.下载ldirectord软件 二.将模板文件中的LVS-DR模式相关文件拷贝到/etc/ha.d主配置目录并按实际设备修改 三.配置两台RS匹配规则 四.停止RS1的http服务进行测试 RS1失去工作能力,RS2接替RS1 基于前文的LVS-DR集群构建环境 一.下…

VITS2来袭~

论文:VITS2: Improving Quality and Efficiency of Single-Stage Text-to-Speech with Adversarial Learning and Architecture Design 演示:https://vits-2.github.io/demo/ 论文:https://arxiv.org/abs/2307.16430 目前仍然存在的问题: int…

使用GUI Guider工具开发嵌入式GUI应用(6)-切换多screen换场景

使用GUI Guider工具开发嵌入式GUI应用(6)-切换多screen换场景 本节将展示使用GUI Guider实现切换显示页面功能。 这里设计的用例是: 创建3张页面,screen_0,screen_1和screen_2。分别在每个页面上中放置一个Label(最…

C++ STL容器适配器(详解)

STL容器适配器 什么是适配器,C STL容器适配器详解 在详解什么是容器适配器之前,初学者首先要理解适配器的含义。 其实,容器适配器中的“适配器”,和生活中常见的电源适配器中“适配器”的含义非常接近。我们知道,无…

后端项目打包上传服务器记录

后端项目打包上传服务器记录 文章目录 后端项目打包上传服务器记录1、项目打包2、jar包上传服务器 本文记录打包一个后端项目,上传公司服务器的过程。 1、项目打包 通过IDEA的插件进行打包: 打成一个jar包,jar包的位置在控制台可以看到。 2、…

简单介绍C++中的模板

目录 一、泛型编程 泛型编程的概念: 泛型编程举例: 二、函数模板 函数模板的概念: 函数模板的格式: 函数模板的实例化: 隐式实例化: 显式实例化: 模板参数的匹配原则: 三、类模板 类模板的格式定义: 类模…

【学会动态规划】最长湍流子数组(23)

目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟我…

LeetCode 141.环形链表

文章目录 💡题目分析💡解题思路🔔接口源码💡深度思考❓思考1❓思考2 题目链接👉 LeetCode 141.环形链表👈 💡题目分析 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中…

怎么系统的学习机器学习、深度学习?当然是看书了

目录 前言 内容简介 学完本书,你将能够 作者简介 本书目录 京东自购链接 前言 近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从Ale…

react实现模拟弹框遮罩的自定义hook

需求描述 点击按钮用于检测鼠标是否命中按钮 代码实现 import React from react; import {useState, useEffect, useRef} from react;// 封装一个hook用来检测当前点击事件是否在某个元素之外 function useClickOutSide(ref,cb) {useEffect(()>{const handleClickOutside…

《论文阅读14》FAST-LIO

一、论文 研究领域:激光雷达惯性测距框架论文:FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter IEEE Robotics and Automation Letters, 2021 香港大学火星实验室 论文链接论文github 二、论文概…

实践-传统深度学习

简介与安装 2 训练自己的数据集整体流程3 数据加载与预处理4 搭建网络模型5 学习率对结果的影响6 Drop-out操作7 权重初始化方法对比8 初始化标准差对结果的影响9 正则化对结果的影响10 加载模型进行测试 TensorFlow:每一步都需要自己做。 Keras:做起来更…

Electron基础篇

人生有些事,错过一时,就错过一世。 官网:简介 | Electron Electron-大多用来写桌面端软件 Electron介绍 Electront的核心组成是Chromium、Node.js以及内置的Native API,其中Chromium为Electron提供强大的UI能力,可以在不考虑兼容的情况下利…

C# 读取pcd点云文件数据

pcd文件有ascii 和二进制格式,ascii可以直接记事本打开,C#可以一行行读。但二进制格式的打开是乱码,如果尝试程序中读取,对比下看了数据也对不上。 这里可以使用pcl里的函数来读取pcd,无论二进制或ascii都可以正确读取…

【探索Linux】—— 强大的命令行工具 P.5(yum工具、git 命令行提交代码)

阅读导航 前言一、软件包管理器 yum1.yum的概念yum的基本指令使用例子 二、git 命令行提交代码总结温馨提示 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C的一些知识,也学习了一些Linux的基本操作,也了…

php base64转图片保存本地

调用函数 public function base64(){$img $this->request->param(img);$img data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAkACQAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy…

基于springboot的社区生活缴费系统/基于javaweb的水电缴费系统

摘 要 网络的广泛应用给生活带来了十分的便利。所以把社区生活缴费管理与现在网络相结合,利用java语言建设社区生活缴费系统,实现社区生活缴费管理的信息化。则对于进一步提高社区生活缴费管理发展,丰富社区生活缴费管理经验能起到不少的促进…

UniApp 制作高德地图插件

1、下载Uni插件项目 在Uni官网下载Uni插件项目,并参考官网插件项目创建插件项目. 开发者须知 | uni小程序SDK 如果下载下来项目运行不了可以参考下面链接进行处理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官网下载对应SD…

Spring Clould 部署 - Docker

视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) 初识Docker-什么是Docker(P42,P43) 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&…