skywalking全链路追踪

news2025/8/12 3:56:27

系统: 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: 20000

transport.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_module

gmake
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_buffer

        metadata_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] then
                skywalking_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

cat > 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] then
                skywalking_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的错误不识别的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/15250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arctic——流式湖仓系统

1、Arctic介绍 Arctic 是由网易开源的流式湖仓系统&#xff0c;Arctic 在 Iceberg 和 Hive 之上添加了更多实时场景的能力&#xff0c;并且面向 DataOps 提供流批统一&#xff0c;开箱即用的元数据服务&#xff0c;让数据湖更加好用和实用。 Arctic 是搭建在 Apache Iceberg …

详解MybatisPlus数据安全

MybatisPlus数据安全 概述 ​ 存在数据库中的数据对于普通用户而言是不可见的&#xff0c;好像是藏起来了一样&#xff0c;但对于开发者&#xff0c;只要知道数据库的连接地址、用户名、密码&#xff0c;则数据不再安全&#xff1b;这也意味着&#xff0c;一旦连接数据库的配…

卡塔尔世界杯倒计时!世界杯直播在哪里观看?美家市场汇总来了!

来了来了&#xff0c;2022卡塔尔世界杯倒计时3天&#xff01;2022卡塔尔世界杯将在北京时间11月21日开始&#xff0c;持续时间28天&#xff0c;至2022年12月18日结束&#xff0c;将近一个月的赛程让众多球迷们期待不已&#xff0c;这一个月将是全世界球迷们最快乐的一个月&…

【网站架构】如何长久运行升级?高可用部署只是基础,巡检、监控、应用数据备份、日志、灰度发布

大家好&#xff0c;欢迎来到停止重构的频道。本期讨论大型网站的可用性。 高可用指的是当一部分服务器宕机时&#xff0c;网站系统仍可正常运行。 一些常用的软件服务的高可用部署方案 &#xff0c;如Tomcat、Nginx、Redis、MySQL等&#xff0c;在往期性能调优时已经有详细的介…

H5组件Canvas画电子印章

效果图 代码 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>HTML5 Canvas印章</title> <script type"text/javascript" src"https://code.jquery.com/jquery-2.2.4.js"></scri…

电科大离散数学-4-二元关系

目录 4.1 序偶和笛卡尔积 4.1.1 有序组的定义 4.1.2 笛卡儿积 4.1.3 笛卡儿积的性质 4.1.4 推广 4.2 关系的定义 4.2.1 二元关系的定义 4.2.2 二元关系的数学符号 4.2.3 枚举二元关系 4.2.4 几种重要关系 4.2.5 定义域和值域 4.2.6 n元关系 4.3 关系的表示 4.3.1…

[附源码]SSM计算机毕业设计中小型艺术培训机构管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

List<Map<String, Object>>,Map<String,List<Map<String, Object>>>多方式循环遍历

多方式循环遍历1. List<Map<String, Object>>多方式循环测试结果2. Map&#xff1c;String,List&#xff1c;Map&#xff1c;String, Object&#xff1e;&#xff1e;&#xff1e;测试结果☀️相关笔记章节&#xff1a; &#x1f339;java 1.8 stream使用总结&…

MySQL8.0优化 - 优化MySQL服务器、优化MySQL的参数、优化数据类型

文章目录学习资料优化MySQL服务器优化服务器硬件配置较大的内存配置高速磁盘系统合理分布磁盘I/O配置多处理器优化MySQL的参数innodb_buffer_pool_sizekey_buffer_sizetable_cachequery_cache_sizequery_cache_typesort_buffer_sizejoin_buffer_sizeread_buffer_sizeinnodb_flu…

RabbitMQ初步到精通-第四章-RabbitMQ工作模式-SIMPLE

RabbitMQ工作模式-SIMPLE模式 1.模式介绍 这是最简单的一个模式了&#xff0c;一般在实际的生产环境中&#xff0c;大家应该都不会使用一个消费者。只做入门的介绍。 一个生产者&#xff0c;一个默认的交换机【图中没体现】&#xff0c;一个队列&#xff0c;一个消费者。 生产…

【Java技术专题】「Java8技术盲区」函数接口字典-看看还有哪些你所不知道函数接口

函数接口的定义 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法&#xff0c;但是可以有多个非抽象方法的接口。 函数接口的特点 函数式接口可以被隐式转换为lambda表达式。 Lambda表达式和方法引用&#xff08;实际上也可认为是Lambda表达式&#xff09;上。 …

子序列宽度之和

目录题目1. 子序列2. 子序列找最大最小值3. 代码题目 一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums &#xff0c;返回 nums 的所有非空 子序列 的 宽度之和 。由于答案可能非常大&#xff0c;请返回对 109 7 取余 后的结果。 子序列 定义…

[附源码]java毕业设计农业种植管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

IDEA中给源码添加自己注释——private-notes插件安装使用

一、前言 我们在空闲之余喜欢研究一些经典框架的源码&#xff0c;发现没办法把自己的注释添加上。 会给出提示&#xff1a;File is read-only 很烦&#xff0c;但是为了安全考虑也是没有办法的&#xff01; 这是一个大佬就写了一个IDEA插件&#xff0c;让我们摆脱了这个烦恼&a…

U2-Net 使用嵌套 U 结构进行更深入的显着目标检测

在给定图像中分割不同的对象一直是计算机视觉领域的一项众所周知的任务。多年来,我们已经看到自编码器到疯狂的深度学习模型(如 Deeplab)被用于语义分割。在所有模型的深海中,仍然有一个名字排在最前面,它就是U-Net。U-Net 于 2018 年发布,此后获得了巨大的普及,并以某种…

Android入门第30天-Android里的Toast的使用

介绍 本篇带来的是&#xff1a; Android用于提示信息的一个控件——Toast(吐司)&#xff01;Toast是一种很方便的消息提示框,会在 屏幕中显示一个消息提示框,没任何按钮,也不会获得焦点一段时间过后自动消失&#xff01; 非常常用&#xff01;我们通过一个例子把Toast的使用讲…

【重识云原生】第六章容器基础6.4.9.6节——Service 与 Pod 的DNS

1 Service 与 Pod 的 DNS Kubernetes 为 Service 和 Pod 创建 DNS 记录。 你可以使用一致的 DNS 名称而非 IP 地址访问 Service。 Kubernetes DNS 除了在集群上调度 DNS Pod 和 Service&#xff0c; 还配置 kubelet 以告知各个容器使用 DNS Service 的 IP 来解析 DNS 名称。 集…

bcn_timout,ap_probe_send_start

ESP32 使用 beacon 超时机制检测 AP 是否活跃。如果 station 在 inactive 时间内未收到所连接 AP 的 beacon&#xff0c;将发生 beacon 超时。inactive 时间通过调用函数 esp_wifi_set_inactive_time() 设置。 beacon 超时发生后&#xff0c;station 将向 AP 发送 5 个 probe …

智芯传感MEMS压力传感器促进无人机跨入极其广阔的应用市场

2022年11月8日至13日&#xff0c;第十四届中国国际航空航天博览会在广东珠海国际航展中心举办。伴随着人工智能技术的进步&#xff0c;全球无人化装备的发展如火如荼。各式各样的无人机在无人化装备中可谓是一枝独秀&#xff0c;广受外界的高度关注。 据美国《Aviation Week&am…

【元宇宙欧米说】从GameFi的视角讨论Web2到Web3的利弊

什么将会是Web3生态赛道发展的未来&#xff1f;争议很大的GameFi如何建立高价值的商业生态&#xff1f; 11月23日下午三点&#xff0c;IDV合作经理Chillax将以“从GameFi视角讨论Web2到Web3的利弊”为题&#xff0c;与大家共同探讨Web3时代的到来如何影响GameFi的发展。 Bloc…