前言
Skywalking5.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-libs是backend启动需要的所有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 使用数据空间的能力,差点导致了生产事故,幸好收到了短信提示,及时处理。这里补充下注意事项
在 该配置文件下还有:recordDataTTL和metricsDataTTL,表示的数据数据保存的时间,单位是天,分别为 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.sh为UI的启动脚本
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这个配置文件
以下是使用步骤:
拷贝一份agent到任意一个你喜欢的地方,我喜欢放在 jar包的同级目录。
修改agent.config中的参数
agent.service_name修改实际的,同一个应用多个实例,其 service_name相同
agent.instance_name每个实例都应该是唯一的,建议自行修改,这样UI上可视化后,更有意义。
collector.backend_service修改为实际的backend所在主机的ip和端口。
在 jar包启动脚本中添加如下命令-javaagent:/xxx/agent/skywalking-agent.jar
结语
按照上面的步骤后,启动应用,你可以通过UI的界面去看看是否 OK
以上是skywalking 8.3在使用MySQL时的最基础的配置,更多的信息请参考:官方文档
当然你有问题,也可以留言讨论。
骐骥一跃,不能十步。驽马十驾,功在不舍。