部署skyWalking
以下安装所需要的安装包和示例配置文件
链接:https://pan.baidu.com/s/1qqzqcrMYALZ-4J9qDVpdVA?pwd=6hkz
提取码:6hkz
[TOC]
安装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防火墙
#临时关闭
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: "*"
https://www.bbsmax.com/A/ke5jg9jadr/
使用SkyWalking监控nginx (以openresty为例)
安装openresty
参考文档地址1:
参考文档地址2:
在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 域名https://blog.csdn.net/qq_31041847/article/details/106178067
centos7修改镜像后提示 Could not resolve host: mirrors.aliyun.com; 未知的错误https://blog.csdn.net/wcuuchina/article/details/109669018
https://blog.csdn.net/wcuuchina/article/details/109669018
https://www.jianshu.com/p/be606d1a3aaf
下载SkyWalking Nginx LUA
地址:https://skywalking.apache.org/downloads/
下载后的文件是: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
点击右上角的刷新后查看仪表盘和拓扑图
拓扑图