随着近几年微服务的流行,各种业务的相互调用越来越频繁,对业务性能优化和故障诊断也会显的更加复杂。skywalking监控主要用于用户请求链路和路径的监控(拓扑图),能追踪到调用链路各个环节是否正常(错误的原因)和耗时(DB查询、缓存查询等等),能快速定位程序的bug或者慢的原因,主要用于业务层面性性能优化和故障诊断。另外skywalking接入无需修改程序代码,不需要开发的介入运维自己就可以部署,客户端可以通过<group name>::<logic name>方式做好项目的分组,然后通过Python程序实现不同的项目告警通过邮件或者微信推送给不同的项目负责人,通过skywaling告警功实现能有问题及时发现、及时解决。
一、Nacos集群的部署
Skywalking集群的动态配置主要支持zookeeper、consul、etcd和nacos,我们采用nacos,先安装软件包,然后编辑配置文件,3台nacos集群服务器的配置一样。Nacos官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
编辑cluster.conf配置文件,添加集群的节点。
[root@sw01 conf]# cat cluster.conf ip1:8848 ip2:8848 ip3:8848编辑application.properties配置文件,指定mysql数据存储。
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://x.x.x.x:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=nacos db.password.0=xxxxxx新建数据库给数据库授权限,并启动nacos服务。
#创建数据库nacos_config 并导入源sql数据文件nacos-mysql.sql grant all privileges on nacos_config.* to nacos@'%' identified by 'xxxxxx'; systemctl start nacos在每个服务器节点登录nacos后台查看集群是否正常。
二、Skywalking 集群+动态配置部署
首先到官网下载skywalking软件包然后解压,编辑skywalking配置文件application.yml,其它配置一样,只需要修改gRPCHost地址为sw服务器的IP地址。
#sw集群配置,这里的x.x.x.x为nacos虚地址,可以通过nginx为nacos集群做一个虚地址 cluster: selector: ${SW_CLUSTER:nacos} nacos: serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:x.x.x.x:8848} # Nacos Configuration namespace namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"} # Nacos auth username username: ${SW_CLUSTER_NACOS_USERNAME:"nacos"} password: ${SW_CLUSTER_NACOS_PASSWORD:"xxxxxx"} # Nacos auth accessKey accessKey: ${SW_CLUSTER_NACOS_ACCESSKEY:""} secretKey: ${SW_CLUSTER_NACOS_SECRETKEY:""} #sw配置,这里的x.x.x.x为sw服务器的IP地址 core: selector: ${SW_CORE:default} default: gRPCHost: ${SW_CORE_GRPC_HOST:x.x.x.x} gRPCPort: ${SW_CORE_GRPC_PORT:11800} #后端存储选择ES, clusterNodes可以是ES集群虚地址或者单个ES的IP地址 storage: selector: ${SW_STORAGE:elasticsearch} elasticsearch: namespace: ${SW_NAMESPACE:""} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:x.x.x.x:9200} protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000} socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000} responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000} numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0} user: ${SW_ES_USER:""} password: ${SW_ES_PASSWORD:""} #sw + nacos 动态配置,这里x.x.x.x为nacos集群的虚IP configuration: selector: ${SW_CONFIGURATION:nacos} nacos: # Nacos Server Host serverAddr: ${SW_CONFIG_NACOS_SERVER_ADDR:x.x.x.x} # Nacos Server Port port: ${SW_CONFIG_NACOS_SERVER_PORT:8848} # Nacos Configuration Group group: ${SW_CONFIG_NACOS_SERVER_GROUP:skywalking} # Nacos Configuration namespace namespace: ${SW_CONFIG_NACOS_SERVER_NAMESPACE:} # Unit seconds, sync period. Default fetch every 60 seconds. period: ${SW_CONFIG_NACOS_PERIOD:60} # Nacos auth username username: ${SW_CONFIG_NACOS_USERNAME:"nacos"} password: ${SW_CONFIG_NACOS_PASSWORD:"xxxxxx"} # Nacos auth accessKey accessKey: ${SW_CONFIG_NACOS_ACCESSKEY:""} secretKey: ${SW_CONFIG_NACOS_SECRETKEY:""} #启动服务 [root@sw01 bin]# sh startup.sh验证,如果skywalking集群没有问题,在nacos后台就可以看到skywalking已经把服务注册到nacos里面了。
三、通过Nacos动态管理skywalking
skywalking 官方动态配置手册:
https://skywalking.apache.org/docs/main/v8.8.1/en/setup/backend/dynamic-config/Skywalking集群的动态配置主要支持zookeeper、consul、etcd和nacos等。这里动态主要提现在所有的Skywalking告警策略和配置的变更都在nacos配置管理中心操作,变更后sw集群节点会立即生效,不用一台一台编辑sw的配置然后重启服务,维护和管理特别方便。Skywalking支持的配置项如下,不通的版本配置的key和配置文件都不一样,请查看官网文档。
下面在Nacos配置管理->配置列表里面添加agent-analyzer.default.traceSamplingPolicy用来限制服务服务端端采集评率,数值10000为全部采样,这里设置5000采样率为50%。其它如告警alarm.default.alarm-settings配置方法都一样。
四、总结
Skywalking部署简单,新版UI更加好用。skywalking在链路追踪、告警和性能指标统计等方面能帮助开发和运维快速定位问题,在半年多的使用中,发现过慢SQL语句、程序bug和报错等等。skywalking推送的告警更使各个项目的负责人对自己负责业务的性能指标做到心中有数,有问题及时优化。
【本文来源:武汉网站优化 http://www.5h5q.com网络转载请说明出处】