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-openk-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"] #创建数据存储目录和日志存储目录
[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"
}

二、安装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、配置

[root@skywalking config]# vim /usr/local/skywalking/apache-skywalking-apm-bin-es7/config/application.yml
修改配置如下:
##注释h2的配置
# h2:
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db;DB_CLOSE_DELAY=-1}
# user: ${SW_STORAGE_H2_USER:sa}
# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
# maxSizeOfArrayColumn: ${SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN:20}
# numOfSearchableValuesPerTag: ${SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG:2} #注释h2的selector,添加elasticsearch7,nameSpace改为ES配置cluster.name: CollectorDBCluster的CollectorDBCluster,localhost改为ip地址,注意elasticsearch7中localhost也要改
storage:
#selector: ${SW_STORAGE:h2}
selector: ${SW_STORAGE:elasticsearch7}
elasticsearch:
nameSpace: ${SW_NAMESPACE:"CollectorDBCluster"}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:10.153.61.71:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}

elasticsearch7:
nameSpace: ${SW_NAMESPACE:""}
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:""}

/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

当虚拟机中只有单个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://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

Centos 7.4搭建es7.12.0+Skywalking7.8.5的更多相关文章

  1. CentOS 7 yum安装nginx-1.12.0

    CentOS 7 中的 yum 没法直接使用 yum install nginx 这个指令去安装nginx,因为nginx这个服务不是yum库中自带的.图1是官方提供的大致安装步骤,图2是官网提供的多 ...

  2. CentOS 6.6 搭建Zabbix 3.0.3 过程

    分享CentOS 6.6下搭建Zabbix 3.0.3 的过程,希望都大家有所帮助. 环境安装 系统环境: # cat /etc/RedHat-release CentOS release 6.6 ( ...

  3. centos 7 源代码搭建部署 zabbix-4.0.13 LTS

    Zabbix 官网 >:https://www.zabbix.com/download 源代码地址>:https://www.zabbix.com/cn/download_sources# ...

  4. 基于Centos 7.4 搭建ELK整合SpringBoot日志收集

    基于Centos 7.4搭建es7.12.0+logstash-7.12.0+kibana-7.12.0(ELK)整合SpringBoot日志收集 注:Skywalking和logstash可共用一个 ...

  5. CentOS 6.9搭建CDH 5.12.0集成环境

    Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机.Hadoop.Hive.Spark等服务的安装配置管理做了极大简化.   ...

  6. cAdvisor0.24.1+InfluxDB0.13+Grafana4.0.2搭建Docker1.12.3 Swarm集群性能监控平台

    目录 [TOC] 1.基本概念 ​ 既然是对Docker的容器进行监控,我们就不自己单独搭建cAdvisor.InfluxDB.Grarana了,本文中这三个实例,主要以Docker容器方式运行. 本 ...

  7. Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Openssl 1.1.0e + Mariadb 10.1.22 + Nginx 1.12.0 + PHP 7.1.4 + Laravel 5.4 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  8. CentOS 6.5 搭建 .NET 环境, Mono 5.16.0 + Jexus 5.8

    最近有这样一个打算,就是准备把以前的有一个.NET 网站部署在Linux 下面,正好试试 .NET 跨平台的功能,为后续研究 .netCore 方向准备. 搭建环境: CentOS 6.5 + Mon ...

  9. CentOS 7.3 CDH 5.10.0 Druid0.12.4安装记录

    CentOS 7.3 CDH 5.10.0安装记录 0. 集群规划192.167.1.247 realtime247 realtime+hadoopdata192.167.1.248 broker24 ...

随机推荐

  1. Istio最佳实践系列:如何实现方法级调用跟踪?

    赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher 管理委员,Istio 项目贡献者,热衷于开源.网络和云计算.目前主要从事服务网格的开源和研发工作. 引言 TCM(Ten ...

  2. BUAA_OO_2020_第四单元与课程总结

    BUAA_OO_2020_第四单元与课程总结 第四单元架构 第一次 架构设计 第一次作业要求实现UML类图解析器. 我才用自顶向下依次解析的方法,首先将类图中涉及的所有元素分成三层: 第一层 第二层 ...

  3. Linux 网络工具中的瑞士军刀 - socat & netcat

    独立博客阅读:https://ryan4yin.space/posts/socat-netcat/ 文中的命令均在 macOS Big Sur 和 Opensuse Tumbleweed 上测试通过 ...

  4. Java高级【Junit、反射、注解】

    1.Junit单元测试 * 测试分类:     1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值.     2. 白盒测试:需要写代码的.关注程序具体的执行流程. * Junit使用 ...

  5. Lucas(卢卡斯)定理

    Lucas(卢卡斯)定理 定义 若 \(p\) 为质数,且\(a\ge b\ge1\),则有: \[C_{a}^{b}\equiv C_{a/p}^{b/p}\cdot C_{a (mod\,p)}^ ...

  6. 网络编程Netty入门:Netty简介及其特性

    目录 Netty的简介 Netty的特性 Netty的整体结构 Netty的核心组件 Netty的线程模型 结束语 Netty的简介 Netty是一个java开源框架,是基于NIO的高性能.高可扩展性 ...

  7. 07_利用pytorch的nn工具箱实现LeNet网络

    07_利用pytorch的nn工具箱实现LeNet网络 目录 一.引言 二.定义网络 三.损失函数 四.优化器 五.数据加载和预处理 六.Hub模块简介 七.总结 pytorch完整教程目录:http ...

  8. python3存储numpy格式的矩阵

    技术背景 numpy在python中的地位是相当高的,即使是入门的python使用者也会经常看到这个库的使用.除了替代python自带的列表数据格式list之外,numpy的一大优势是其底层的高性能实 ...

  9. POJ2536 二分图匹配

    题意:      有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了. ...

  10. PAT 乙级 -- 1007 -- 素数对猜想

    题目简述 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想"认为"存在无穷 ...