title: 微服务集成SkyWalking
date: 2019-11-24 09:59:21
categories:

  • 微服务
    tags:
  • SkyWalking

最近做的一个项目使用了Spring Cloud Alibaba,随着服务系统的增多,调用连也越来越复杂,好几天不碰,就有点忘了,所以想集成一个APM系统进来,没想到遇到很多坑,边学习边记录,最开始学习netflix那一套的时候,玩过zipkin,觉得界面有点丑。。。想到SkyWalking是国人写的,文档多点,就尝试了下。

架构

SkyWalking的架构图就不偷了,它主要分成4大模块,这些模块也是我们需要安装的。

  • Agent(客户端收集器):使用 JavaAgent 做字节码植入,无侵入式的收集,并通过 HTTP 或者 gRPC 方式发送数据到 SkyWalking Collector。
  • Oap(服务端分析):链路数据收集器,对 agent 传过来的数据进行整合分析处理并落入相关的数据存储中。
  • Storage(存储): SkyWalking 的存储,Mysql、ES、H2存储介质进行数据存储。
  • UI:Web 可视化平台,用来展示落地的数据。

安装

使用官方的docker镜像部署,docker-compose文件
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.version: '3.3'
services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:6.4.3container_name: elasticsearchrestart: alwaysports:- 9201:9200- 9301:9300environment:discovery.type: single-nodeTZ: Asia/Shanghaiulimits:memlock:soft: -1hard: -1oap:image: apache/skywalking-oap-servercontainer_name: oapdepends_on:- elasticsearchlinks:- elasticsearchrestart: alwaysports:- 11800:11800- 12800:12800environment:SW_STORAGE: elasticsearchSW_STORAGE_ES_CLUSTER_NODES: 10.0.12.4:9201TZ: Asia/Shanghaiui:image: apache/skywalking-uicontainer_name: uidepends_on:- oaplinks:- oaprestart: alwaysports:- 8480:8080environment:SW_OAP_ADRESS: 11.0.12.4:12800TZ: Asia/Shanghai
自己构建镜像

https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md

下载源码,下载依赖的git子模块

git clone https://github.com/apache/skywalking.git
git submodule init
git submodule update

编译

mvn clean package -Dmaven.test.skip=true

构建docker镜像

# cd到docker目录下
[root@hmaster docker]#
# 分别进入oap、ui目录
[root@hmaster docker]# ls
config  docker-compose.yml  d.yml  oap  README.md  ui
# 将Dockerfile.oap改名为Dockerfile
[root@hmaster oap]# mv Dockerfile.oap Dockerfile
# 粘贴apache-skywalking-apm-bin.tar.gz到同一个上下文中
[root@hmaster oap]# cp ../../dist/apache-skywalking-apm-bin.tar.gz .
# 构建
[root@hmaster oap]# docker build -t skywalking/oap .
# ui 同理

查看下

[root@hmaster oap]# docker images | grep skywalking
skywalking/ui                                   latest              d7f95be7e9f1        23 minutes ago      803MB
skywalking/oap                                  latest              53a8f7b758a2        35 minutes ago      869MB

docker-compose

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.version: '3.3'
services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2container_name: elasticsearchrestart: alwaysports:- 9200:9200- 9300:9300environment:discovery.type: single-nodeTZ: Asia/Shanghaioap:image: skywalking/oapcontainer_name: oapdepends_on:- elasticsearchlinks:- elasticsearchrestart: alwaysports:- 11800:11800- 12800:12800volumes:- ./config:/skywalking/config:roenvironment:TZ: Asia/Shanghaiui:image: skywalking/uicontainer_name: uidepends_on:- oaplinks:- oaprestart: alwaysports:- 8480:8080environment:collectorListOfServers: oap:12800TZ: Asia/Shanghai
官方编译好的版本:

es

version: '3.3'
services:elasticsearch:image: wutang/elasticsearch-shanghai-zone:6.3.2container_name: elasticsearchrestart: alwaysports:- 9200:9200- 9300:9300environment:cluster.name: elasticsearch

下载,解压

http://skywalking.apache.org/downloads/

[root@hmaster apache-skywalking-apm-bin]# ll
总用量 112
drwxrwxr-x 8 mysql www   4096 9月   9 02:14 agent
drwxr-xr-x 2 root  root  4096 11月 23 10:10 bin
drwxr-xr-x 2 root  root  4096 11月 23 10:45 config
-rwxrwxr-x 1 mysql www  28903 9月   9 02:04 LICENSE
drwxrwxr-x 3 mysql www   4096 11月 23 10:10 licenses
drwxr-xr-x 2 root  root  4096 11月 23 10:18 logs
drwxr-xr-x 2 root  root  4096 11月 23 10:23 mesh-buffer
-rwxrwxr-x 1 mysql www  31850 9月   9 02:04 NOTICE
drwxrwxr-x 2 mysql www  12288 9月   9 02:22 oap-libs
-rw-rw-r-- 1 mysql www   1978 9月   9 02:04 README.txt
drwxr-xr-x 3 root  root  4096 11月 23 10:23 trace-buffer
drwxr-xr-x 2 root  root  4096 11月 24 09:54 webapp

修改配置,进入config文件夹,修改application.yml,注释掉h2,使用es,按需修改。

storage:elasticsearch:nameSpace: ${SW_NAMESPACE:"CollectorDBCluster"}clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:127.0.0.1:9201}
#    protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
#    trustStorePath: ${SW_SW_STORAGE_ES_SSL_JKS_PATH:"../es_keystore.jks"}
#    trustStorePass: ${SW_SW_STORAGE_ES_SSL_JKS_PASS:""}
#    user: ${SW_ES_USER:""}
#    password: ${SW_ES_PASSWORD:""}indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
#    # Those data TTL settings will override the same settings in core module.
#    recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
#    otherMetricsDataTTL: ${SW_STORAGE_ES_OTHER_METRIC_DATA_TTL:45} # Unit is day
#    monthMetricsDataTTL: ${SW_STORAGE_ES_MONTH_METRIC_DATA_TTL:18} # Unit is month
#    # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.htmlbulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requestsflushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requestsconcurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
#    metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
#    segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
#  h2:
#    driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
#    url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
#    user: ${SW_STORAGE_H2_USER:sa}
#    metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
#  mysql:
#    metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}

Skywalking中默认使用的端口有80801180012800,如需修改,可以修改config目录中的application.ymlwebapp目录中的webapp.yml

进入bin目录中,执行命令./startup.sh

客户端Agent配置

服务端部署好了,需要在程序里部署客户端Agent

我们只需要把整个/agent目录挂载到各个微服务中就差不多了。

[root@hmaster agent]# ls
activations  bootstrap-plugins  config  logs  optional-plugins  plugins  skywalking-agent.jar

Dockerfile

FROM java:8
# 将运行脚本加入到容器中
COPY startup.sh /shell/startup.sh
# 赋予运行权限
RUN chmod +x /shell/startup.sh
# 指定容器时区:东八区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 创建jar包目录
RUN mkdir jar
RUN mkdir agent
# 挂载 jar,agent目录
VOLUME ["/jar","/agent"]
# 进行运行脚本
CMD [ "sh","/shell/startup.sh" ]

startup.sh


i#!/bin/bash
server_name="business-config-service-0.0.1-SNAPSHOT"
kill -s 9 `ps -aux | grep $server_name | awk '{print $2}'`
# 启动,添加agent参数,skywalking-oap地址,服务名
java -javaagent:agent/skywalking-agent.jar -Dskywalking.agent.service_name=config-business -Dskywalking.collector.backend_service=10.0.12.4:11800 -jar jar/$server_name.jar

样例docker-compose,将容器内的agent目录挂载到skywalking目录下的agent目录

version: "3.5"
services:gateway:image: gatewaycontainer_name: gatewayvolumes:- /usr/local/docker/oo1/jars/gateway:/jar- /usr/local/apache-skywalking-apm-bin/agent:/agentports:- "8889:8889"

微服务集成SkyWalking相关推荐

  1. Alibaba微服务整合SkyWalking实现应用性能监控

    1. 概述 SkyWalking是一个国产的开源框架,用于分布式系统应用程序的性能监控,专门为微服务.云原生架构和基于容器(Docker.K8s.Mesos)架构而设计,包括了分布式追踪.性能指标分析 ...

  2. 基于JBoss Fuse 6.2的JBoss BPM微服务集成指南

    今年年初,我们宣布了JBoss BPM Suite令人兴奋的示例项目,该项目围绕一个正在运行的在线Travel Agency项目展开. 最初是利用Web服务,后来我们在JBoss Fuse的帮助下迁移 ...

  3. seata的部署与微服务集成(包含多集群异地容灾配置)

    seata的部署与微服务集成 一.部署Seata的tc-server 1.下载与安装 2.配置文件详细讲解 3.创建数据库表 4.启动 二.微服务集成seata 1.引入依赖 2.修改配置文件 3.启 ...

  4. 微服务集成——《微服务设计》读书笔记

    一.理想的集成应该是什么样的? 1.避免破坏性修改 如果在一个微服务的响应中添加一个字段,服务的消费方不应该受到影响. 2.保证API的技术无关性 微服务之间的通信应该是与技术无关的. 3.使服务的消 ...

  5. 微服务集成cas_Spring Boot + Solr 全文检索微服务简易集成

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 作者:JasonGofen 链接:https://www.jianshu.com/p/95869ade37b3 本文内容主要讲解Solr 7 ...

  6. SkyWalking服务端的搭建、微服务接入SkyWalking

    文章目录 SkyWalking SkyWalking介绍 SkyWalking服务端部署 Skywalking接入微服务 linux windows SkyWalking接入多个微服务 基于Mysql ...

  7. 微服务集成OpenFeign(案例分析 -- 实例业务的模拟)

    案例: 假设某电商平台日常订单业务中,为保证每一笔订单不会超卖,在创建订单前订单服务(order-service)首先去仓储服务(warehouse-service)检查对应商品 skuId(品类编号 ...

  8. 微服务集成cas_Spring Cloud Security集成CAS (单点登录)对微服务认证

    一.前言 由于leader要求在搭好的spring cloud 框架中加入对微服务的认证包括单点登录认证,来确保系统的安全,所以研究了Spring Cloud Security这个组件.在前面搭好的d ...

  9. 微服务集成cas_Spring Cloud(四) Spring Cloud Security集成CAS (单点登录)对微服务认证...

    一.前言 由于leader要求在搭好的spring cloud 框架中加入对微服务的认证包括单点登录认证,来确保系统的安全,所以研究了Spring Cloud Security这个组件.在前面搭好的d ...

最新文章

  1. 理解T-SQL: 存储过程
  2. 最近开发老遇到莫名其妙的问题,dialog自定义大小,setAttributes这个方法没反应是肿么一回事...
  3. Linux下修改root密码以及找回root密码的方法
  4. 层和 native_React-Native与小程序的底层框架比较
  5. 转:shell awk
  6. C++局部变量和全局变量的初始化
  7. MyBatis-Plus_更新操作
  8. linux下编译安装ntfs,linux下编译安装ntfs
  9. c语言 socket 报文解析,C语言实现Socket简单通信
  10. Java Web学习总结(8)——使用Cookie进行会话管理
  11. ostringstream的使用方法
  12. 新题速看~2021阿里、腾讯、字节都在问的SQL数据库笔试题及答案都给你整理好啦
  13. iF.svnadmin安装部署
  14. 基于单片机的数字钟设计
  15. 卡塔编程_量子卡塔教您如何在Q#中进行量子编程
  16. node服务端生成七牛token
  17. Android Platform 3.0 SDK和Eclipse ADT安装记录三
  18. Golang环境变量设置(二)--GOMODULEGOPROXY
  19. 解决THINKBOOK 14安装windows系统不识别固态硬盘的问题
  20. c语言输入字符串 48CT,2004年9月全国计算机等级考试二级C笔试试题含答案

热门文章

  1. 做公众号能不能转载别人文章做文章素材?
  2. 怎么找到公众微信上的视频链接
  3. 如何通过ua区分QQ内置浏览器与QQ浏览器
  4. 南卡和苹果蓝牙耳机哪个好?高颜值且音质好的蓝牙耳机推荐
  5. html 弹出复选框,js点击文本框弹出可选择的checkbox复选框
  6. 最小公共子串——力扣
  7. ABAP 金额小写转大写
  8. ICC Profile
  9. 从零开始自学微信小程序(一)
  10. 后台管理系统【登录页面】