当前位置: 首页 > 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

http://www.lryc.cn/news/460187.html

相关文章:

  • 超越GPT-4的视觉与文本理解能力,开源多模态模型领跑者 - Molmo
  • 输入输出--I/O流【C++提升】()
  • Maven 中央仓库地址推荐
  • Fastgpt本地化部署 - 以MAC为例
  • SpringBoot框架下购物推荐网站的设计模式与实现
  • Apache Flink 和 Apache Kafka
  • Excel中Ctrl+e的用法
  • 07-Cesium动态处理线条闪烁材质的属性
  • postgresql16分区表解析
  • 文字识别解决方案-OCR识别应用场景解析
  • Qt 每日面试题 -9
  • K8s环境下使用sidecar模式对EMQX的exhook.proto 进行流量代理
  • Dirble:一款高性能目录扫描与爬取工具
  • C#语言基础
  • 网络分析仪——提升网络性能的关键工具
  • 简单认识Maven 1
  • 鼠标右键删除使用Visual Studio 打开(v)以及恢复【超详细】
  • 如何缩短微商城系统推广周期
  • 电脑如何清理重复文件?方法很简单!
  • 【Linux】ioctl分析
  • 物联网通信会给人们的生活带来什么样的变化
  • Android 中获取当前 CPU 频率和占用率
  • pymobiledevice3使用介绍(安装、常用命令、访问iOS沙盒目录)
  • python 爬虫模拟登录
  • AOP基础、快速入门、进阶
  • 哪款宠物空净运行吸毛好、噪音小?希喂、霍尼韦尔、安德迈测评!
  • 新兴的安全职业挑战
  • 代码随想录算法训练营Day32 | 122.买卖股票的最佳时机Ⅱ、55.跳跃游戏、45.跳跃游戏Ⅱ、1005.K次取反后最大化的数组和
  • 3D Slicer 教程一
  • github pages + hugo 搭建静态博客网站