# PiggyMetrics **Repository Path**: xueshiqing/PiggyMetrics ## Basic Information - **Project Name**: PiggyMetrics - **Description**: 多组件分布式应用行为追踪演示 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 36 - **Forks**: 20 - **Created**: 2019-08-20 - **Last Updated**: 2025-05-26 ## Categories & Tags **Categories**: distributed-service **Tags**: None ## README # 多组件分布式应用行为追踪演示 ## 基本信息 授权协议:GPL 操作系统:Centos 开发语言:JAVA 开发单位: 北京航空航天大学 项目网站: https://xueshiqing.github.io/ 项目源码下载: https://gitee.com/xueshiqing/PiggyMetrics ## 项目描述 多组件分布式应用行为追踪演示项目基于PiggyMetrics分布式微服务系统(一个基于微服务的在线记账系统)进行请求链路追踪扩展,由北京航空航天大学倾力打造。 主要面向未来基于微服务的大型分布式应用,通过提供请求链路追踪库来完成对上层应用请求链路的追踪与分析,以辅助后续应用 性能优化、集群资源分配和部署优化、应用请求状态监控。目前提供请求链路追踪、请求组件图构建、关键路径分析和关键组件评估等功能, 并提供统一标准上层接口以适配不同微服务应用。 ## 技术架构 1. 后端 - 基础框架:SpringCloud,Docker,ZUUL,ELK - 持久层框架:mongoDB - 消息队列:rabbitmq - 缓存框架:redis - 日志打印:log4j - 其他:fastjson,quartz等 2. 开发环境 - 语言:JAVA - IDE:IDEA - 依赖管理:Maven - 数据库:mongoDB - 缓存:redis ## 功能模块 - 请求链路追踪 - 请求组件图构建 - 关键路径分析 - 关键组件评估 ## 后台开发环境和依赖 - java - maven - jdk8 - SpringCloud - docker - mongoDB ## 项目下载和运行 - 拉取项目代码 ``` git clone url ``` - 编译 ``` mvn clean; mvn package; ``` - 运行 - 镜像生成 ``` gateway latest a532a250efa1 6 weeks ago 349 MB monitoring latest 1d4485f6c5ed 6 weeks ago 352 MB notification-service latest a7b696ecf66a 6 weeks ago 355 MB statistics-service latest 2464eaa4a1d7 6 weeks ago 354 MB account-service latest fb3dcff48ff4 6 weeks ago 354 MB auth-service latest 1bbbc17418ff 6 weeks ago 350 MB account-mongo-service latest 2b0b84d3d8a1 6 weeks ago 642 MB registry latest 216c1f736617 6 weeks ago 348 MB config latest c3e41d5ae3c7 6 weeks ago 333 MB rabbitmq latest 5a8b7f36d59f 7 weeks ago 151 MB docker-base latest 17a1ba013238 2 months ago 100 MB redis 3 1200574c8af9 2 months ago 366 MB rabbitmq 3-management 6cb6e2f951a8 2 months ago 151 MB statistics-mongo-service latest 17a1ba013238 2 months ago 100 MB notification-mongo-service latest 17a1ba013238 2 months ago 100 MB ``` - 镜像运行 注意:里面的192开头的ip都换成自己的ip 1. 启动redis docker run -d --name redis -p 6379:6379 redis 1. 运行rabbitmq docker run -d -p 5672:5672 -p 15672:15672 --name=rabbitmq rabbitmq:3-management
通过 ip:15672/ 查看是否成功启动 账号是 user 密码是 root 2. 运行config--配置服务器 docker run -d -p 8888:8888 -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} --name=config config
通过ip:8888/gateway/default 如果能读取配置文件 即成功 3. 运行eureka -- 注册中心 docker run -d -p 8761:8761 -e REGISTRY_PORT=8761 -e CONFIG_PORT=8888 -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} --add-host config:192.168.1.191 --add-host registry:192.168.1.191 --name=registry registry
通过ip:8761验证 4. 启动auth-service docker run -d -p 5000:5000 -e SERVICE_PORT=5000 -e AUTH_SERVICE_PORT=5000 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} -e NOTIFICATION_SERVICE_PASSWORD=${NOTIFICATION_SERVICE_PASSWORD} -e STATISTICS_SERVICE_PASSWORD=${STATISTICS_SERVICE_PASSWORD} -e ACCOUNT_SERVICE_PASSWORD=${ACCOUNT_SERVICE_PASSWORD} -e MONGODB_PASSWORD=${MONGODB_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --name=auth-service auth-service 通过mongo 192.168.4.201/piggymetrics -u user -p root验证 5. 启动account-mongo-service docker run -d -p 7777:7777 -e SERVICE_PORT=7777 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} -e INIT_DUMP=/account-service-dump.js -e NOTIFICATION_SERVICE_PASSWORD=${NOTIFICATION_SERVICE_PASSWORD} -e STATISTICS_SERVICE_PASSWORD=${STATISTICS_SERVICE_PASSWORD} -e ACCOUNT_SERVICE_PASSWORD=${ACCOUNT_SERVICE_PASSWORD} -e MONGODB_PASSWORD=${MONGODB_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host rabbitmq:192.168.1.191 -e RABBITMQ_PORT=5672 --add-host auth-service:192.168.1.191 -e AUTH_SERVICE_PORT=5000 --name=account-mongo-service account-mongo-service
可通过eureka面板查看服务是否注册 6. 启动account-service docker run -d -p 6000:6000 -e SERVICE_PORT=6000 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} -e ACCOUNT_SERVICE_PASSWORD=${ACCOUNT_SERVICE_PASSWORD} -e MONGODB_PASSWORD=${MONGODB_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host rabbitmq:192.168.1.191 -e RABBITMQ_PORT=5672 --add-host auth-service:192.168.1.191 -e AUTH_SERVICE_PORT=5000 --name=account-service account-service
可通过eureka面板查看服务是否注册 12. 启动gateway docker run -d -p 4000:4000 -e SERVICE_PORT=4000 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host auth-service:192.168.1.191 -e AUTH_SERVICE_PORT=5000 --name=gateway gateway
通过ip:4000访问 7. 启动statistics-mongo-service docker run -d -p 7778:7778 -e SERVICE_PORT=7778 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} -e NOTIFICATION_SERVICE_PASSWORD=${NOTIFICATION_SERVICE_PASSWORD} -e STATISTICS_SERVICE_PASSWORD=${STATISTICS_SERVICE_PASSWORD} -e ACCOUNT_SERVICE_PASSWORD=${ACCOUNT_SERVICE_PASSWORD} -e MONGODB_PASSWORD=${MONGODB_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host rabbitmq:192.168.1.191 -e RABBITMQ_PORT=5672 --add-host auth-service:192.168.1.191 -e AUTH_SERVICE_PORT=5000 --name=statistics-mongo-service statistics-mongo-service
可通过eureka面板查看服务是否注册 8. 启动statistics-service docker run -d -p 7000:7000 -e SERVICE_PORT=7000 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} -e STATISTICS_SERVICE_PASSWORD=${STATISTICS_SERVICE_PASSWORD} -e MONGODB_PASSWORD=${MONGODB_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host auth-service:192.168.1.191 -e AUTH_SERVICE_PORT=5000 --add-host rabbitmq:192.168.1.191 -e RABBITMQ_PORT=5672 --name=statistics-service statistics-service
可通过eureka面板查看服务是否注册 9. 启动notification-mongo-service docker run -d -p 7779:7779 -e SERVICE_PORT=7779 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} -e NOTIFICATION_SERVICE_PASSWORD=${NOTIFICATION_SERVICE_PASSWORD} -e STATISTICS_SERVICE_PASSWORD=${STATISTICS_SERVICE_PASSWORD} -e ACCOUNT_SERVICE_PASSWORD=${ACCOUNT_SERVICE_PASSWORD} -e MONGODB_PASSWORD=${MONGODB_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host rabbitmq:192.168.1.191 -e RABBITMQ_PORT=5672 --add-host auth-service:192.168.1.191 -e AUTH_SERVICE_PORT=5000 --name=notification-mongo-service notification-mongo-service
可通过eureka面板查看服务是否注册 10. 启动notification-service docker run -d -p 8000:8000 -e SERVICE_PORT=8000 -e HOST_IP=192.168.1.191 -e REDIS_IP=${REDIS_IP} -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} -e NOTIFICATION_SERVICE_PASSWORD=${NOTIFICATION_SERVICE_PASSWORD} -e MONGODB_PASSWORD=${MONGODB_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host auth-service:192.168.1.191 -e AUTH_SERVICE_PORT=5000 --add-host rabbitmq:192.168.1.191 -e RABBITMQ_PORT=5672 --name=notification-service notification-service
可通过eureka面板查看服务是否注册 11. 启动monitoring docker run -d -p 8989:8989 -p 8080:8080 -e HOST_IP=192.168.1.191 -e CONFIG_SERVICE_PASSWORD=${CONFIG_SERVICE_PASSWORD} --add-host config:192.168.1.191 -e CONFIG_PORT=8888 --add-host registry:192.168.1.191 -e REGISTRY_PORT=8761 --add-host rabbitmq:192.168.1.191 -e RABBITMQ_PORT=5672 --name=monitoring monitoring
通过http://192.168.1.191:8080/hystrix 在地址栏输入http://192.168.1.191:8989查看监控 ## 附件下载