Centos 7.6搭建Skywalking6.5+es6.2.4


軟件包版本
1、elasticsearch-6.2.4.tar.gz,下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
2、kibana-6.2.4-linux-x86_64.tar.gz,下載地址:https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz
3、apache-skywalking-apm-6.5.0.tar.gz,下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache/skywalking/6.5.0/apache-skywalking-apm-6.5.0.tar.gz
將以上三個軟件包上傳至服務器/home/skywalking/路徑下

 注:skywalking6.0開始,最低要求elasticseach6.3.x及以上版本(之前安裝上面的版本后,啟動發現服務項及JVM等信息不能展示),我重新下了個https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz


一、安裝ES

1、創建安裝路徑
   mkdir /usr/local/es

2、解壓軟件包
   tar -zxvf /usr/local/src/elasticsearch-6.3.2.tar.gz -C /usr/local/es

3、創建獨立用戶與組(root用戶下創建設定)
   (1)創建用戶組
   groupadd es
   (2)創建用戶es,並添加至用戶組es
   useradd -g es es
   (3)設置密碼
   passwd es
   New password:duanxz123
   Retype new password:duanxz123
  (4)使es用戶擁有執行權限
   visudo

   root    ALL=(ALL)       ALL
   es      ALL=(ALL)       ALL  # 這個新增行

4、更改軟件包屬主屬組

[root@localhost elasticsearch-6.2.4]# chown -R es:es /home/skywalking/es/elasticsearch-6.2.4/
[root@localhost elasticsearch-6.2.4]# ls -l /home/skywalking/elasticsearch-6.2.4.tar.gz 
bin/            config/         es-data/        es-logs/        lib/            LICENSE.txt     logs/           modules/        NOTICE.txt      plugins/        README.textile  
[root@localhost elasticsearch-6.2.4]# ls -l /home/skywalking/es/elasticsearch-6.2.4/
總用量 224
drwxr-xr-x.  2 es es   4096 11月 21 19:36 bin
drwxr-xr-x.  2 es es     75 11月 21 19:42 config
drwxr-xr-x.  2 es es      6 11月 21 19:42 es-data
drwxr-xr-x.  2 es es    174 11月 21 19:56 es-logs
drwxr-xr-x.  2 es es   4096 4月  13 2018 lib
-rw-r--r--.  1 es es  11358 4月  13 2018 LICENSE.txt
drwxr-xr-x.  2 es es     30 11月 21 19:56 logs
drwxr-xr-x. 16 es es   4096 4月  13 2018 modules
-rw-r--r--.  1 es es 191887 4月  13 2018 NOTICE.txt
drwxr-xr-x.  2 es es      6 4月  13 2018 plugins
-rw-r--r--.  1 es es   9268 4月  13 2018 README.textile
[root@localhost elasticsearch-6.2.4]#

5、切換到es用戶,編輯配置文件,准備啟動es

   # 設定es群集名稱
   cluster.name: my-es-skywalking
   # es當前節點名稱,用於區分不同節點
   node.name: node-1
   
   # 修改數據目錄,此目錄為自定義,需要在root用戶下創建,且屬主屬組更改為es
   path.data: /home/skywalking/es/elasticsearch-6.2.4/es-data
   # 日志目錄位置,需自己創建,方式同上
   # yum安裝則系統自定義,在軟件版本或者系統升級時會被刪除,所以建議修改
   path.logs: /home/skywalking/es/elasticsearch-6.2.4/es-logs
   # elasticsearch官網建議生產環境需要設置bootstrap.memory_lock: true
   bootstrap.memory_lock: true
   # 監聽訪問地址為任意網段
   network.host: 0.0.0.0
   # 服務監聽端口
   http.port: 9200

6、編輯完成配置文件后,數據目錄以及日志文件目錄需要創建

   sudo mkdir -p /home/skywalking/es/elasticsearch-6.2.4/es-data
   sudo mkdir -p /home/skywalking/es/elasticsearch-6.2.4/es-logs
   sudo chown -R es:es /data/
   sudo chown -R es:es /var/log/es 

7、准備工作完成,啟動es
   cd /usr/local/es/elasticsearch-6.3.2/bin/
   ./elasticsearch  # 加上 -d 參數,后台運行
需要jdk環境,配置jdk:

vi /etc/profile
#set java environment
JAVA_HOME=/home/skywalking/jdk1.8
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

source /etc/profile
java -version

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

{
  "name" : "node-1",
  "cluster_name" : "my-es-skywalking",
  "cluster_uuid" : "ILucpOH_SKGBnFs3Jg9KPg",
  "version" : {
    "number" : "6.2.4",
    "build_hash" : "ccec39f",
    "build_date" : "2018-04-12T20:37:28.497551Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

 

二、安裝Kibana

1、創建安裝路徑
   mkdir /home/skywalking/es
2、解壓軟件包

/home/skywalking
[root@localhost skywalking]# tar -zxvf kibana-7.0.0-linux-x86_64.tar.gz -C /home/skywalking/es/

3、修改配置文件
(1)vim /home/skywalking/es/kibana-6.2.4-linux-x86_64/config/kibana.yml

# 服務端口號:
server.port: 5601

# 服務IP地址:
#server.host: "localhost"
server.host: "10.200.110.116"

# ES鏈接地址:
#elasticsearch.url: "localhost"
elasticsearch.url: "http://10.200.110.116:9200"

# 配置pid文件存儲運行Kibana時的進程號,便於用kill -9 `cat /var/run/kibana.pid`來殺進程。
pid_file: /home/skywalking/es/kibana-6.2.4-linux-x86_64/run/kibana.pid

# 配置Kibana的日志輸出位置:
logging.dest: /home/skywalking/es/kibana-6.2.4-linux-x86_64/kibana-log/kibana.log

(2)創建日志文件夾:mkdir /kibana-log和run

3、開放端口:
   firewall-cmd --list-ports
   firewall-cmd --zone=public --add-port=5601/tcp --permanent
   firewall-cmd --reload
4、目錄賦權限 [root@localhost kibana-6.2.4-linux-x86_64]# chown -R es:es /home/skywalking/es/kibana-6.2.4-linux-x86_64/

5、啟動
   cd /home/skywalking/es/kibana-6.2.4-linux-x86_64/bin
   ./kibana
   
   # 在后台不輸出日志的方式運行
   cd /home/skywalking/es/kibana-6.2.4-linux-x86_64/bin
   nohup ./kibana > /dev/null 2>&1 &
   
6、訪問
http://10.200.110.116:5601


三、安裝Skywalking服務

1安裝

cd /usr/local/src
tar -zxvf apache-skywalking-apm-incubating-6.0.0-GA.tar.gz
mv apache-skywalking-apm-incubating skywalking
mv skywalking/ /usr/local/

2配置
vim /usr/local/skywalking/config/application.yml
修改配置如下:
storage:

#h2記得都要注釋了
#  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}
  elasticsearch:
    # nameSpace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:10.200.110.116:9200}
    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
    # 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:2000} # Execute the bulk every 2000 requests
    bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
    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

vim /usr/local/skywalking/webapp/webapp.yml
修改配置如下:
server:
  port: 18080

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

3、開放端口:
   firewall-cmd --list-ports
   firewall-cmd --zone=public --add-port=18080/tcp --permanent

   firewall-cmd --zone=public --add-port=11800/tcp --permanent

   firewall-cmd --zone=public --add-port=12800/tcp --permanent
   firewall-cmd --reload


啟動:
[root@localhost bin]# sh startup.sh
SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!
[root@localhost bin]#

 

 

四、客戶端代理:agent

實際開發時候,每一個jar包獲取應用都應該單獨使用一個agent,
所以將agent這個目錄拷貝到各自對應的jar包路徑下。

核心部分的目錄信息如下:

├── 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.200.110.116:11800}

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


設置好參數后,對於 Java 應用,添加核心的-javaagent進行啟動
java -javaagent:agent/skywalking-agent.jar -jar xxx.jar

java -javaagent:E:\work\skywalking\agent\skywalking-agent.jar -jar appsflyer-reflux-201905241004.jar



idea里啟動,添加VM啟動參數,例如:
-javaagent:.../agent/skywalking-agent.jar
-Dskywalking.agent.service_name=test_etl-local
-Dskywalking.collector.backend_service=172.16.254.131:11800    

五、附:啟動/關閉命令:
# 啟動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


免責聲明!

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



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