系统: centos7.6.1810

内核: 3.10.0-957.el7.x86_64

一、先下载相关的工具

官网下载地址: https://skywalking.apache.org/downloads/

openresty官网下载地址: http://openresty.org/en/download.html
下载openresty工具,捆绑了lua模块,收集日志需要用到lua语言模块
拉到网页的半中间,不下载最新的,下载稳定版本

先下载工具:

yum -y install wget git

然后下载响应的软件工具:

# 下载工具安装包:
wget https://dlcdn.apache.org/skywalking/9.2.0/apache-skywalking-apm-9.2.0.tar.gz --no-check-certificate
git clone https://ghproxy.com/https://github.com/apache/skywalking-nginx-lua.git
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.69/bin/apache-tomcat-9.0.69.tar.gz --no-check-certificate
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-x86_64.rpm
wget https://openresty.org/download/openresty-1.19.9.1.tar.gz

检查总共5个文件

二、安装elasticsearch,elasticsearch用来存储skywalking的数据

yum -y install elasticsearch-7.16.2-x86_64.rpm

三、配置java环境,skywalking工具需要用到java环境,而且要求在11版本以上

cat > /etc/profile.d/java_home.sh <<'EOF'
export JAVA_HOME=/usr/share/elasticsearch/jdk
export ES_JAVA_HOME=${JAVA_HOME}
export PATH=${PATH}:${JAVA_HOME}/bin
EOF

检查java环境

source /etc/profile
java -version

四、修改elasticsearch的配置
1、把/var/log/elasticsearch日志目录改为/data/software/elasticsearch/logs/目录下

cd /etc/elasticsearch/
sed -i 's#/var/log/elasticsearch#/data/software/elasticsearch/logs#g#' jvm.options

2、修改内存管理,大概在31行和32行左右;把星号去掉,根据情况改内存配置

vim jvm.options

3、修改主配置文件

cat > elasticsearch.yml <<'EOF'
cluster.name: skywalking-cluster  # 集群名称
node.name: node1  # node名称,集群的每台服务器名称必须不一致
# 参与master竞争
node.master: true
node.data: true  # 改服务器是否可以存放数据
# 数据存储路径,可以分块,可以只配置一个data目录
path.data: /data/software/elasticsearch/data
# 数据快照路径
path.repo: /data/software/elasticsearch/essnapshot
# 日志存储路径
path.logs: /data/software/elasticsearch/logs
# 生产必须为true,内存锁定检查,目的是内存地址直接映射,减少一次copy时间
bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏,考虑集群安全,生产设置成false
bootstrap.system_call_filter: false
# 添加请求header
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
network.host: 172.17.0.20  # 最好配置内网的IP地址,不要配0.0.0.0
http.port: 9200  # 对外端口
# 是指索引要做多少个分片,只能在创建索引时指定,后期无法修改,
# 要看有多少台es集群,有多少台就设置多少分片,如果是一台的就不用打开
# index.number_of_shards: 3# 是指每个分片有多少个副本,后期可以动态修改,也是数据备份数,es宕机了可以做冗余
# ,如果只有一台机器,设置为0,如果多台设置为1就行了,如果读特别多,可以设置为2,耗硬盘
# index.number_of_replicas: 1# es集群的总分片数据,默认是1000,后期可以在线修改,这个设置大一点,不然容易报错不够分片
cluster.max_shards_per_node: 20000transport.tcp.port: 9300  # 集群状态自行通信监控端口# 服务器集群监控配置,可以只配置两台,es回寻找其他的服务器
discovery.zen.ping.unicast.hosts: ["172.17.0.20:9300"]# 配置是否可以成为master
cluster.initial_master_nodes: ["172.17.0.20:9300"]# 这个配置限制了单节点上可以开启的ES存储实例的个数,我们需要开多个实例,因此需要把这个配置写到配置文件中,并为这个配置赋值为2或者更高。
node.max_local_storage_nodes: 256# 用来控制缓存的大小,支持两种格式,一种是百分数,代表占节点heap的百分比,另一种是精确值,如10gb,默认是无限
indices.fielddata.cache.size: 50%
# 允许跨域请求
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
EOF

4、根据自己的情况修改

五、创建相关目录

mkdir -p /data/software/elasticsearch/{data,essnapshot,logs}

六、修改文件属性

chown elasticsearch:elasticsearch /data/software/elasticsearch/ -R

七、去掉内核对elasticsearch的内存限制

vim /usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK=infinity

八、重新加载配置,启动elasticsearch并设置开机自启

systemctl daemon-reload
systemctl enable --now elasticsearch.service

九、检查elasticsearch启动情况

curl 172.17.0.20:9200

十、解压apache-skywalking-apm-9.2.0.tar.gz

tar zxf apache-skywalking-apm-9.2.0.tar.gz

十一、配置skywalking的配置文件

:set nu  # 开启行数显示

cd apache-skywalking-apm-bin/
vim config/application.yml

修改存储方式为elasticsearch

十二、启动skywalking

./bin/startup.sh

十三、检查skywalking启动情况,总共两个服务,三个端口

jps
netstat -untpl | grep java 

十四、配置skywalking客服端收集tomcat收集日志
1、解压:

tar zxf apache-skywalking-java-agent-8.13.0.tgz

2、复制一份出来,作为tomcat的配置:

cp -r skywalking-agent skywalking-agent-tomcat

3、修改配置文件

cd skywalking-agent-tomcat
vim config/agent.config

修改skywalking服务端的地址,11800是收集数据的端口

十五、开始安装tomcat
1、解压tomcat:

cd /data/recycle/
tar zxf apache-tomcat-9.0.69.tar.gz

2、配置启动脚本:

cd apache-tomcat-9.0.69
vim bin/catalina.sh

3、修改8080端口为8081,因为8080的端口已经被skywalking服务占用了

4、启动tomcat服务

./bin/startup.sh

5、检查tomcat服务

jps
netstat -untpl | grep 8081

十六、访问tomcat获取数据: http://172.17.0.20:8081  

十七、访问skywalking查看数据:

http://172.17.0.20:8080

十八、配置nginx日志收集
1、安装依赖环境:

yum -y install pcre-devel openssl-devel gcc curl gcc-c++

2、解压:

tar zxf openresty-1.19.9.1.tar.gz

3、创建nginx用户

groupadd nginx
useradd -r -s /sbin/nologin -g nginx nginx

4、编译安装:

cd openresty-1.19.9.1
./configure --prefix=/data/software/openresty/nginx \
--sbin-path=/data/software/openresty/nginx/sbin/nginx \
--conf-path=/data/software/openresty/nginx/etc/nginx.conf \
--error-log-path=/data/software/openresty/nginx/logs/error.log \
--http-log-path=/data/software/openresty/nginx/logs/access.log \
--pid-path=/data/software/openresty/nginx/run/nginx.pid \
--lock-path=/data/software/openresty/nginx/run/nginx.lock \
--http-client-body-temp-path=/data/software/openresty/nginx/tmp/client \
--http-proxy-temp-path=/data/software/openresty/nginx/tmp/proxy \
--http-fastcgi-temp-path=/data/software/openresty/nginx/tmp/fcgi \
--http-uwsgi-temp-path=/data/software/openresty/nginx/tmp/uwsgi \
--http-scgi-temp-path=/data/software/openresty/nginx/tmp/scgi \
--user=nginx \
--group=nginx \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_addition_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-http_v2_module \
--with-threads \
--with-luajit \
--with-pcre \
--with-http_iconv_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_stub_status_module \
--with-stream \
--with-stream_ssl_modulegmake
gmake install

5、创建目录

mkdir /data/software/openresty/nginx/etc/vhost /data/software/openresty/nginx/tmp

6、修改权限

chown nginx:nginx /data/recycle/skywalking-nginx-lua -R

7、配置主配置文件

cat > /data/software/openresty/nginx]# cat > etc/nginx.conf <<'EOF'
user nginx nginx;
pid /data/software/openresty/nginx/run/nginx.pid;
error_log /data/software/openresty/nginx/logs/error.log  crit;worker_processes auto;
worker_rlimit_nofile 65535;events {use epoll;worker_connections 65535;
}http {include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 8m;sendfile on;tcp_nopush on;tcp_nodelay on;max_ranges 1;keepalive_timeout 60;server_tokens off;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;log_format json_log escape=json '{''"timestamp":"$time_local", ''"remote_addr":"$remote_addr", ''"request_method":"$request_method", ''"request_uri": "$request_uri", ''"server_protocol": "$server_protocol", ''"request_length": $request_length, ''"request_time": $request_time, ''"status": $status, ''"body_bytes_sent": $body_bytes_sent, ''"bytes_sent": $bytes_sent, ''"referer": "$http_referer", ''"http_agent": "$http_user_agent", ''"x_forwarded": "$http_x_forwarded_for", ''"http_host": "$http_host", ''"up_addr": "$upstream_addr", ''"up_host": "$upstream_http_host", ''"up_resp_time": "$upstream_response_time", ''"http_x_cdn_provider": "$http_x_cdn_provider"''}';###skywalking  setting #######lua_package_path "/data/recycle/skywalking-nginx-lua/lib/?.lua;;";lua_shared_dict tracing_buffer 100m;init_worker_by_lua_block {local metadata_buffer = ngx.shared.tracing_buffermetadata_buffer:set('serviceName', 'nginx')metadata_buffer:set('serviceInstanceName', 'nginx')metadata_buffer:set('includeHostInEntrySpan', false)require("skywalking.util").set_randomseed()require("skywalking.client"):startBackendTimer("http://172.17.0.20:12800")skywalking_tracer = require("skywalking.tracer")}
#####################HTTP--CONFIG#####################include /data/software/openresty/nginx/etc/vhost/*.conf;
}
EOF

8、配置子配置文件

cat > etc/vhost/test_lua.conf <<'EOF'
# 静态文件示例,没有后端服务
server {listen       80;server_name  172.17.0.20;location / {default_type text/html;root   /data/software/openresty/nginx/html;index  index.html index.htm;rewrite_by_lua_block {skywalking_tracer:start("localhost_nginx")}body_filter_by_lua_block {if ngx.arg[2] thenskywalking_tracer:finish()end}log_by_lua_block {skywalking_tracer:prepareForReport()}}access_log  /data/software/openresty/nginx/logs/access.log json_log;error_log /data/software/openresty/nginx/logs/error.log;
}
EOFcat > etc/vhost/skywalking.conf <<'EOF'
# 有后端服务的示例
server {listen     18080;server_name  172.17.0.20;location / {rewrite_by_lua_block {skywalking_tracer:start("skywalking_server")}proxy_pass http://172.17.0.20:8080;body_filter_by_lua_block {if ngx.arg[2] thenskywalking_tracer:finish()end}log_by_lua_block {skywalking_tracer:prepareForReport()}}access_log  /data/software/openresty/nginx/logs/access.log json_log;error_log /data/software/openresty/nginx/logs/error.log;
}
EOF

9、主配置文件修改和注意事项: nginx.conf

10、子配置文件修改和注意事项: test_lua.conf,skywalking.conf差不多一样

11、启动nginx:

/data/software/openresty/nginx/sbin/nginx

12、测试访问,弄点假数据

13、获取时间范围的数据

14、找访问路径的信息,不能直接搜索,只能找

Start Time: 是访问开始时排序

Duration: 是耗时长的排序

15、检索错误的访问,有个奇怪的地方,nginx的错误不识别的

skywalking全链路追踪相关推荐

  1. Skywalking全链路追踪使用说明

    1.背景与需求: 随着业务规模的不断增大,系统的复杂度也越来越高,我们的软件架构也进入了分布式的阶段,服务按照不同的维度进行拆分,那么一次请求可能横跨多个服务模块.项目,依赖的中间件也越来越多,其中任 ...

  2. skywalking 安装_SkyWalking全链路追踪利器

    随着目前系统架构的复杂度越来越高(中台.微服务),并且线上应用的多级监控覆盖到了通讯.应用处理过程监控并且实现端到端的应用监测,线上性能故障的快速定位修复:而传统的监控分析方式已经无法满足我们的需求, ...

  3. mysql链路跟踪工具_SkyWalking全链路追踪利器

    随着目前系统架构的复杂度越来越高(中台.微服务),并且线上应用的多级监控覆盖到了通讯.应用处理过程监控并且实现端到端的应用监测,线上性能故障的快速定位修复:而传统的监控分析方式已经无法满足我们的需求, ...

  4. skywalking与pinpoint全链路追踪方案对比

    由于公司目前有200多微服务,微服务之间的调用关系错综复杂,调用关系人工维护基本不可能实现,需要调研一套全链路追踪方案,初步调研之后选取了skywalking和pinpoint进行对比; 选取skyw ...

  5. skywalking 9.x入门(二) skywalking全链路tid追踪

    这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发.拒绝营销号,拒绝标题党 背景 继上次我们对skywalking整体架构作了一些了解,然后就是学习了spring boot项目如 ...

  6. 前后端、多语言、跨云部署,全链路追踪到底有多难?

    作者|涯海 全链路追踪的价值 链路追踪的价值在于"关联",终端用户.后端应用.云端组件(数据库.消息等)共同构成了链路追踪的轨迹拓扑大图.这张拓扑覆盖的范围越广,链路追踪能够发挥的 ...

  7. 全链路追踪竟然如此简单? bytebuddy搭建全链路追踪的demo 附代码

    大家好,我是烤鸭:     最近一直在研究全链路追踪,比如cat.skywalking.zipkin等.     发现 skywalking 是基于bytebuddy 实现的,想自己试着写一下demo ...

  8. 企业如何从 0 到 1 构建整套全链路追踪体系

    简介:本文将分享 ARMS 在全链路追踪领域的最佳实践,分享主要分为四部分.首先,是对分布式链路追踪的整体简介.其次,是对 ARMS 在分布式链路追踪领域的核心能力进行介绍.然后,介绍如何从 0 到 ...

  9. 一键托管,阿里云全链路追踪服务正式商用:成本仅自建1/5或更少

    随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务.消息收发.分布式数据库.分布式缓存.分布式对象存储.跨域调用,这些组件共同构成了繁杂的分布式网络. 在一次800 ...

最新文章

  1. hook java android_Android Hook Java的的一個改進版本
  2. TCP协议——流量控制和拥塞控制
  3. 前端学习(2905):用vite的2.0构建程序
  4. 如何恢复右键里新建记事本
  5. Maven学习总结(46)——Maven跳过单元测试的两种方法及其区别(-Dmaven.test.skip=true与-DskipTests)
  6. 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服
  7. 一个有趣的IP不同的问题?
  8. python计算思维的概念_用Python学计算思维turtle详解
  9. 宠物兽医体层摄影术行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. 2022最新小额借贷系统程序源码+附教程文档
  11. (苹果Mac OSX系统)绿联USB无法连接网络解决方案
  12. 通过网络数据采集系统快速获得优质销售线索
  13. unity5.6.5_5.6现在可用并完成了Unity 5周期
  14. 程序员如何从零开始运营好一个公众号挣点零花钱之公众号定位
  15. 基于HTML、CSS、JavaScript、jQuery的app小项目--简易备忘录
  16. CCF考试——201312-5I’m stuck!
  17. 几十个恶毒网站,不怕死的朋友请进
  18. 本世纪最好的NSA!
  19. 莫队算法 (普通莫队、带修莫队、树上莫队)
  20. iOS 手机淘宝 自动创建一个人的群聊 实现源码 hook 代码源码

热门文章

  1. 单片机之动态数码管篇
  2. 圆柱体的投影特点_环形屏幕投影技术的特点和优势
  3. 未找到要求的 from 关键字_临沂网站关键字优化工具
  4. Cocos2d开发系列(二)
  5. 2022高职国家技能大赛(大数据竞赛)-模块E:数据可视化-任务书5
  6. 张忠谋:摩尔定律将死,物联网是“Next Big Thing”
  7. 爬虫实战项目--优信二手车--天眼
  8. 不对窗体进行边框装饰后,实现对鼠标事件的监控
  9. RedHat Linux 9.0 安装教程(全程图解)
  10. 三星java世界x108_三星 X108:其他