部署skyWalking

以下安装所需要的安装包和示例配置文件

链接:https://pan.baidu.com/s/1qqzqcrMYALZ-4J9qDVpdVA?pwd=6hkz
提取码:6hkz
 

skyWalking官网

安装jdk

#在 /usr/local/创建jdk目录
mkdir /usr/local/jdk
#上传jdk1.8的压缩包
#解压
cd /usr/local/jdk
tar -zxvf jdk-8u321-linux-x64.tar.gz
#删除压缩包
rm -rf jdk-8u321-linux-x64.tar.gz
#修改jdk文件夹名
mv jdk1.8.0_321 jdk1.8
#配置环境变量
vi /etc/profile
#进入编辑模式
按shift+i键,光标移至最后
#最后添加 
export JAVA_HOME=/usr/local/jdk/jdk1.8 #修改成自己jdk的安装目录
export CLASSPATH="$JAVA_HOME/lib"
export PATH="$JAVA_HOME/bin:$PATH"
#退出编辑模式
按esc键
#保存并退出
:wq
#重新加载配置文件
source /etc/profile
#查看java环境 ,验证是否安装成功
java -version
#显示如下,则安装成功

遇到的问题

linux安装配置环境变量后,java -versiov提示无法执行二进制文件

原因:jdk版本不对

关闭linux防火墙

#临时关闭
systemctl stop firewalld.service
#禁止开机启动
systemctl disable firewalld

安装skywalking

启动步骤

01 下载skywalking的安装包

下载地址:选择自己所需的版本

#创建skywalking目录
mkdir /usr/local/skywalking
#上传sw压缩包到/usr/local/skywalking
#解压sw压缩包
cd /usr/local/skywalking/
tar -zxvf apache-skywalking-apm-es7-8.4.0.tar.gz
#修改webapp.yml配置文件
vi /usr/local/skywalking/apache-skywalking-apm-bin-es7/webapp/webapp.yml #修改端口8080为8666,防止端口号占用
#在sw解压包下启动skywalking,后台启动
cd /usr/local/skywalking/apache-skywalking-apm-bin-es7/bin
./startup.sh &

02 修改webapp.yml配置文件

03 后台启动skywalking

04 访问本地id:8666出现如下代表启动成功

异常处理

如访问不通,则通过jps命令查看当前启动进程

#查看当前启动进程
jps

必须有这俩个服务

比如缺少oap服务,则查看日志,寻找报错原因

cd /usr/local/skywalking/apache-skywalking-apm-bin-es7/logs
tail -f skywalking-oap-server.log

项目接入skywalking(探针)

将一个springboot项目打成jar包(agent-demo-1.0-SNAPSHOT.jar)上传到服务器上,如/usr/local/skyWalking/agentDemo目录下

测试项目主要有以下测试接口

#上传jar包
cd /usr/local/skywalking/
mkdir agentDemo
#编写启动脚本
vim start.sh

编写启动脚本start.sh

配置agent名字,一般一个服务一个名字

配置配置 Collector 地址,本机的不用改

指定agent的路径,export JAVA_AGENT=-javaagent:

指定要启动的jar包

start.sh

#skyWalking Agent 配置
export SW_AGENT_NAME=springboot-agentDemo # 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 # 配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 # 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。
export JAVA_AGENT=-javaagent:/usr/local/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar # SkyWalking Agent jar 地址。
​
# Jar 启动,配置你的jar包名
java -jar $JAVA_AGENT -jar agent-demo-1.0-SNAPSHOT.jar

图解

给启动脚本加启动权限

cd agentDemo
#给启动脚本加启动权限
chmod +x *.sh
#启动项目
./start.sh
#或者后台启动 ./start.sh &

发起请求测试,http://192.168.136.136:8100/index/get,在skywalking界面,点击刷新后可看到如下效果

修改sw存储的数据源配置(改为es)

注意skywalking和elasticsearch的版本搭配

安装单体es

#创建目录
mkdir /usr/local/es
#将es金额sw的安装包上传到该目录中
#解压es安装包
cd /usr/local/es
tar -zxvf./elasticsearch-7.13.4-linux-x86_64.tar.gz
#改名
mv elasticsearch-7.13.4 elasticsearch
#修改linux的限制配置
vi /etc/security/limits.conf
#末尾添加
root soft nofile 65535
root hard nofile 65535
#修改系统权限控制
vi /etc/sysctl.conf
#shift+i 进入编辑模式,尾部新增
vm.max_map_count=262144
#让系统控制权限配置生效
sysctl -p

修改yml配置文件

#修改elasticsearch.yml配置文件
cd /usr/local/es/elasticsearch/config
vi elasticsearch.yml

尾部添加信息

复制可能出错,建议整个文件复制,见资料

#集群名称,所有节点集群名一样,此名称需要在skywalking中配置
cluster.name: elasticsearch-space
#节点名称
node.name: node-00
#索引存储位置
path.data: /usr/local/es/elasticsearch/data
#日志位置
path.logs: /usr/local/es/elasticsearch/logs
#外部访问地址,可以设置成主机ip
network.host: 192.168.136.140
#外部http访问端口
http.port: 9200
#初始集群主节点,可以配置多个,从中选主一个作为主
cluster.initial_master_nodes: ["node-00"]
#跨域访问配置
http.cors.enabled: true
http.cors.allow-origin: "*"

退出保存

es5.0以上不能用root启动,所以创建一个新的用户es

#进入es解压后的文件中,
cd /usr/local/es/elasticsearch/
#创建一个用户,用于es启动
useradd es
#修改密码,复杂一些saiyou123
passwd es
#授权
chown -R es:es ../elasticsearch

#切换用户   必须切换到es用户下启动,root不可以
su es
#到es的bin目录下
cd bin
#后台启动
./elasticsearch -d
#模拟访问
curl 127.0.0.1:9200

第一次启动可能会失败,原因是logs目录不存在,重新启动即可,忽略es启动时关于jdk版本的warning警告

Windowes访问地址 http://192.168.136.140:9200/

显示如下结果启动成功

查看es是否启动成功

#查看es是否启动成功
ps -ef | grep elastic

启动成功

未启动

排查问题

#查看启动的端口号
ss -tanl
#查看es的日志
tail -f logs/elasticsearch.log
#根据端口号查出进程id
netstat -nlp | grep 8080

修改skywaking配置文件

修改这几处

vi /usr/local/skywalking/apache-skywalking-apm-bin-es7/config/application.yml

重新启动skywalking

搭建es集群

搭建es集群

elasticsearch.yml

node.master: true
# 数据节点
node.data: true
#集群名称,所有节点集群名一样
cluster.name: saiyou_cluster
#节点名称
node.name: node-02
#索引存储位置
path.data: /usr/local/es/elasticsearch7.2/data
#日志位置
path.logs: /usr/local/es/elasticsearch7.2/logs
#外部访问地址,可以设置成主机ip
network.host: 192.168.153.131
#外部http访问端口
http.port: 9202
#节点之间通信ip,本机ip
network.publish_host: 192.168.153.131
#节点之间通信端口
transport.tcp.port: 9302
#集群中节点,默认时9300可以忽略,(三个节点相互发现)
discovery.seed_hosts: ["192.168.153.131:9301","192.168.153.131:9302","192.168.153.131:9303"]
#初始集群主节点,可以配置多个,从中选主一个作为主
cluster.initial_master_nodes: ["node-01","node-02","node-03"]
#跨域访问配置
http.cors.enabled: true
http.cors.allow-origin: "*"

Centos 7.4搭建es7.12.0+Skywalking7.8.5

使用SkyWalking监控nginx (以openresty为例)

安装openresty

openresty官网

参考文档地址1:openresty安装教程

参考文档地址2:Openresty基于CentOS7.6安装,测试

在CentOS系统中添加OpenResty仓库

yum install yum-utils -y
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
https://mirrors.aliyun.com/repo/Centos-7.repo

出现如下页面代表成功

如出现报错,可能你已经安装了docker等yum等相关的,我尝试了很多种解决方案,暂时无法解决,只能重装虚拟机

安装OpenResty

yum install openresty -y

这样就完成了基本的安装,默认的安装目录在/usr/local/openresty

直接进入其中的nginx/conf目录,修改 nginx.conf文件,加入以下一段:

cd /usr/local/opentresty/nginx/conf
vi nginx.conf

location /lua {
            default_type text/plain;
            content_by_lua 'ngx.say("hello,this is lua")';
            charset utf-8;
        }

保存。然后启动nginx

如无法访问,可能是防火墙未关闭

#关闭防火墙
systemctl stop firewalld.service

异常处理

linux下无法ping 域名linux下无法ping 域名_zyj*asdf的博客-CSDN博客_linux无法ping通域名

centos7修改镜像后提示 Could not resolve host: mirrors.aliyun.com; 未知的错误centos7修改镜像后提示 Could not resolve host: mirrors.aliyun.com; 未知的错误_wcuuchina的博客-CSDN博客

centos7修改镜像后提示 Could not resolve host: mirrors.aliyun.com; 未知的错误_wcuuchina的博客-CSDN博客

https://www.jianshu.com/p/be606d1a3aaf

使用SkyWalking监控nginx (以openresty为例)

下载SkyWalking Nginx LUA

地址:Downloads | Apache SkyWalking

下载后的文件是:skywalking-nginx-lua-0.6.0.tar.gz

   

解压缩skywalking-nginx-lua-0.6.0.tar.gz文件到nginx的conf目录下

nginx的conf目录以实际情况为准,解压后的文件夹是:skywalking-nginx-lua-0.6.0

#上传skywalking-nginx-lua-0.6.0.tar.gz到 /usr/local/openresty/nginx/conf/目录下
cd /usr/local/openresty/nginx/conf/
tar -zxvf skywalking-nginx-lua-0.6.0.tar.gz 

修改openresty中nginx的nginx.conf文件

资料中的做法

在解压的skywalking-nginx-lua-0.6.0/examples路径下有一个skywalking官方提供的nginx.conf配置文件,用这个文件替换安装openresty后的那个默认nginx.conf文件,然后再修改这个文件。

我们的做法(为了简单),用以下的内容直接替换nginx.conf中的,然后根据实际情况修改

# 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.

# This nginx.conf is designed and written for local dev environments
# It will use the blocking startup mode and console logging
worker_processes  1;
daemon off;
error_log /dev/stdout debug;

events {
    worker_connections 1024;
}
http {
    lua_package_path "/usr/local/openresty/nginx/conf/skywalking-nginx-lua-0.6.0/lib/?.lua;;";
    # Buffer represents the register inform and the queue of the finished segment
    lua_shared_dict tracing_buffer 100m;

    # Init is the timer setter and keeper
    # Setup an infinite loop timer to do register and trace report.
    init_worker_by_lua_block {
        local metadata_buffer = ngx.shared.tracing_buffer

        metadata_buffer:set('serviceName', 'httpnginx')
        -- Instance means the number of Nginx deloyment, does not mean the worker instances
        metadata_buffer:set('serviceInstanceName', 'httpInstancenginx')
        -- type 'boolean', mark the entrySpan include host/domain
        metadata_buffer:set('includeHostInEntrySpan', false)

        -- set randomseed
        require("skywalking.util").set_randomseed()

        require("skywalking.client"):startBackendTimer("http://127.0.0.1:12800")

        -- Any time you want to stop reporting metrics, call `destroyBackendTimer`
        -- require("skywalking.client"):destroyBackendTimer()

        -- If there is a bug of this `tablepool` implementation, we can
        -- disable it in this way
        -- require("skywalking.util").disable_tablepool()

        skywalking_tracer = require("skywalking.tracer")
    }

    server {
        listen 80;
        server_name  localhost;
        
          location /ingress { 
            default_type text/html;
            rewrite_by_lua_block {
                skywalking_tracer:start("upstream service")
            }

            proxy_pass http://192.168.136.140:8100/index; 

            body_filter_by_lua_block {
                if ngx.arg[2] then
                    skywalking_tracer:finish()
                end
            }

            log_by_lua_block {
                skywalking_tracer:prepareForReport()
            }
        }
		 location /lua {
        default_type text/plain;
        content_by_lua 'ngx.say("hello,this is lua")';
        charset utf-8;
            }
    }    
    
       
    }

重点修改的地方

重新启动这几个服务

ps

测试的相关地址:

后端服务的正常请求接口:http://192.168.136.140:8100/index/get

通过nginx代理后端服务的正常请求接口http://192.168.136.140/ingress/get

skywalking的服务地址:http://192.168.136.140:8666/

es的服务地址:http://192.168.136.140:9200/

nginx(openresty)的健康检测地址:http://192.168.136.140/lua

通过nginx代理后端服务的异常请求接口http://192.168.136.140/ingress/ex

点击右上角的刷新后查看仪表盘和拓扑图

拓扑图

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值