基于nacos的skywalking集群配置
Apache Skywalking 简介:
Apache Skywalking 是由吴晟老师创建,是我认为目前综合能力最强大的开源分布式链路追踪系统(全链路监控系统),虽然开源全链路工具在功能上没有商业的强大,但是开源工具有开源工具的好处(没有最好的只有最适合的,大家应该根据自己的业务场景进行选择,我们选择了开源全链路监控软件Apache Skywalking)。
skywalking官网地址: http://skywalking.apache.org/zh/
github地址: https://github.com/apache/skywalking
开源相对于商业产品的好处:
1:成本低,商业系统按照服务器收费如果服务器众多一年的开销巨大。
2:安全,数据放到自己的服务器上不至于有泄露公司机密风险。
3:源代码开放可学习性强,skywalking 有着非常优秀的工程设计能力,学习其源码对技术人员成长有得天独厚的好处。
skywalking为什么要进行集群配置?
如果公司里有大量的业务,比如本人所在公司的业务特点就是业务众多访问量大,本部门有几十个国内外业务,机房也涉及到国内、印度、俄罗斯等几个机房,业务众多量级大单台skywalking oap server 是不够用的(具体多大量级需要多少配置在这里不详细说,篇幅有限此篇文章重点介绍如何配置skywalking nacos),skywalking oap 之间本身不能搭建集群,需要一个集群管理器来组建集群,截至到发稿skywalking 支持nacos、zookeeper、Kubernetes、Consul、Etcd 五种集群管理器,由于本人做了一些skywalking社区 的nacos相关开发维护工作有一点nacos集群相关经验,下面分享一下基于nacos的集群管理如何搭建并在本地进行真实搭建演示,其他组件原理和配置类似,后面主要介绍如何配置skywalking nacos集群,别的比如说代码分析暂时不在此研究,一提到配置本人习惯先从配置文件入手,本文主要用到skywalking的application.yml 和alarm-settings.yml两个配置文件,为了方便大家学习此文章对skywalking整体目录结构也罗列了一下如下
skywalking目录结构
├── agent #java agent所在目录(包括java agent的配置文件)
├── config #配置文件目录
│ ├── alarm-settings-sample.yml #告警配置例子
│ ├── alarm-settings.yml #告警配置(本文涉及到配置)
│ ├── application.yml #oap配置(本文涉及到配置)
│ ├── component-libraries.yml #组件库配置
│ ├── gateways.yml #网关配置
│ ├── log4j2.xml #日志配置
│ ├── official_analysis.oal #数据分析指标配置
│ └── service-apdex-threshold.yml #阀值配置
├── bin #启动相关脚本(包括web、oap)
│ ├── oapService.bat #oap初始化启动脚本(windows)
│ ├── oapServiceInit.bat #oap初始化脚本windows
│ ├── oapServiceInit.sh #oap初始化脚本linux
│ ├── oapServiceNoInit.bat #oap无需初始化启动脚本windows
│ ├── oapServiceNoInit.sh #oap无需初始化启动脚本linux
│ ├── oapService.sh #oap初始化启动脚本windows
│ ├── startup.bat #skywalking启动脚本windows
│ ├── startup.sh #skywalking启动脚本linux
│ ├── webappService.bat #UI启动脚本windows
│ └── webappService.sh #UI启动脚本linux
├── LICENSE #LICENSE 文件
├── licenses #licenses所在目录
├── NOTICE #NOTICE 文件
├── oap-libs #oap依赖jar包
├── README.txt #README文件
├── logs #各种日志
└── webapp #UI jar包
├── skywalking-webapp.jar #UI jar包
└── webapp.yml #web相关配置
部署架构图
架构图是方便大家理解整体架构做准备,这里为了给大家演示是在本地搭建两个oap server,多台原理是一样的(线上生产环境可能会每个公司根据自己的情况会有一些额外配置、比如线上agent域名上报的grpc http2代理、机房间网络端口不通需要特殊处理等)
nacos 安装部署
1.下载nacos
地址:https://github.com/alibaba/nacos/releases
2.解压
unzip nacos-server-version.zip OR tar -xvf nacos-server-version.tar.gz
cd nacos/bin
3.启动server(standalone是单独部署)
Linux/Unix/Mac
sh startup.sh -m standalone
如果使用的是Ubuntu系统或者遇到下面的错误
[[symbol not found,推荐运行下面的命令:
bash startup.sh -m standalone
Windows
运行如下命令启动
cmd startup.cmd
启动成功会出如下界面
ui管理后台(ui地址在启动日志里查看,默认用户名和密码全是nacos)。
skywalking 7 集群部署(两台):
这里演示两台skywalking oap server 集群部署,多台原理也一样由于时间问题这里就不做演示了。
下载 skywalking(直接使用推荐下载Binary,如果需要研究源码下载Source code)
下载地址:https://skywalking.apache.org/downloads/
下图是skywalking中nacos集群配置部分
下图是skywalking中nacos 动态配置部分。
如果配置成功nacos 启动skywalking后台会发现这两个skywalking oap 服务。
什么是动态配置?
skywalking动态配置的意思就是在不用重启服务的情况下能动态的修改一些配置参数,显而易见这么做的好处是在不影响线上正常运行的情况下可以修改配置参数。
skywalking支持的动态配置
配置动态配置:
进入nacos点击右上角+
填好信息并且把告警配置粘贴进入(这些告警信息参数后续自己可以在nacos页面进行修改,修改之后skywalking那面会跟着修改,这样就达到了动态配置的效果),点击右下角publish 会显示发布成功
在列表里会看到已发布的配置
测试动态配置是否生效
到刚才的nacos页面点击修改,把webhooks注释掉一个
结果skywalking 的skywalking-oap-server.log 日志打印出修改之后的log了,说明修改成功
其他配置项的原理和配置方法类似,这里就不全部列出来了,到此基于nacos的skywalking 集群配置完毕,最后祝大家开心每一天。
启动应用程序进行测试
(1)如果是jar包启动
修改 agent/config/agent.config
将 collector.backend_service 修改为 127.0.0.1:11801,127.0.0.1:11802
java -javaagent:xxxxx/agent/skywalking-agent.jar
-Dskywalking.agent.service_name=gateway
-Dskywalking.collector.backend_service=192.168.133.128:11801,192.168.133.128:11802
-jar springboot-idea.jar
(2)如果是idea启动应用程序:(注意配置两个连接地址)
SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.133.128:11801,192.168.133.128:11802;SW_AGENT_NAME=springboot-idea
作者:ApacheSkyWalking https://www.bilibili.com/read/cv6621424/
标题:基于nacos的skywalking集群配置
作者:michael
地址:https://blog.junxworks.cn/articles/2024/01/02/1704175141669.html