天天看點

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就報錯,後來找了很多部落格,才發現是版本不一緻造成的,真的就很氣人。記錄下來,希望大家引以為戒!!!!

繼續閱讀