Skywalking8+elasticsearch7链路追踪平台搭建

本文档详细介绍了如何在Linux环境下搭建SkyWalking8与Elasticsearch7的链路追踪平台,包括Java环境配置、Elasticsearch的启动、SkyWalking的安装与配置,以及SkyWalkingAgent在SpringBoot服务中的应用。通过这个系统,可以监控服务性能并追踪请求链路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Skywalking8+elasticsearch7链路追踪平台搭建

环境

JavaJDK11.0.10
skywalking:8.1.0
elasticsearch:7.12.0

安装包下载(所有安装包都包含):链接:https://pan.baidu.com/s/1E7n7HAy_GtH3eou1mxIn7g

提取码:oczp

安装包名:

jdk-11.0.10_linux-x64_bin.tar.gz

elasticsearch-7.12.0-linux-x86_64.tar.gz

apache-skywalking-apm-es7-8.1.0.tar.gz

搭建步骤单个服务为例

第一步,搭建一个 Elasticsearch 服务(默认端口9200)。

第二步,下载SkyWalking 软件包。

第三步,启动SkyWalking OAP 服务(默认端口12800、11800)和SkyWalking UI 服务(默认端口18080)。

第四步,启动系统服务,并配置 SkyWalking Agent。

用户级别环境变量配置

  1. 在linux服务器上新建一个账号,非root账号,配置号用户名密码,把jdk-10.10_linux-x64_bin.tar.gz放到该用户下,进行解压tar -zxvf jdk-10.10_linux-x64_bin.tar.gz,进入目录,使用pwd抓取到当前jdk工作目录
  2. 配置用户级别jdk环境,输入命令vim ~/.bashrc,编辑环境文件,在文件中加入以下命令,保存退出后,使用命令source ~/.bashrc使配置环境变量生效

export  JAVA_HOME=/home/skywalking/jdk-11.0.10

export  JRE_HOME=${JAVA_HOME}/jre

export  PATH=${JAVA_HOME}/bin:$PATH

export  CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

     

 

  1. 使用java -version查看jdk环境是否配置生效

    

 

elasticsearch7服务环境搭建

  1. 下载elasticsearch-7.12.0-linux-x86_64.tar.gz到skywalking用户目录下,进行解压;创建data目录

tar -zxvf elasticsearch-7.2.0-linux-x86_64.tar.gz //解压压缩包

cd elasticsearch-7.2.0 //进入目录

mkdir data //创建data文件夹,保存数据

  1. 修改config/elasticsearch.yml,文件中加上一下命令

cluster.name: apm-application

node.name: node-1

#下面目录为elasticsearch应用目录,后带上logs以及新创建的data目录

path.data: /home/skywalking/elasticsearch-7.12.0/data

path.logs: /home/skywalking/elasticsearch-7.12.0/logs

# ES监听的ip地址

network.host: 0.0.0.0

cluster.initial_master_nodes: ["node-1"]

# 需要开启跨域才能给elasticsearch-head,kibana等连接

http.cors.enabled: true

http.cors.allow-origin: "*"

http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

    

  1. Elasticsearch初始启动会出现报错问题,需要使用root账号登录,进行一些配置项修改;
  2. 针对以下问题,bootstrap check failure [2] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  3. 使用root用户执行命令sysctl -w vm.max_map_count=262144
  4. 针对以下问题,bootstrap check failure [1] of [2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

使用root账号登录,vim /etc/security/limits.conf,在文件末尾加上以下命令

skywalking    soft    nofile    65536

skywalking    hard    nofile    65536

     

  1. 在xshell中重新进行客户端链接(切换到其他用户,在切换回来,或者重新打开一个链接窗口)
  2. 使用./bin/elasticsearch -d命令启动elasticsearch,然后访问当前服务器ip:9200查看是否部署成功

     

SkyWalking安装部署

  1. 下载SkyWalking安装包,放到服务器当前用户(skywalking)下,使用tar -zxvf apache-skywalking-apm-es7-8.0.0.tar.gz进行解压,cd apache-skywalking-apm-es7-8.0.0进入目录
  2. 使用vim config/application.yml进行配置编辑,修改storage配置,如下:

selector: ${SW_STORAGE:elasticsearch7}

clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}

     

  1. 启动OAP

$ bin/oapService.sh

SkyWalking OAP started successfully!

  1. 启动SkyWalking UI,因为SkyWalking UI默认使用端口为8080,所以一般需要进行端口修改配置;修改方式如下:vim webapp/webapp.yml,修改port端口为其他端口如18081
  2. # 修改webapp/webapp.yml
  3. server:
  4. port: 18081

     

 

  1. 使用bin/webappService.sh命令启动SkyWalking UI

$ bin/webappService.sh

SkyWalking Web Application started successfully!

  1. 使用ip:18081进行访问UI,如下:

     

SkyWalking Agent探针添加(以我们springboot服务为例)

  1. 把skywalking目录下的agent探针打包复制到微服务上(以综治采集为例),使用以下命令:

tar -zxvf agent.tar.gz ./agent/   (使用tar命令对整个agent文件夹进行打包成agent.tar.gz包)

scp agent.tar.gz 3080@192.168.1.172:/home/3080/(用此命令把agent.tar.gz传输到综治采集的目录下)

  1. 使用tar -zxvf agent.tar.gz进行解压,cd agent进入工作目录
  2. 修改探针默认配置,config/agent.config,修改一下两个参数配置

agent.service_name=gridcenter // gridcenter为微服务名称,在微服务启动时需要加上参数,供skywalkingUI界面上识别

collector.backend_service=192.168.1.137:11800//ip地址为部署skywalking服务器的ip地址,默认端口是11800,不用修改

 

 

  1. 使用命令启动微服务,如下:

nohup java -javaagent:/home/3080/agent/skywalking-agent.jar -Dskywalking.agent.application_code=gridcenter -jar gridcloud-springboot-gridcenter.jar --spring.profiles.active=test --server.port=3080 --gridcloud.nacos.address=192.168.1.174:8848(此为加上参数后的命令,对比下面没加参数之前的命令)

nohup java -jar gridcloud-springboot-gridcenter.jar --spring.profiles.active=test --server.port=3080 --gridcloud.nacos.address=192.168.1.174:8848

在启动命令上,添加了探针jar包,以及微服务加上了服务名,加上参数如下:

-javaagent:/home/3080/agent/skywalking-agent.jar -Dskywalking.agent.application_code=gridcenter

 

  1. 整套系统部署完成,以下是界面展示,在追踪界面可以看到每个请求的链路响应时间,方便定位到性能问题

### 使用 Docker 安装 Apache SkyWalking 并配置 MySQL 8 存储 #### 自动化安装 Docker 为了确保环境具备运行容器的能力,可以通过官方推荐的方式快速安装 Docker。执行以下命令完成自动化部署: ```bash curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun ``` 此方法能够简化跨平台的一致性问题并加速国内用户的下载速度[^1]。 #### 构建自定义镜像 如果需要定制化的功能或者特定版本的支持,则需创建专属的 Docker 镜像文件 `Dockerfile` 来满足需求。例如基于已有项目源码制作新映像时可采用如下指令: ```bash docker build -t docker_dome:V1.0.1 . ``` 上述操作会依据当前目录下的构建上下文生成指定标签名称的新镜像实例[^2]。 #### 下载与解压二进制包 对于不依赖容器技术的传统场景来说,直接获取官方发布的稳定发行版不失为一种高效途径之一。这里选取支持 Elasticsearch v7Apache SkyWalking 版本号为 8.6.0 进行示范说明: ```bash wget https://archive.apache.org/dist/skywalking/8.6.0/apache-skywalking-apm-es7-8.6.0.tar.gz tar zxvf apache-skywalking-apm-es7-8.6.0.tar.gz mkdir /apps && mv apache-skywalking-apm-bin-es7 /apps/skywalking ``` 以上步骤完成了软件主体部分准备工作的同时还调整了目标路径以便后续管理维护更加便捷[^3]。 然而,在实际生产环境中往往还需要对接关系型数据库来增强数据持久性和查询性能等方面的优势。因此下面重点阐述如何切换至 MySQL 数据库引擎作为主要存储方案的具体实现细节。 --- #### 修改配置以适配 MySQL 后端 默认情况下,Apache SkyWalking 可能使用内存或 ES 等 NoSQL 类型的数据管理系统保存采集到的信息流记录。但当业务规模扩大后可能面临成本控制压力以及复杂报表统计分析的需求增长等情况,此时引入传统的关系型数据库就显得尤为重要了。 ##### 步骤一:准备 MySQL 实例 确认已存在可用状态良好的 MySQL Server (建议选用最新长期支持 LTS 版本),并通过 SQL 命令初始化必要的表结构资源对象。假设我们已经拥有了名为 `skywalking_db` 的专用模式空间及其关联账户权限设定完毕之后继续往下推进流程。 ##### 步骤二:编辑 application.yml 文件 进入 `/apps/skywalking/config/application.yml` 路径定位相关参数项位置修改成如下所示内容片段形式表示启用 OAP server 对接 mysql 功能模块开关选项开启状态: ```yaml storage: selector: ${SW_STORAGE:mysql} mysql: host: "${SW_MYSQL_HOST:localhost}" port: "${SW_MYSQL_PORT:3306}" user: "${SW_MYSQL_USER:root}" password: "${SW_MYSQL_PASSWORD:password}" database_name: "${SW_MYSQL_DB_NAME:skywalking}" ``` 此处需要注意替换变量值为自己真实有效的连接属性信息匹配对应字段含义描述准确无误即可正常工作运转起来[^4]。 最后重启服务验证整个链路畅通无阻即告成功! --- ### 总结 综上所述,通过组合运用多种工具和技术手段实现了从零开始搭建一套完整的分布式追踪解决方案全过程展示分享给大家参考学习借鉴之用。希望对你有所帮助解答疑惑之处有所启发引导作用发挥积极作用效果体现出来吧!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值