Skywalking全链路监控集群和动态部署

Posted 朴实的追梦者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Skywalking全链路监控集群和动态部署相关的知识,希望对你有一定的参考价值。

随着近几年微服务的流行,各种业务的相互调用越来越频繁,对业务性能优化和故障诊断也会显的更加复杂。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推送的告警更使各个项目的负责人对自己负责业务的性能指标做到心中有数,有问题及时优化。

以上是关于Skywalking全链路监控集群和动态部署的主要内容,如果未能解决你的问题,请参考以下文章

skywalking 搭建链路监控

实现一个全链路监控平台很难吗?PinpointSkyWalkingZipkin,哪个实现比较好?

linux安装全链路追踪工具skywalking8.0

可以用于云原生中Skywalking框架原理你真的懂吗

Skywalking全链路追踪使用说明

Skywalking全链路追踪使用说明