搭建SkyWalking服務(wù)(ForElasticSearch7)

[TOC]

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、合作網(wǎng)站維護(hù)、網(wǎng)站推廣。

搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

關(guān)于SkyWalking的基礎(chǔ)使用參考:

  • 基于 SkyWalking 實(shí)現(xiàn)服務(wù)鏈路追蹤

官方文檔:

  • SkyWalking 文檔中文版(社區(qū)提供)
  • Apache SkyWalking 官方文檔

下載壓縮包

首先我們需要獲取到SkyWalking的下載地址,官方下載地址如下:

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

這里我選擇當(dāng)前最新的6.6.0版本的二進(jìn)制包,由于一會需要對接的es服務(wù)版本為7.x,所以這里得選擇for ElasticSearch 7:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

復(fù)制下載地址到服務(wù)器上進(jìn)行下載并解壓,具體步驟如下:

[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 88K
drwxr-xr-x 2 root root   53 Dec 28 18:22 webapp
-rw-rw-r-- 1 1001 1002 2.0K Dec 24 14:10 README.txt
drwxrwxr-x 2 1001 1002  12K Dec 24 14:28 oap-libs
-rwxrwxr-x 1 1001 1002  32K Dec 24 14:10 NOTICE
drwxrwxr-x 3 1001 1002 4.0K Dec 28 18:22 licenses
-rwxrwxr-x 1 1001 1002  29K Dec 24 14:10 LICENSE
drwxr-xr-x 2 root root  221 Dec 28 18:22 config
drwxr-xr-x 2 root root  241 Dec 28 18:22 bin
drwxrwxr-x 8 1001 1002  143 Dec 24 14:21 agent
[root@localhost /usr/local/skywalking]# 

配置

SkyWalking 的組成在邏輯上分為四部分:探針、平臺后端、存儲和用戶界面。其中平臺后端服務(wù)是用于收集agent上傳的監(jiān)控?cái)?shù)據(jù),其核心配置文件位于:config/application.yml

如果沒有任何要求,基本上是無需修改配置就可以直接啟動 SkyWalking 服務(wù)。但通常線上都對監(jiān)控?cái)?shù)據(jù)有持久化需求,而SkyWalking 默認(rèn)使用的是H2這種內(nèi)存數(shù)據(jù)庫,不具有持久存儲的特性。所以我們需要修改其存儲配置,接入elasticsearch服務(wù)作為存儲組件。

首先將默認(rèn)的H2數(shù)據(jù)庫配置給注釋掉:

[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:""}

另外一個常見需求就是修改監(jiān)聽的ip和端口號,skywalking默認(rèn)12800為rest api通信端口,默認(rèn)11800為gRPC api通信端口。這些都可以在配置文件中進(jìn)行修改,而我這里保持默認(rèn):

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}
  • 關(guān)于其他的配置項(xiàng)詳見官方文檔

運(yùn)行

完成以上配置后,運(yùn)行bin目錄下的startup.sh腳本即可啟動skywalking服務(wù):

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

SkyWalking控制臺服務(wù)默認(rèn)監(jiān)聽8080端口,若有防火墻需要開放該端口:

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

若希望允許遠(yuǎn)程傳輸,則還需要開放11800(gRPC)和12800(rest)端口,遠(yuǎn)程agent將通過該端口傳輸收集的數(shù)據(jù):

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

正常啟動成功后,使用瀏覽器訪問主頁如下:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

  • Tips:如果skywalking是初次連接elasticsearch服務(wù),啟動會比較慢,因?yàn)閟kywalking需要向es服務(wù)創(chuàng)建很多的index。所以在未創(chuàng)建完成之前,訪問這個頁面會是空白的。此時可以通過查看日志來判斷啟動是否完成,日志路徑:logs/skywalking-oap-server.log

使用

接下為項(xiàng)目集成java agent探針,看看skywalking是否能正常監(jiān)控到數(shù)據(jù)。首先創(chuàng)建兩個簡單的Spring Cloud項(xiàng)目,分別是consumer和producer:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

這兩個項(xiàng)目中均包含基礎(chǔ)的組件依賴:nacos-discovery、openfeign及web。因?yàn)镾kyWalking是通過Java agent這種語言探針的方式進(jìn)行數(shù)據(jù)的收集和上傳,所以不需要像zipkin那樣添加額外的依賴和配置。

consumer將調(diào)用producer提供的接口,以達(dá)到后續(xù)在SkyWalking上展示一個簡單的調(diào)用鏈路效果。故在producer中編寫一個接口,代碼如下:

@Slf4j
@RestController
@RequestMapping("/producer")
public class ProducerController {

    @GetMapping
    public String producer() {
        log.info("received a request");
        return "this message from producer";
    }
}

而consumer也有一個接口,該接口內(nèi)則是調(diào)用了producer的接口。代碼如下:

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/consumer")
public class ConsumerController {

    private final ProducerClient producerClient;

    @GetMapping
    public String consumer() {
        log.info("consumer something");
        // 通過feign調(diào)用
        String result = producerClient.producer();
        return "consumer: " + result;
    }
}

ProducerClient代碼如下:

@FeignClient("producer")
public interface ProducerClient {

    @GetMapping("/producer")
    String producer();
}

由于本地調(diào)試需要使用到SkyWalking提供的Java Agent jar包,所以得到之前的下載頁面中下載對應(yīng)平臺的壓縮包:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

解壓后的目錄文件內(nèi)容如下:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

我們主要是使用到agent目錄下的jar包:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

為了方便起見,這里就不單獨(dú)為每個服務(wù)拷貝一個agent目錄了。通過添加JVM啟動參數(shù)的方式來覆寫配置項(xiàng):

# 指定java agent的jar包路徑
-javaagent:E:\skywalking\apache-skywalking-apm-bin\agent\skywalking-agent.jar
# 指定skywalking agent的服務(wù)名稱,通常對應(yīng)項(xiàng)目的服務(wù)名稱
-Dskywalking.agent.service_name=consumer
# 指定skywalking后端平臺收集服務(wù)的連接ip及端口號
-Dskywalking.collector.backend_service=192.168.10.6:11800

完成以上步驟后,在IDEA中引導(dǎo)類的配置界面里設(shè)置JVM啟動參數(shù)。如下:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

  • producer服務(wù)也是按照上圖一樣的配置,改一下服務(wù)名稱即可

分別啟動兩個項(xiàng)目,然后訪問/consumer接口:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

此時,到SkyWalking的監(jiān)控頁面上,進(jìn)入“追蹤”頁面,并選擇正確的時間范圍,就可以看到該接口的鏈路追蹤信息:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)


其他功能

服務(wù)拓?fù)鋱D:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

服務(wù)監(jiān)控:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

服務(wù)實(shí)例監(jiān)控:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

端點(diǎn)監(jiān)控:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

如果項(xiàng)目正確集成agent成功后,卻依舊發(fā)現(xiàn)監(jiān)控頁面上沒有數(shù)據(jù),日志里又沒有錯誤信息的話,很有可能是時間范圍沒有選擇正確:
搭建 SkyWalking 服務(wù)(For ElasticSearch 7)

新聞標(biāo)題:搭建SkyWalking服務(wù)(ForElasticSearch7)
文章URL:http://muchs.cn/article40/jehdeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、微信公眾號App設(shè)計(jì)、軟件開發(fā)、網(wǎng)站營銷、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)