SkyWalking 8.3 快速上手教程

本贴最后更新于 1450 天前,其中的信息可能已经斗转星移

前言

Skywalking 5.0 和 6.0 都写过安装记录,但是存储用的都是 Elasticsearch

这次随着 8.3 版本的更新,修改了之前版本的一些问题, 存储也替换为更为简单的 MySQL 了,这里小小的做一个记录。

2020 年 12 月 02 日 修改为 skwalking 8.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 一定要找对应的 mysql8jar 包,不要找 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.listofServersip 实际运行的 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

结语

按照上面的步骤后,启动应用,你可以通过 UI 的界面去看看是否 OK

以上是 skywalking 8.3 在使用 MySQL 时的最基础的配置,更多的信息请参考:官方文档

当然你有问题,也可以留言讨论。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...