天天看点

skywalking elasticsearch

skywalking是一个分布式链路追踪系统,上一篇文章对比了一下skywalking与zipkin,并对skywalking做了一个简单的使用。

skywalking默认是基于H2数据库的,H2数据库是一个纯java实现的关系型数据库,它是一个开源的嵌入式数据库引擎。可以和应用程序打包一起发布,很方便。

在skywalking中h2数据库是基于内存的,所以一旦skywalking重启,那么之前保存的数据就全都没有了。而且如果数据过多的话,用默认的H2数据库性能也不是很好。skywalking可以支持mysql、es等,这篇文章,主要是记录一下skywalking与elasticsearch的整合与使用。

本次是针对windows下的使用

一 elasticsearch的下载与配置

1.1 下载elasticsearch

elasticsearch官网下载的话,会比较慢,我是在一个博主那看到一个国内镜像地址,下载会快很多。

地址:https://mirrors.huaweicloud.com/elasticsearch/7.0.0

我下载的是es7这个版本,因为后面要和skywalking的版本对应上。

1.2 es的配置

(1)解压es后,打开config下面的elasticsearch.yml,在配置文件下面添加如下配置:

cluster.name: skywalkinges # 这个名字随便取,但是后面要和skywalking中的名字一致
node.name: node-1   # 节点名称也可以随便取
network.host: 0.0.0.0
discovery.seed_hosts: ["127.0.0.1"] # 一定要配置,不然找不到主节点
cluster.initial_master_nodes: ["node-1"] # 一定要配置,不然找不到主节点,这个名字与上面的node.name一致
           

(2)至此,es的配置已经完成,现在启动它就可以了。

在/bin下面找到elasticsearch.bat。双击就可以启动了

(3)浏览器上输入 http://localhost:9200看看是否启动成功

二 skywalking的下载与配置

2.1 下载

下载skywalking最重要的就是要和es的版本对应上,我因为这个问题,处理了很久,最后换了版本就解决了。

(1)打开skywalking官网

skywalking elasticsearch

下载skywalking时,不是版本越新越好,进入它的以前的版本,下载与es7对应的skywalking版本。也可以直接使用 https://archive.apache.org/dist/skywalking/ 地址进入下载页面

skywalking elasticsearch

版本一定要对应!!!

(2)解压下载下来的skywalking,打开config下面的application.yml文件

将默认的H2数据源注释掉,将elasticsearch7配置放开,配置如下

storage:
#  elasticsearch:
#    nameSpace: ${SW_NAMESPACE:""}
#    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost: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}
  elasticsearch7:
    nameSpace: ${SW_NAMESPACE:"skywalkinges"} # 这个名字与刚刚elasticsearch中配置的cluster.name一致
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost: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}
#  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:
#    properties:
#      jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
#      dataSource.user: ${SW_DATA_SOURCE_USER:root}
#      dataSource.password: ${SW_DATA_SOURCE_PASSWORD:[email protected]}
#      dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
#      dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
#      dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
#      dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
#    metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
           

(3)启动skywalking服务端

打开/bin文件夹,双击oapService.bat,启动服务端

(4)启动skywalking ui

打开/bin文件夹,双击webappService.bat,启动skywalking的ui页面

(5)浏览器输入localhost:8080 出现如下页面即启动成功

skywalking elasticsearch

注意:8080这个端口号是可以修改的,地址:/webapp文件夹下,webapp.yml中

server:
  port: 8080   # 这就是浏览器访问时的端口号

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by ,
    listOfServers: 127.0.0.1:12800
           

三 配置idea

(1)点击idea窗口 run -> edit configuration,打开配置页面,在VM options中进行配置

skywalking elasticsearch
  • -javaagent 是要指向skywalking下的agent绝对路径,
  • -Dskywalking.agent.service_name 这个名字可以随便取,他就是你最后显示在skywalking中的服务名字
  • -Dskywalking.collector.backend_service 这个是skywalking服务地址

    (2) 配置好后,点击apply 然后运行该服务,服务启动完毕,调用服务中的接口,最后在skywalking ui中可以看到效果

    skywalking elasticsearch
  • 如果没有效果,可以点击右上角的刷新
  • 如果是一个调用链的话,那么这条调用链上面的服务,都需要配置skywalking的agent。

至此,skywalking与elasticsearch的整合就完毕了,这个过程中,我一开始尝试了很久,但是一启动skywalking,elasticsearch就报错,后来找了很多博客,才发现是版本不一致造成的,真的就很气人。记录下来,希望大家引以为戒!!!!

继续阅读