千家信息网

搭建 SkyWalking 服务(For ElasticSearch 7)

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,[TOC]搭建 SkyWalking 服务(For ElasticSearch 7)关于SkyWalking的基础使用参考:基于 SkyWalking 实现服务链路追踪官方文档:SkyWalking
千家信息网最后更新 2025年02月23日搭建 SkyWalking 服务(For ElasticSearch 7)

[TOC]

搭建 SkyWalking 服务(For ElasticSearch 7)

关于SkyWalking的基础使用参考:

  • 基于 SkyWalking 实现服务链路追踪

官方文档:

  • SkyWalking 文档中文版(社区提供)
  • Apache SkyWalking 官方文档

下载压缩包

首先我们需要获取到SkyWalking的下载地址,官方下载地址如下:

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

这里我选择当前最新的6.6.0版本的二进制包,由于一会需要对接的es服务版本为7.x,所以这里得选择for ElasticSearch 7:

复制下载地址到服务器上进行下载并解压,具体步骤如下:

[root@localhost ~]# cd /usr/local/src[root@localhost /usr/local/src]# wget http://mirror.bit.edu.cn/apache/skywalking/6.6.0/apache-skywalking-apm-es7-6.6.0.tar.gz[root@localhost /usr/local/src]# mkdir ../skywalking && tar -zxvf apache-skywalking-apm-es7-6.6.0.tar.gz -C ../skywalking --strip-components 1[root@localhost /usr/local/src]# cd ../skywalking/[root@localhost /usr/local/skywalking]# ll -rh  # 解压后的目录文件如下total 88Kdrwxr-xr-x 2 root root   53 Dec 28 18:22 webapp-rw-rw-r-- 1 1001 1002 2.0K Dec 24 14:10 README.txtdrwxrwxr-x 2 1001 1002  12K Dec 24 14:28 oap-libs-rwxrwxr-x 1 1001 1002  32K Dec 24 14:10 NOTICEdrwxrwxr-x 3 1001 1002 4.0K Dec 28 18:22 licenses-rwxrwxr-x 1 1001 1002  29K Dec 24 14:10 LICENSEdrwxr-xr-x 2 root root  221 Dec 28 18:22 configdrwxr-xr-x 2 root root  241 Dec 28 18:22 bindrwxrwxr-x 8 1001 1002  143 Dec 24 14:21 agent[root@localhost /usr/local/skywalking]# 

配置

SkyWalking 的组成在逻辑上分为四部分:探针、平台后端、存储和用户界面。其中平台后端服务是用于收集agent上传的监控数据,其核心配置文件位于:config/application.yml

如果没有任何要求,基本上是无需修改配置就可以直接启动 SkyWalking 服务。但通常线上都对监控数据有持久化需求,而SkyWalking 默认使用的是H2这种内存数据库,不具有持久存储的特性。所以我们需要修改其存储配置,接入elasticsearch服务作为存储组件。

首先将默认的H2数据库配置给注释掉:

[root@ip-236-048 skywalking]# vim config/application.yml#  h3:#    driver: ${SW_STORAGE_H2_DRIVER:org.h3.jdbcx.JdbcDataSource}#    url: ${SW_STORAGE_H2_URL:jdbc:h3:mem:skywalking-oap-db}#    user: ${SW_STORAGE_H2_USER:sa}#    metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}

然后将elasticsearch7配置的注释解开,并修改如下:

storage:  elasticsearch7:    # nameSpace: ${SW_NAMESPACE:""}    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.3.10:9200}    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.html    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000} # Execute the bulk every 1000 requests    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests    resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}    metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}    segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}    advanced: ${SW_STORAGE_ES_ADVANCED:""}

另外一个常见需求就是修改监听的ip和端口号,skywalking默认12800为rest api通信端口,默认11800为gRPC api通信端口。这些都可以在配置文件中进行修改,而我这里保持默认:

core:  default:    # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate    # Receiver: Receive agent data, Level 1 aggregate    # Aggregator: Level 2 aggregate    role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator    restHost: ${SW_CORE_REST_HOST:0.0.0.0}    restPort: ${SW_CORE_REST_PORT:12800}    restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}    gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}    gRPCPort: ${SW_CORE_GRPC_PORT:11800}
  • 关于其他的配置项详见官方文档

运行

完成以上配置后,运行bin目录下的startup.sh脚本即可启动skywalking服务:

[root@localhost /usr/local/skywalking]# bin/startup.shSkyWalking OAP started successfully!SkyWalking Web Application started successfully![root@localhost /usr/local/skywalking]#

SkyWalking控制台服务默认监听8080端口,若有防火墙需要开放该端口:

[root@localhost /usr/local/skywalking]# firewall-cmd --zone=public --add-port=8080/tcp --permanentsuccess[root@localhost /usr/local/skywalking]# firewall-cmd --reloadsuccess[root@localhost /usr/local/skywalking]#

若希望允许远程传输,则还需要开放11800(gRPC)和12800(rest)端口,远程agent将通过该端口传输收集的数据:

[root@localhost /usr/local/skywalking]# firewall-cmd --zone=public --add-port=11800/tcp --permanentsuccess[root@localhost /usr/local/skywalking]# firewall-cmd --zone=public --add-port=12800/tcp --permanentsuccess[root@localhost /usr/local/skywalking]# firewall-cmd --reloadsuccess[root@localhost /usr/local/skywalking]#

正常启动成功后,使用浏览器访问主页如下:

  • Tips:如果skywalking是初次连接elasticsearch服务,启动会比较慢,因为skywalking需要向es服务创建很多的index。所以在未创建完成之前,访问这个页面会是空白的。此时可以通过查看日志来判断启动是否完成,日志路径:logs/skywalking-oap-server.log

使用

接下为项目集成java agent探针,看看skywalking是否能正常监控到数据。首先创建两个简单的Spring Cloud项目,分别是consumer和producer:

这两个项目中均包含基础的组件依赖:nacos-discovery、openfeign及web。因为SkyWalking是通过Java agent这种语言探针的方式进行数据的收集和上传,所以不需要像zipkin那样添加额外的依赖和配置。

consumer将调用producer提供的接口,以达到后续在SkyWalking上展示一个简单的调用链路效果。故在producer中编写一个接口,代码如下:

@Slf4j@RestController@RequestMapping("/producer")public class ProducerController {    @GetMapping    public String producer() {        log.info("received a request");        return "this message from producer";    }}

而consumer也有一个接口,该接口内则是调用了producer的接口。代码如下:

@Slf4j@RestController@RequiredArgsConstructor@RequestMapping("/consumer")public class ConsumerController {    private final ProducerClient producerClient;    @GetMapping    public String consumer() {        log.info("consumer something");        // 通过feign调用        String result = producerClient.producer();        return "consumer: " + result;    }}

ProducerClient代码如下:

@FeignClient("producer")public interface ProducerClient {    @GetMapping("/producer")    String producer();}

由于本地调试需要使用到SkyWalking提供的Java Agent jar包,所以得到之前的下载页面中下载对应平台的压缩包:

解压后的目录文件内容如下:

我们主要是使用到agent目录下的jar包:

为了方便起见,这里就不单独为每个服务拷贝一个agent目录了。通过添加JVM启动参数的方式来覆写配置项:

# 指定java agent的jar包路径-javaagent:E:\skywalking\apache-skywalking-apm-bin\agent\skywalking-agent.jar# 指定skywalking agent的服务名称,通常对应项目的服务名称-Dskywalking.agent.service_name=consumer# 指定skywalking后端平台收集服务的连接ip及端口号-Dskywalking.collector.backend_service=192.168.10.6:11800

完成以上步骤后,在IDEA中引导类的配置界面里设置JVM启动参数。如下:

  • producer服务也是按照上图一样的配置,改一下服务名称即可

分别启动两个项目,然后访问/consumer接口:

此时,到SkyWalking的监控页面上,进入"追踪"页面,并选择正确的时间范围,就可以看到该接口的链路追踪信息:


其他功能

服务拓扑图:

服务监控:

服务实例监控:

端点监控:

如果项目正确集成agent成功后,却依旧发现监控页面上没有数据,日志里又没有错误信息的话,很有可能是时间范围没有选择正确:

服务 配置 数据 监控 接口 端口 项目 目录 页面 官方 文件 文档 存储 选择 两个 代码 名称 地址 平台 探针 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 开源服务器监控 滨州互联网养老软件开发专业制作 ibm服务器可以加内存条吗 战地2现在还有多少服务器 外部排序数据库 网络安全工程师报考什么学校 电脑能否同步gps数据库 上网不安全连接到服务器 高校网络安全建设工作汇报材料 两个服务器播放音频同步 合肥电信服务器被攻击 广西网络技术分类工程 浦东新区网络技术开发介绍 邯郸市有哪些软件开发公司 树莓派怎么使用数据库 金融软件开发公司招聘语 云数据库运用 动森可以切换不同的服务器玩吗 到无锡找软件开发工作 网络安全对我们来说 转移到互联网的科技股 天津服务器搬家选哪家云服务器 jdbc技术数据库初始化 网络安全月教育内容 用友u8从哪打开数据库 服务器环境安全 有网络安全验证的协议族 网络安全边界和主动防御的区别 湖北省网络安全事件应急预案 上海志行合力网络技术怎么样
0