Skywalking安装、配置及简单应用

Skywalking


概念:
1.TraceId,即一次调用的链路的标识,链路中所有的调用节点都拥有相同的TraceId
2.SpanId,即每个被调用的节点的标识,如果一个调用链路中有5个节点的处理,那么就对应5个SpanId.

一、安装Docker Desktop略,也可以在VMWare上安装CentOS虚拟机,再安装Docker。
二、安装ES: 如下,需要先建三个文件夹和一个文件,如下:
注:如果布署到阿里云上,需要在网络安全组开放,9200和9300端口

docker run -d --name skywalking_es7 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v F:/libin/dev/ideaprojects/centry/web/skywalking/data/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v F:/libin/dev/ideaprojects/centry/web/skywalking/data/es/data:/usr/share/elasticsearch/data -v F:/libin/dev/ideaprojects/centry/web/skywalking/data/es/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.6.2

三、安装Skywalking服务端
docker run -d --name skywalking_oapserver --restart always -e TZ=Asia/Shanghai -p 12800:12800 -p 11800:11800 --link skywalking_es7 -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=skywalking_es7:9200 apache/skywalking-oap-server:8.5.0-es7

--link表示连接skywalking_es7,可以互相访问,但是是单向的

四、安装Skywaling-UI
docker run -d --name skywalking_ui --restart=always -e TZ=Asia/Shanghai -p 8080:8080 --link skywalking_oapserver -e SW_OAP_ADDRESS=skywalking_oapserver:12800 apache/skywalking-ui:8.5.0

五、探针(agent)在idea中的使用
在springboot的主类的启动参数中配置,即jvm参数中配置如下信息:
-javaagent:F:/libin/dev/ideaprojects/centry/web/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=authorization-server -Dskywalking.collector.backend_service=localhost:11800
注:localhost就是docker容器的宿主机,不能用宿主机的虚拟Ip,虚拟ip是给容器和外界通讯用的。
注:这个探针的测试项目有的是authrization-server和resource-server,详细的Jvm参数请参见此两个项目。
F:/libin/dev/ideaprojects/centry/web/skywalking/agent/skywalking-agent.jar

六、访问并查看skywalking的ui的各项参数
    以功能查看,包括仪表板,拓扑图,告警等
    以服务和实例查看,包括服务,实例和Endpoint(restfull的路径)
    以Apm,database,jvm的维度查看
    以上三个维度还包含各种指标及图形展示方式,不详细介绍了。
七、在排查链路追踪的时候,往往粒度比较粗(例如一个rest请求->数据库访问,就两层级),无法追踪到中间的执行环节(例如service的方法),那么就需要加入如下依赖,并在要被追踪到的方法上面加上@Trace注解即可,这样在skywalking的ui的追踪里就可以查看具体的方法的链路及耗时了。从而可以了解哪个方法耗时长,并可以做相应的优化。
    <dependency>
       <groupId>org.apache.skywalking</groupId>
       <artifactId>apm-toolkit-trace</artifactId>
       <version>8.5.0</version>
    </dependency>
    如果在追踪方法时,还需要获取方法的入出参信息,那么需要在方法加上如下注解:
    @Tags(
            {
                    @Tag(key = "authToken-input", value = "arg[0]"),
                    @Tag(key = "authToken-input", value = "arg[1]"),
                    @Tag(key = "authToken-output", value = "returnedObj")
            }
    )
    入出参的key的格式一般是:方法名-input(表示入参), 方法名-output(表示出参) value中的arg[0]表示方法的第一个参数,arg[1]表示第二个参数,以此类推。
    出参的returnedObj是固定写法,返回值的value必须用这个。需要说明一点,出参如果是对象的话,那么一定要重定义toString()方法来输出字段信息,要不然输出的是内存的地址(没有意义)。
    注:追踪方法是代码侵入性的,不过侵入性不是很强(注解不是很强)。
八、在logback中集成skywalking,并将日志上传到skywalking,然后可以在skywalking-ui中查看
    1.加入以下依赖:
    <dependency>
       <groupId>org.apache.skywalking</groupId>
       <artifactId>apm-toolkit-logback-1.x</artifactId>
       <version>8.5.0</version>
    </dependency>
    
    2.配置logback-spring.xml配置文件,见authrizationserver工程的
    3.在类中加入日志(Logger logger = LoggerFactory.getLogger(ResourceServerController.class);),即可在控制台输出带traceid的日志了。
    4.上报到oap server中,在logback-spring.xml中加入appender配置,如下:
    <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>
    5.修改agent.config(路径:F:\libin\dev\ideaprojects\centry\web\skywalking\agent\config),配置oap server的地址,这样才能上传上去。
    加入如下内容:
    plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:127.0.0.1}
    plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
    plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
    plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
    如果oap server中阿里云上,那么127.0.0.1需要换成阿里云的地址。
    这样的话,就可以在skywalking-ui的日志中看到resource-server的日志了。在日志有个追踪id,点开后要吧看到这个traceid对应的请求链路了。
九、告警
    oap server的alarm-settings.yml(路径/skywalking/config)中配置了很多告警规则及告警后的WebHook(回调,网勾),WebHook一般是基于restful的接口且能被oap server在告警时访问到(同一网段或是公网能访问的)。这样调用WebHook中配置的接口即可以完成告警(发邮件,短信或是其它方式)。
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值