zoukankan      html  css  js  c++  java
  • 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://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

  • 相关阅读:
    在线考试————随机出题
    HTTP协议
    团队
    做作业
    图书馆管理说明书性能
    关于敏捷开发的学习
    运行环境
    图书馆管理系统说明书
    性能(2)
    作业
  • 原文地址:https://www.cnblogs.com/yizhipanghu/p/14738492.html
Copyright © 2011-2022 走看看