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

zipkin启动脚本并指定mysql数据存储

#!/bin/bash# 配置部分 ############################################################## Zipkin JAR 文件的名称
# 这里指定了 Zipkin 的可执行 JAR 文件,确保该文件在当前目录中可用。
ZIPKIN_JAR="zipkin-server-2.23.2-exec.jar"# PID 文件的位置
# 该文件用于存储运行中 Zipkin 进程的 PID (Process ID)。用于后续检查进程是否在运行,或停止它。
ZIPKIN_PID_FILE="zipkin.pid"# 日志文件的位置
# Zipkin 的日志输出将被重定向到此文件中。
ZIPKIN_LOG_FILE="zipkin.log"# MySQL 配置 ############################################################## Zipkin 的存储类型,指定为 MySQL
STORAGE_TYPE="mysql"# MySQL 数据库的连接主机,使用阿里云的 MySQL RDS 地址
MYSQL_HOST="rm-xx.mysql.rds.aliyuncs.com"# MySQL 数据库的用户名
MYSQL_USER="root"# MySQL 数据库的密码
MYSQL_PASS="123456"# MySQL 数据库的名称
MYSQL_DB="zipkin"# 启动 Zipkin 的命令 #####################################################
# 指定时区 Asia/Shanghai 及使用 MySQL 存储
# 该函数用于启动 Zipkin,使用指定的存储设置 (MySQL) 和时区 (Asia/Shanghai)。
start_zipkin() {# 使用 nohup 命令后台启动 Zipkin,避免其受到终端关闭的影响。# -Duser.timezone=Asia/Shanghai 用于指定 Zipkin 进程的时区为中国标准时间 (UTC+8)。nohup java -Duser.timezone=Asia/Shanghai -jar $ZIPKIN_JAR \--STORAGE_TYPE=$STORAGE_TYPE \--MYSQL_HOST=$MYSQL_HOST \--MYSQL_USER=$MYSQL_USER \--MYSQL_PASS=$MYSQL_PASS \--MYSQL_DB=$MYSQL_DB \> $ZIPKIN_LOG_FILE 2>&1 &# 获取启动的进程 ID,并存入 PID 文件# 使用 `$!` 获取最后一个后台进程的 PID,并将其写入到 PID 文件中,以便后续使用。echo $! > $ZIPKIN_PID_FILEecho "Zipkin started with PID $(cat $ZIPKIN_PID_FILE)"
}# 停止 Zipkin 的命令 #####################################################
# 该函数用于停止运行中的 Zipkin 进程。
stop_zipkin() {# 检查 PID 文件是否存在,确保 Zipkin 进程正在运行if [ -f "$ZIPKIN_PID_FILE" ]; then# 读取 PID 文件中的进程 IDPID=$(cat $ZIPKIN_PID_FILE)# 检查该进程是否正在运行if ps -p $PID > /dev/null 2>&1; thenecho "Stopping Zipkin (PID: $PID)..."# 尝试正常停止进程kill $PIDsleep 5  # 等待 5 秒钟,确保进程有时间正常停止# 再次检查进程是否仍在运行if ps -p $PID > /dev/null 2>&1; thenecho "Failed to stop Zipkin. Force killing it..."# 如果进程未停止,则强制终止进程kill -9 $PIDfi# 删除 PID 文件,表示 Zipkin 已停止rm -f $ZIPKIN_PID_FILEecho "Zipkin stopped."elseecho "Zipkin is not running, but PID file exists. Cleaning up..."# 如果进程不存在但 PID 文件存在,清理无效的 PID 文件rm -f $ZIPKIN_PID_FILEfielseecho "No PID file found. Zipkin may not be running."fi
}# 检查 Zipkin 是否在运行 ##################################################
# 该函数用于检查 Zipkin 是否正在运行。
is_running() {# 检查 PID 文件是否存在if [ -f "$ZIPKIN_PID_FILE" ]; then# 读取 PID 文件中的进程 IDPID=$(cat $ZIPKIN_PID_FILE)# 检查该进程是否正在运行if ps -p $PID > /dev/null 2>&1; thenreturn 0  # 返回 0 表示进程正在运行elsereturn 1  # 返回 1 表示 PID 文件存在但进程不在运行fielsereturn 1  # 返回 1 表示没有 PID 文件,认为 Zipkin 未运行fi
}# 主逻辑 #################################################################
# 该部分是脚本的主逻辑,控制 Zipkin 的启动和停止操作。# 首先检查 Zipkin 是否在运行
if is_running; then# 如果 Zipkin 正在运行,先停止它echo "Zipkin is already running. Stopping it first..."stop_zipkin
fi# 启动 Zipkin
echo "Starting Zipkin..."
start_zipkin

脚本说明

1. 配置部分
  • ZIPKIN_JAR:指定 Zipkin 的可执行 JAR 文件,确保该文件在当前工作目录中存在。
  • ZIPKIN_PID_FILE:存储 Zipkin 进程的 PID,用于停止或检查进程是否在运行。
  • ZIPKIN_LOG_FILE:指定 Zipkin 运行日志的输出文件路径。
  • STORAGE_TYPEMYSQL_HOSTMYSQL_USERMYSQL_PASSMYSQL_DB:用于配置 Zipkin 的存储后端为 MySQL,并提供连接信息。

2. 启动 Zipkin (start_zipkin 函数)

  • 该函数用于启动 Zipkin,并将其日志输出到指定的日志文件中,同时将进程的 PID 存储到 PID 文件中。
  • 通过 -Duser.timezone=Asia/Shanghai,指定了 Zipkin 运行的时区为 Asia/Shanghai(中国标准时间,UTC+8)。
  • 使用 nohup 命令确保 Zipkin 在后台运行,即使终端关闭也不会影响 Zipkin 的运行。

3. 停止 Zipkin (stop_zipkin 函数)

  • 该函数用于停止 Zipkin 进程。
  • 它首先检查 PID 文件是否存在,如果存在则读取 PID 并检查进程是否在运行。
  • 如果进程正在运行,首先尝试正常停止它。如果在 5 秒内未能停止进程,则使用 kill -9 强制终止进程。
  • 完成后,删除 PID 文件。

4. 检查 Zipkin 是否在运行 (is_running 函数)

  • 该函数通过检查 PID 文件是否存在,并验证 PID 对应的进程是否在运行,来判断 Zipkin 是否正在运行。
  • 如果进程正在运行,返回 0;否则返回 1

5. 主逻辑

  • 主逻辑首先调用 is_running 函数,检查 Zipkin 是否在运行。
  • 如果 Zipkin 正在运行,先调用 stop_zipkin 函数停止它。
  • 最后调用 start_zipkin 函数启动 Zipkin

使用说明

  1. 保存脚本
    将上面的脚本保存为 zipkin_control.sh,并赋予可执行权限:

    chmod +x zipkin_control.sh

  2. 启动或重启 Zipkin
    运行脚本时,它会先检查 Zipkin 是否正在运行。如果正在运行,则停止它,然后重新启动。

./zipkin_control.sh
  1. 日志查看
    你可以通过查看 zipkin.log 文件来监控 Zipkin 的输出日志:

    tail -f zipkin.log

总结

  • 该脚本自动处理 Zipkin 的启动和停止操作,并记录日志和进程信息。
  • 通过使用 PID 文件,可以确保脚本能正确识别并管理 Zipkin 进程。
  • 通过 -Duser.timezone 参数,设置了 Zipkin 的时区,确保日志输出符合指定时区。
  • 启动成功查看地址:http://127.0.0.1:9411/  服务器ip+ 默认端口9411
  • 查询启动情况 ps aux | grep zipkin

相关文章:

zipkin启动脚本并指定mysql数据存储

#!/bin/bash# 配置部分 ############################################################## Zipkin JAR 文件的名称 # 这里指定了 Zipkin 的可执行 JAR 文件,确保该文件在当前目录中可用。 ZIPKIN_JAR"zipkin-server-2.23.2-exec.jar"# PID 文件的位置 # 该…...

超越GPT-4的视觉与文本理解能力,开源多模态模型领跑者 - Molmo

Molmo是由艾伦人工智能研究所(Ai2)发布的一系列多模态人工智能模型,旨在提高开放系统在性能上与专有系统(如商业模型)之间的竞争力。以下是对Molmo的详细总结: Molmo是什么: Molmo是基于Qwen2和…...

输入输出--I/O流【C++提升】()

1.1基础知识&#xff1a; 在C中&#xff0c;输入输出&#xff08;IO&#xff09;流是通过标准库中的 <iostream> 头文件来处理的。C 提供了几种基本的输入输出流类&#xff0c;最常用的有以下几种&#xff1a; std::cin&#xff1a;用于输入。std::cout&#xff1a;用于…...

Maven 中央仓库地址推荐

目录 Maven 中央仓库地址推荐 Maven Maven 中央仓库概述 什么是 Maven 中央仓库&#xff1f; 中央仓库的作用 常用的 Maven 中央仓库地址 官方 Maven 中央仓库 阿里云 Maven 中央仓库镜像 腾讯云 Maven 中央仓库镜像 网易 Maven 中央仓库镜像 华为云 Maven 中央仓库…...

Fastgpt本地化部署 - 以MAC为例

1.认识fastgpt 2.私有化部署 MongoDB&#xff1a;用于存储除了向量外的各类数据PostgreSQL/Milvus&#xff1a;存储向量数据OneAPI: 聚合各类 AI API&#xff0c;支持多模型调用 &#xff08;任何模型问题&#xff0c;先自行通过 OneAPI 测试校验&#xff09; &#xff08;1&a…...

SpringBoot框架下购物推荐网站的设计模式与实现

3系统分析 3.1可行性分析 通过对本东大每日推购物推荐网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本东大每日推购物推荐网站采用JAVA作为开发语言&…...

Apache Flink 和 Apache Kafka

Apache Flink 和 Apache Kafka 都是大数据生态系统中非常重要的工具&#xff0c;但它们的作用和应用场景有所不同。下面将分别介绍两者的主要特性和它们之间的异同点。 Apache Kafka 作用&#xff1a; 消息队列&#xff1a;Kafka 主要作为消息队列使用&#xff0c;用于解耦生…...

Excel中Ctrl+e的用法

重点&#xff1a;想要使用ctrle&#xff0c;前提是整合或拆分后的结果放置的单元格必须和被提取信息的单元格相邻&#xff0c;且被提取信息的单元格也必须相连。 下图为错误示例 这样则可以使用ctrle 1、信息整合 2、提取信息 3、添加符号 4、信息顺序调换 5、数字提取 crtle还…...

07-Cesium动态处理线条闪烁材质的属性

这段代码定义了 LineFlickerMaterialProperty 类,用于管理线条闪烁材质的属性。构造函数接收颜色和速度作为选项,类包含动态属性 isConstant 和 definitionChanged,以及获取材质类型和当前属性值的方法。getValue 方法返回颜色和速度的当前值,equals 方法用于比较两个实例是…...

postgresql16分区表解析

PostgreSQL 16 引入了对分区表的多项改进&#xff0c;增强了其性能和可用性。本文介绍PostgreSQL 16 中分区表功能&#xff0c;包括基本概念、创建方法、管理技巧以及一些最佳实践。 分区表的基本概念 分区表是一种将大表物理分割成更小、更易管理的部分的技术。每个部分称为…...

文字识别解决方案-OCR识别应用场景解析

光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;技术是一种将图像中的文字转换为可编辑和可搜索的数据的技术。随着人工智能和机器学习的发展&#xff0c;OCR技术的应用场景越来越广泛&#xff0c;为文字录入场景带来了革命性的变革&#xff0c;下面以…...

Qt 每日面试题 -9

81、请写一个调用消息对话框提示报错的程序 QMessageBox::waring(this,tr("警告"), tr("用户名或密码错误!"),QMessageBox::Yes)82、Qt都提供哪些标准对话框以供使用&#xff0c;他们实现什么功能? Qt提供9个标准对话框: QColorDialog 颜色对话框&…...

K8s环境下使用sidecar模式对EMQX的exhook.proto 进行流量代理

背景 在使用emqx作为mqtt时需要我们需要拦截client的各种行为&#xff0c;如连接&#xff0c;发送消息&#xff0c;认证等。除了使用emqx自带的插件机制。我们也可以用多语言-钩子扩展来实现这个功能&#xff0c;但是目前emqx仅仅支持单个grpc服务端的设置&#xff0c;所以会有…...

Dirble:一款高性能目录扫描与爬取工具

今天给大家介绍的是一款名叫Dirble工具&#xff0c;它是一款易于使用的高性能网站目录扫描工具。该工具针对Windows和Linux平台设计&#xff0c;在Dirble的帮助下&#xff0c;广大安全研究人员可以快速对目标站点进行目录扫描和资源爬取。 工具安装 广大研究人员可以使用下列…...

C#语言基础

GitHub - babbittry/Csharp-notes: C# 课程笔记https://github.com/babbittry/Csharp-notes?tabreadme-ov-file#net%E6%98%AF%E4%BB%80%E4%B9%88 C# 数据类型 | 菜鸟教程 (runoob.com)https://www.runoob.com/csharp/csharp-data-types.html 语法基础 一、命名空间、类、方…...

网络分析仪——提升网络性能的关键工具

目录 什么是网络分析仪&#xff1f; 1. 实时流量监控 2. 历史数据回溯分析 3. 网络性能关键指标监测 4. 可视化界面与报告生成 总结 在当今的数字化世界&#xff0c;网络的稳定性和性能直接影响企业的运营效率。网络拥堵、延迟和丢包等问题会导致用户体验的下降&#xff…...

简单认识Maven 1

1.基本概念 Maven 是一个开源的项目管理和构建工具&#xff0c;主要用于 Java 项目&#xff0c;但也支持其他基于 JVM&#xff08;Java Virtual Machine&#xff09;的项目&#xff0c;如 Scala、Groovy 等。它基于项目对象模型&#xff08;Project Object Model&#xff0c;P…...

鼠标右键删除使用Visual Studio 打开(v)以及恢复【超详细】

鼠标右键删除使用Visual Studio 打开&#xff08;v&#xff09; 1. 引言2. 打开注册表3. 进入对应的注册表地址4. 右键删除 AnyCode 项5. 效果6. 备份注册表文件——恢复菜单 1. 引言 安装完 Visual Studio 鼠标右键总有 “使用Visual Studio 打开(v)”&#xff0c;让右键菜单…...

如何缩短微商城系统推广周期

前言 微商城系统的推广周期是企业关注的重点之一。为了缩短推广周期&#xff0c;企业需要采取一系列有效的策略和措施。以下是对如何缩短微商城系统推广周期的详细介绍&#xff1a; 一、明确目标用户群体 在推广之前&#xff0c;企业需要明确自己的目标用户群体是谁&#xf…...

电脑如何清理重复文件?方法很简单!

清理重复文件能够有效释放存储空间&#xff0c;提高系统运行效率。长期堆积的重复文件会导致硬盘空间不足&#xff0c;从而影响系统性能。此外&#xff0c;清理文件还能帮助用户更好地管理和组织文件&#xff0c;避免因文件混乱而浪费时间。 常见的重复文件类型 重复文件可以是…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...