Centos 7.4搭建es7.12.0+Skywalking7.8.5


Skywalking整體架構圖和分布式追蹤系統原理:https://blog.csdn.net/weixin_39866487/article/details/111581322

 

 

軟件包版本
1、elasticsearch-7.12.0.tar.gz,下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-linux-x86_64.tar.gz
2、apache-skywalking-apm-es7-8.5.0.tar.gz,下載地址:https://www.apache.org/dyn/closer.cgi/skywalking/8.5.0/apache-skywalking-apm-es7-8.5.0.tar.gz


將以上軟件包上傳至服務器 /usr/local/skywalking 路徑下(如需安裝其他版本請注意版本對應)

[root@skywalking skywalking]# pwd
/usr/local/skywalking
[root@skywalking skywalking]# ll
-rw-r--r--.  1 root root 184816700 4月  30 16:59 apache-skywalking-apm-es7-8.5.0.tar.gz
-rw-r--r--.  1 root root 327497331 4月  30 15:03 elasticsearch-7.12.0-linux-x86_64.tar.gz
[root@skywalking skywalking]#

安裝JDK

[root@skywalking ~]# yum -y install java-1.8.0-openjdk-devel

一、安裝ES

1、創建安裝路徑

[root@skywalking skywalking]# mkdir /usr/local/skywalking

2、上傳安裝包並解壓安裝包

[root@skywalking skywalking]# tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz
[root@skywalking skywalking]# ll
-rw-r--r--.  1 root root 184816700 4月  30 16:59 apache-skywalking-apm-es7-8.5.0.tar.gz
drwxr-xr-x. 10 root root       167 4月  30 15:10 elasticsearch-7.12.0
-rw-r--r--.  1 root root 327497331 4月  30 15:03 elasticsearch-7.12.0-linux-x86_64.tar.gz
[root@skywalking skywalking]# cd elasticsearch-7.12.0

3、修改如下兩個配置

[root@skywalking skywalking]# vi /etc/security/limits.conf     修改后自動生效
末尾新增下面四行:
es soft nofile 65536
es hard nofile 65536
es soft nproc 4096
es hard nproc 4096
[root@skywalking skywalking]# vi /etc/sysctl.conf
末尾新增下面一行:
vm.max_map_count=262144

[root@skywalking skywalking]# sysctl -p        #修改后執行sysctl -p生效

 

4、創建獨立用戶與組(es默認不允許root用戶登錄)

(1)創建用戶組
[root@skywalking skywalking]# groupadd es
(2)創建用戶es,並添加至用戶組es
[root@skywalking skywalking]# useradd -g es es
(3)設置密碼
[root@skywalking skywalking]# passwd es
New password:123456
Retype new password:123456

5、更改軟件包屬主屬組

[root@skywalking skywalking]# chown -R es:es /usr/local/skywalking/elasticsearch-7.12.0
[root@skywalking skywalking]# ll
-rw-r--r--.  1 root root 184816700 4月  30 16:59 apache-skywalking-apm-es7-8.5.0.tar.gz
drwxr-xr-x. 10 es   es         167 4月  30 15:10 elasticsearch-7.12.0
-rw-r--r--.  1 root root 327497331 4月  30 15:03 elasticsearch-7.12.0-linux-x86_64.tar.gz
[root@skywalking skywalking]#

6、單節點配置ip

[root@skywalking config]# vim /usr/local/skywalking/elasticsearch-7.12.0/config/elasticsearch.yml

修改如下7個配置:
cluster.name: CollectorDBCluster

path.data: /data/elasticsearch/data

path.logs: /data/elasticsearch/logs

network.host: 10.153.61.71

http.port: 9200

node.name: node-1

cluster.initial_master_nodes: ["node-1"]

注意:一定要將elasticsearch.yml中的#cluster.initial_master_nodes: ["node-1","node-2"]注釋去掉,並將“node-2”去掉
#創建數據存儲目錄和日志存儲目錄 [root@skywalking elasticsearch
-7.12.0]# mkdir -p /data/elasticsearch/data [root@skywalking elasticsearch-7.12.0]# mkdir -p /data/elasticsearch/logs #更改屬主和屬組 [root@skywalking elasticsearch-7.12.0]# chown -R es:es /data/elasticsearch 各配置項含義: cluster.name 集群名稱,各節點配成相同的集群名稱。 node.name 節點名稱,各節點配置不同。 node.master 指示某個節點是否符合成為主節點的條件。 node.data 指示節點是否為數據節點。數據節點包含並管理索引的一部分。 path.data 數據存儲目錄。 path.logs 日志存儲目錄。 bootstrap.memory_lock 內存鎖定,是否禁用交換。 bootstrap.system_call_filter 系統調用過濾器。 network.host 綁定節點IP。 http.port 端口。 discovery.zen.ping.unicast.hosts 提供其他 Elasticsearch 服務節點的單點廣播發現功能。 discovery.zen.minimum_master_nodes 集群中可工作的具有Master節點資格的最小數量,官方的推薦值是(N/2)+1,其中N是具有master資格的節點的數量。 discovery.zen.ping_timeout 節點在發現過程中的等待時間。 discovery.zen.fd.ping_retries 節點發現重試次數。 http.cors.enabled 是否允許跨源 REST 請求,用於允許head插件訪問ES。 http.cors.allow-origin 允許的源地址。

7、切換至elasticsearch用戶

[root@skywalking elasticsearch-7.12.0]# su es

進入bin目錄啟動服務
[es@skywalking elasticsearch-7.12.0]$ cd bin/

后台啟動
[es@skywalking bin]$ ./elasticsearch –d

查看啟動日志
[es@skywalking bin]$  cat ../logs/elasticsearch.log

8、訪問頁面會顯示版本號和一些配置信息

curl http://ip:9200

{
    "name": "node-1",
    "cluster_name": "CollectorDBCluster",
    "cluster_uuid": "aqr2eeJ2RUCrI2utHS9HNA",
    "version": {
        "number": "7.12.0",
        "build_flavor": "default",
        "build_type": "tar",
        "build_hash": "78722783c38caa25a70982b5b042074cde5d3b3a",
        "build_date": "2021-03-18T06:17:15.410153305Z",
        "build_snapshot": false,
        "lucene_version": "8.8.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

 

啟動異常及解決方法
  (1)Caused by: java.lang.RuntimeException: can not run elasticsearch as root
  解決之道:
  su es
  然后,再./elasticsearch


  (2)Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file logs/gc.log due to Permission denied
     
     Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /usr/local/es/elasticsearch-6.3.2/config/elasticsearch.keystore
     Likely root cause: java.nio.file.AccessDeniedException: /usr/local/es/elasticsearch-6.3.2/config/elasticsearch.keystore
     因為第一次啟動不小心用了root啟動,導致用root生成了對應的文件。切換es賬號之后,沒有對應文件的權限導致,刪除相關的東西即可。
     
  解決之道:
  su root
  rm -rf /usr/local/es/elasticsearch-6.3.2/config/elasticsearch.keystore
 
  su es
  cd /usr/local/es/elasticsearch-6.3.2/bin/
  ./elasticsearch
 
  (3)2019-05-30 23:17:54,794 main ERROR Unable to locate appender "deprecation_rolling" for logger config "org.elasticsearch.deprecation"
     [2019-05-30T23:17:54,954][WARN ][o.e.b.JNANatives         ] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory
     [2019-05-30T23:17:54,955][WARN ][o.e.b.JNANatives         ] This can result in part of the JVM being swapped out.
     [2019-05-30T23:17:54,955][WARN ][o.e.b.JNANatives         ] Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536
     [2019-05-30T23:17:54,956][WARN ][o.e.b.JNANatives         ] These can be adjusted by modifying /etc/security/limits.conf, for example:
             # allow user 'es' mlockall
             es soft memlock unlimited
             es hard memlock unlimited
   解決之道:
   vim /etc/security/limits.conf
   # 在末尾添加如下內容:
   * soft nofile 65536
   * hard nofile 131072
   es soft memlock unlimited
   es hard memlock unlimited
 
  (4)ERROR: [1] bootstrap checks failed
     [1]: memory locking requested for elasticsearch process but memory is not locked
    (5) [es@localhost bin]$ ./elasticsearch
已殺死
原因:內存太小,將虛擬機的內存調到10G

(6)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

復制代碼
切換到root用戶
執行命令:
sysctl -w vm.max_map_count=262144
查看結果:
sysctl -a|grep vm.max_map_count
顯示:
vm.max_map_count = 262144
復制代碼

或者

在   /etc/sysctl.conf文件最后添加一行

vm.max_map_count=262144

#並執行命令: sysctl -p

即可永久修改

(7)ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
修改
elasticsearch.yml
取消注釋保留一個節點
cluster.initial_master_nodes: ["node-1"]

 
  su es
  cd /usr/local/es/elasticsearch-6.3.2/bin/
  ./elasticsearch
 
  啟動成功!!!
 
(8)、檢查9200端口是否對外開放
  檢查9200端口是否開放:netstat -ntap | grep 9200
  按照進程號殺掉:kill -9 pid
  查看已經開放的端口:firewall-cmd --list-ports
  開啟端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent
  重新載入防火牆的配置:firewall-cmd --reload
  重啟:
 su es
 cd /usr/local/es/elasticsearch-6.3.2/bin/
 ./elasticsearch -d
 
 另一台電腦瀏覽器訪問http://10.200.110.116:9200/,成功,如下所示:

{
    "name": "node-1",
    "cluster_name": "CollectorDBCluster",
    "cluster_uuid": "aqr2eeJ2RUCrI2utHS9HNA",
    "version": {
        "number": "7.12.0",
        "build_flavor": "default",
        "build_type": "tar",
        "build_hash": "78722783c38caa25a70982b5b042074cde5d3b3a",
        "build_date": "2021-03-18T06:17:15.410153305Z",
        "build_snapshot": false,
        "lucene_version": "8.8.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

長時間運行后ES分片默認為1000,達到最大值后會報錯,請修改配置

報錯如下:

 

 修改配置文件

新增如下行
# vim elasticsearch.yml
cluster.max_shards_per_node: 999999

 

二、安裝Skywalking服務

1、解壓安裝包

[es@skywalking skywalking]$ pwd
/usr/local/skywalking
[es@skywalking skywalking]$ tar -zxvf apache-skywalking-apm-es7-8.5.0.tar.gz
[es@skywalking skywalking]$ ll
drwxrwxr-x. 11 1001 1002       185 4月  30 17:05 apache-skywalking-apm-bin-es7
-rw-r--r--.  1 root root 184816700 4月  30 16:59 apache-skywalking-apm-es7-8.5.0.tar.gz
drwxr-xr-x. 10 es   es         167 4月  30 15:10 elasticsearch-7.12.0
-rw-r--r--.  1 root root 327497331 4月  30 15:03 elasticsearch-7.12.0-linux-x86_64.tar.gz
[es@skywalking skywalking]$

2、配置(說明 SkyWalking服務默認使用H2存儲,不具有持久存儲的特性,所以需要將存儲組件修改為elasticsearch。

[root@skywalking config]# vim /usr/local/skywalking/apache-skywalking-apm-bin-es7/config/application.yml
修改配置如下:
#注釋h2的selector,添加elasticsearch7,注意elasticsearch7中localhost改為ip地址
storage: 
#selector: ${SW_STORAGE:h2}
selector: ${SW_STORAGE:elasticsearch7}

  elasticsearch7:
  nameSpace: ${SW_NAMESPACE:"skywalking-index"}
  clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:10.153.61.71:9200}
  protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
  trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
  trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}

參數 說明
selector 存儲選擇器。本文設置為elasticsearch7。
nameSpace 命名空間。Elasticsearch實例中,所有索引的命名會使用此參數值作為前綴。
clusterNodes 指定Elasticsearch實例的訪問地址。由於實例與SkyWalking不在同一專有網絡VPC(Virtual Private Cloud)下,因此要使用公網訪問地址,獲取方式請參見查看實例的基本信息
user Elasticsearch實例的訪問用戶名,默認為elastic。
password 對應用戶的密碼。elastic用戶的密碼在創建實例時指定,如果忘記可重置。重置密碼的注意事項和操作步驟,請參見重置實例訪問密碼

/usr/local/skywalking/apache-skywalking-apm-bin-es7/webapp/webapp.yml 保持默認配置即可,如果8080端口被其他服務占用,可以修改8080端口為18080

[root@skywalking webapp]# cat /usr/local/skywalking/apache-skywalking-apm-bin-es7/webapp/webapp.yml
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

server:
  port: 18080

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

[root@skywalking webapp]#

3、開放端口並啟動服務:

[root@skywalking webapp]# firewall-cmd --list-ports
[root@skywalking webapp]# firewall-cmd --zone=public --add-port=18080/tcp --permanent
[root@skywalking webapp]# firewall-cmd --zone=public --add-port=11800/tcp --permanent
[root@skywalking webapp]# firewall-cmd --zone=public --add-port=12800/tcp --permanent
[root@skywalking webapp]# firewall-cmd --reload
啟動:
[root@localhost bin]# sh startup.sh
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!
[root@localhost bin]#

#啟動sky前要確保es已經正常運行
#jps查看進程,skywalking,有兩個進程skywalking-webapp.jar和OAPServerStartUp

 [root@skywalking webapp]# jps
 26662 skywalking-webapp.jar
 46391 Jps
 33080 OAPServerStartUp
 32379 Elasticsearch
 [root@skywalking webapp]#

瀏覽器訪問

 

4、agent客戶端安裝

實際應用的時候,將agent這個目錄拷貝到各自對應的虛擬機指定的目錄里。

agent目錄結構

目錄信息如下:

├── activations
├── config
│   └── agent.config
├── logs
│   └── skywalking-api.log
├── optional-plugins
├── plugins
└── skywalking-agent.jar

其中,config/agent.config是最重要的,需要修改的核心參數如下所示
# 應用名稱,當前代理的應用名稱,用於UI界面分類和展示
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# 收集器的地址,這個根據實際情況設置,上述`Collector`在哪台服務器啟動,ip就設置為多少。
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:10.10.10.1:11800}

開放11800、12800端口:
firewall-cmd --list-ports
firewall-cmd --zone=public --add-port=11800/tcp --permanent
firewall-cmd --reload

agent和oap在不同服務器上時,需配置agent/config/agent.config配置文件,在文件末尾添加如下配置信息,注意skywalking的log通信用的grpc

plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:10.10.10.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}

各參數說明

 

當虛擬機中只有單個java進程時,可以使用如下命令進行啟動agent(前提已經將skywalking中agent目錄拷貝至虛擬機)

[root@localhost ~]# java -javaagent:/data/agent/skywalking-agent.jar -jar user.jar

#正常啟動后訪問sky web頁面
#拓撲圖只有服務之間相互訪問、調用后會產生,如果沒有生成拓撲圖可以打開java應用訪問幾次

 當虛擬機中只有多個java進程時,可以使用如下命令進行啟動agent

[root@localhost ~]# java -javaagent:/data/agent/skywalking-agent.jar=agent.service_name=${s} -jar ${s}.jar

## ${s}為定義的微服務變量
  • agent.service_name:客戶端服務名,在apm系統中顯示的服務名稱。
  • collector.backend_service:SW上傳的服務地址。

5、附:啟動/關閉命令:

# 啟動ES
su es
cd /usr/local/es/elasticsearch-6.3.2/bin/
./elasticsearch -d

# 關閉ES
netstat -ntap | grep 9200
kill -9 pid

# 啟動kibana
su root
cd /usr/local/kibana/kibana-6.3.2-linux-x86_64/bin/
nohup ./kibana > /dev/null 2>&1 &

# 關閉kinana
kill -9 `cat /var/run/kibana.pid`

# 啟動skywalking
cd /usr/local/skywalking/bin/
sh startup.sh

# 關閉skywalking
netstat -ntap | grep 8081
kill -9 pid

6、訪問skywalking UI頁面效果如下:

 

注:

問題:skywalking應用與springcloud-gateway時無法通過gateway發現路由的服務鏈路?

原因: Spring Cloud Gateway 是基於 WebFlux 實現,必須搭配上apm-spring-cloud-gateway-2.1.x-plugin 和 apm-spring-webflux-x.x-plugin 兩個插件(備注:一般webflux已經包含在目標路徑下)

方案:將agent/optional-plugins下的兩個插件 復制到 agent/plugins目錄下

 

可參考資料:

阿里雲資料:https://help.aliyun.com/document_detail/161783.html

agent配置參考:https://blog.csdn.net/lizz861109/article/details/107519853

面板功能介紹:https://www.yuque.com/zhoujiyu/wspgur/yxu12p

各指標解釋:https://chenyongjun.vip/articles/140

docker容器的應用:https://www.yuque.com/zhoujiyu/zxgtub/gw9d1k

https://blog.csdn.net/kwame211/article/details/104372232

https://www.cnblogs.com/fuhai0815/p/13344150.html

https://blog.csdn.net/lizz861109/article/details/107519853

https://www.jianshu.com/p/31d8929664d2

https://www.cnblogs.com/duanxz/p/11904391.html

skywalking日志收集:https://www.jianshu.com/p/b5c41fa33264

http://javadaily.cn/articles/2020/04/01/1585670887771.html

skywalking集成日志:https://blog.csdn.net/kingtok/article/details/113886294?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-1-113886294.pc_agg_rank_aggregation&utm_term=skywalking+%E9%9B%86%E6%88%90%E6%97%A5%E5%BF%97&spm=1000.2123.3001.4430


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM