当前位置: 首页 > news >正文

centos部署SkyWalking以及在springcloud项目中搭配loki使用

文章目录

      • 场景
      • SkyWalking介绍
      • 部署
          • 部署Storage [单机版Elasticsearch]
          • 部署SkyWalking OAP [下载地址](https://skywalking.apache.org/downloads/#SkyWalkingAPM)
          • 部署SkyWalking Java Agent
      • springCloud 使用举例
      • 追踪ID写入loki

场景

SkyWalking是应用性能监控平台,可用于分布式系统,支持微服务、云原生、Docker、Kubernetes 等多种架构场景。 最近搞了一台家用服务器,下面演示下部署过程以及用法

SkyWalking介绍

部署

  1. Agent:在应用中,收集 Trace、Log、Metrics 等监控数据,使用 RPC、RESTful API、Kafka 等 Transport 传输方式,发送给 OAP 服务
  2. OAP:首先 Receiver 接收 Agent 发送的监控数据,然后 Aggregator 进行聚合计算,之后存储到 Storage 外部存储器,最终提供给 GUI 查询数据
  3. Storage:存储监控数据,支持 Elasticsearch、MySQL、TiDB、H2 等多种数据库
  4. GUI:UI 可视化界面,提供监控数据的查询后台
    在这里插入图片描述
部署Storage [单机版Elasticsearch]
  1. 修改用户的最大文件描述符数量到65535, /etc/security/limits.conf 添加下面的配置
    在这里插入图片描述
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535# 限制 root /普通用户的最大文件描述符数量为 65535。
  1. 配置再当前会话生效 (root账号执行)

ulimit -n 65536

  1. 增加 Linux 系统中的内存映射区域的最大数量 在/etc/sysctl.conf添加下面的配置
vm.max_map_count=655360# 默认情况下,Linux 系统通常会有一个较小的 vm.max_map_count 值,例如 1024。如果应用程序需要更高的映射区域(如 Elasticsearch),可能会因为超出该值而报错,增加这个值可以解决此问题。
  1. 执行命令,使配置立刻生效
sysctl -p
  1. 下载elasticsearch-6.7.2.tar.gz安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.tar.gztar -zxvf elasticsearch-6.7.2.tar.gzvim elasticsearch-6.7.2/config/elasticsearch.ymlnetwork.host: 0.0.0.0 # 允许外网访问    
  1. 修改启动脚本, 指定使用jdk1.8 (因为我的环境默认是jdk17, 当前版本的es需要1.8) 该步骤选做
vim bin/elasticsearch-env
# 添加下面的配置 (路径是jdk1.8的路径)
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64

在这里插入图片描述

  1. 安装分词器插件
cd elasticsearch-6.7.2wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.2/elasticsearch-analysis-ik-6.7.2.zip   unzip elasticsearch-analysis-ik-6.7.2.zip -d plugins/ik/
  1. 启动
bin/elasticsearch -d
  1. 查看是否部署成功, 浏览器查看 http://自己的ip:9200/

在这里插入图片描述

部署SkyWalking OAP 下载地址
  1. 下载脚本
wget https://archive.apache.org/dist/skywalking/9.4.0/apache-skywalking-apm-9.4.0.tar.gz
  1. 修改配置
vim config/application.yml
# storage.selector 修改成elasticsearch 默认h2
storage:selector: ${SW_STORAGE:elasticsearch}
  1. 另外需要自行调整es配置
    在这里插入图片描述
  2. 启动
 bin/oapService.sh start

SkyWalking OAP started successfully!
在这里插入图片描述

  1. 启动SkyWalking UI
 bin/./webappService.sh start

在这里插入图片描述
6. 访问ui

默认端口8080, webapp/webapp.yml 修改配置

server.port :SkyWalking UI 服务端口。
spring.cloud.discovery.client.simple.instances.oap-service :SkyWalking OAP 服务地址数组。因为 SkyWalking UI 界面的数据,是通过请求 SkyWalking OAP 服务来获得的

在这里插入图片描述

部署SkyWalking Java Agent
  1. 下载
wget https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz

springCloud 使用举例

  1. 启动脚本
#!/bin/bash# 配置 SkyWalking Agent 路径
SKYWALKING_AGENT_PATH="-javaagent:/Users/carsonlius/software/skywalking-agent"
# SkyWalking 配置文件(可选,如果需要自定义配置)
SKYWALKING_CONFIG_FILE="${SKYWALKING_AGENT_PATH}/config/agent.config"# 应用名称(在 SkyWalking 中显示的服务名)
APPLICATION_NAME="trade-server"# SkyWalking OAP Server 地址
SKYWALKING_COLLECTOR_SERVER="100.64.0.4:11800" # 替换为实际地址# JVM 启动参数
JAVA_OPTS="-javaagent:${SKYWALKING_AGENT_PATH}/skywalking-agent.jar"
JAVA_OPTS+=" -Dskywalking.agent.service_name=${APPLICATION_NAME}"
JAVA_OPTS+=" -Dskywalking.collector.backend_service=${SKYWALKING_COLLECTOR_SERVER}"# JAR 文件路径
JAR_FILE="trade-server.jar"# 运行应用
echo "Starting application with SkyWalking..."
java ${JAVA_OPTS} -jar ${JAR_FILE}
  1. 效果

在这里插入图片描述

在这里插入图片描述

追踪ID写入loki

  1. 自定义SkyWalkingTraceFilter

MDC 允许你为日志消息添加额外的上下文信息,例如:用户 ID、会话 ID、请求的追踪 ID(如 SkyWalking 的 traceId)。

package com.carsonlius.cloud.framework.common.filter;import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.skywalking.apm.toolkit.trace.TraceContext;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;import java.io.IOException;/*** skyWalking的追踪过滤器* @author carsonlius*/
@Component
public class SkyWalkingTraceFilter extends OncePerRequestFilter {private static final String TRACE_ID_KEY = "traceId";@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {try {MDC.put(TRACE_ID_KEY, TraceContext.traceId());// 继续过滤链filterChain.doFilter(request, response);}  finally {MDC.remove(TRACE_ID_KEY);}}
}
  1. 修改loki配置

修改日志模式 “traceId”: “%X{traceId}”,

    <appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender"><http><url>http://100.64.0.4:3100/loki/api/v1/push</url></http><format><label><pattern>application=${name},level=%level</pattern><readMarkers>true</readMarkers></label><message><pattern>{"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}","level": "%level","logger": "%logger{36}.%method","method":"%M","line":"%line","thread": "%thread","traceId": "%X{traceId}","message": "%msg%n"}</pattern></message><sortByTime>true</sortByTime></format></appender>
  1. loki 日志效果

在这里插入图片描述


http://www.mrgr.cn/news/79979.html

相关文章:

  • DLL注入(AppInit_DLLs)
  • 学习记录:js算法(一百二十三):不同路径 II
  • 2024首届世界酒中国菜国际地理标志产品美食文化节成功举办篇章
  • Qwen 论文阅读记录
  • 硬件成本5元-USB串口采集电表数据完整方案-ThingsPanel快速入门
  • 设计模式——Singleton(单例)设计模式
  • 【优选算法 模拟】模拟算法入门详解 : 模拟算法小专题
  • Gitlab ci/cd
  • Maven插件打包发布远程Docker镜像
  • strace,tcmalloc,asan使用
  • jmeter CLI Mode 传参实现动态设置用户数
  • 腾讯微信Android面试题及参考答案(多张原理图)
  • soul Java开发面试题及参考答案
  • 110.【C语言】数据结构之判断是否为完全二叉树
  • erlang 基于jose 实现 aes 加解密
  • 【C++】判断能否被 3, 5, 7 整除问题解析与优化
  • WIN11中安装Mamba常见问题解决方案
  • windows C#-自动实现属性的轻型类
  • Java项目实战II基于Java+Spring Boot+MySQL的社区帮扶对象管理系统的设计与实现(开发文档+数据库+源码)
  • src 和 href 的区别
  • 在AMD Instinct MI300X加速器上训练Transformers和混合模型
  • 深入解析C++中的函数指针与`typedef`的妙用
  • 快速上手Neo4j图关系数据库
  • 测试岗位应该学什么
  • 操作系统(3)操作系统的运行环境
  • 【他山之石】Leading-Trim: The Future of Digital Typesetting:数字排版的未来 —— Leading-Trim