├── .gitignore ├── LICENSE ├── README.md ├── architecture.png ├── build.gradle ├── build.sh ├── docker-compose.yml ├── settings.gradle ├── skyeye-agent ├── .gitignore ├── README.md ├── build.gradle ├── image │ ├── Dockerfile │ ├── build.sh │ └── run.sh ├── settings.gradle └── src │ └── main │ └── java │ └── com │ └── jthink │ └── skyeye │ └── agent │ └── launcher │ └── Launcher.java ├── skyeye-alarm ├── .gitignore ├── README.md ├── build.gradle ├── image │ ├── Dockerfile │ ├── build.sh │ └── run.sh ├── settings.gradle └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── alarm │ │ │ ├── configuration │ │ │ ├── amqp │ │ │ │ └── AmqpConfiguration.java │ │ │ ├── dingding │ │ │ │ └── DingdingProperties.java │ │ │ ├── mail │ │ │ │ └── MailProperties.java │ │ │ └── wechat │ │ │ │ └── WechatProperties.java │ │ │ ├── dto │ │ │ └── DingDingDto.java │ │ │ ├── launcher │ │ │ └── Launcher.java │ │ │ ├── listener │ │ │ └── SyncRequestListener.java │ │ │ └── service │ │ │ ├── DingDingService.java │ │ │ ├── MailService.java │ │ │ └── WechatService.java │ └── resources │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── logback.xml │ │ └── properties │ │ └── alarm.properties │ └── test │ └── java │ └── com │ └── jthink │ └── skyeye │ └── alarm │ └── test │ └── mail │ └── MailTest.java ├── skyeye-base ├── .gitignore ├── README.md ├── build.gradle ├── settings.gradle └── src │ ├── main │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── base │ │ ├── constant │ │ ├── Constants.java │ │ ├── EventType.java │ │ ├── LogCollectionStatus.java │ │ ├── LogLevel.java │ │ ├── MiddleWare.java │ │ ├── NameInfoType.java │ │ ├── Opt.java │ │ ├── RpcType.java │ │ └── TimeUnit.java │ │ ├── dapper │ │ ├── Annotation.java │ │ ├── AnnotationType.java │ │ ├── BinaryAnnotation.java │ │ ├── EndPoint.java │ │ ├── ExceptionType.java │ │ ├── NodeProperty.java │ │ └── Span.java │ │ ├── dto │ │ ├── AlertDto.java │ │ ├── ApiLog.java │ │ ├── EventLog.java │ │ ├── FileDto.java │ │ ├── LogDto.java │ │ ├── MailDto.java │ │ └── RpcTraceLog.java │ │ ├── sql │ │ ├── Condition.java │ │ ├── ConditionOrder.java │ │ ├── From.java │ │ ├── Func.java │ │ ├── GroupBy.java │ │ ├── Opt.java │ │ ├── OrderBy.java │ │ ├── OrderDesc.java │ │ ├── Select.java │ │ ├── SelectColumn.java │ │ ├── SqlBuildException.java │ │ └── Where.java │ │ └── util │ │ ├── DateUtil.java │ │ ├── DockerHostUtil.java │ │ └── StringUtil.java │ └── test │ └── java │ └── com │ └── jthink │ └── skyeye │ └── base │ └── log │ └── event │ └── EventLogTest.java ├── skyeye-benchmark ├── .gitignore ├── README.md ├── doc │ └── Test Case of SkyEye.xls ├── dubbo-service │ ├── .gitignore │ ├── build.gradle │ ├── dubbo-service-a │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── jthink │ │ │ │ └── skyeye │ │ │ │ └── benchmark │ │ │ │ └── dubbo │ │ │ │ └── service │ │ │ │ └── a │ │ │ │ ├── application │ │ │ │ └── Application.java │ │ │ │ ├── configuration │ │ │ │ └── dubbo │ │ │ │ │ └── DubboConfiguration.java │ │ │ │ ├── controller │ │ │ │ └── TraceController.java │ │ │ │ └── service │ │ │ │ └── TraceService.java │ │ │ └── resources │ │ │ ├── application.properties │ │ │ └── logback.xml │ ├── dubbo-service-b │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── jthink │ │ │ │ └── skyeye │ │ │ │ └── benchmark │ │ │ │ └── dubbo │ │ │ │ └── service │ │ │ │ └── b │ │ │ │ ├── configuration │ │ │ │ └── dubbo │ │ │ │ │ └── DubboConfiguration.java │ │ │ │ ├── launcher │ │ │ │ └── Launcher.java │ │ │ │ └── service │ │ │ │ └── ServiceBImpl.java │ │ │ └── resources │ │ │ ├── application.properties │ │ │ └── logback.xml │ ├── dubbo-service-c │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── jthink │ │ │ │ └── skyeye │ │ │ │ └── benchmark │ │ │ │ └── dubbo │ │ │ │ └── service │ │ │ │ └── c │ │ │ │ ├── configuration │ │ │ │ └── dubbo │ │ │ │ │ └── DubboConfiguration.java │ │ │ │ ├── launcher │ │ │ │ └── Launcher.java │ │ │ │ └── service │ │ │ │ └── ServiceCImpl.java │ │ │ └── resources │ │ │ ├── application.properties │ │ │ └── logback.xml │ ├── dubbo-service-client │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── benchmark │ │ │ └── dubbo │ │ │ └── service │ │ │ └── client │ │ │ ├── ServiceB.java │ │ │ ├── ServiceC.java │ │ │ ├── ServiceD.java │ │ │ └── ServiceE.java │ ├── dubbo-service-d │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── jthink │ │ │ │ └── skyeye │ │ │ │ └── benchmark │ │ │ │ └── dubbo │ │ │ │ └── service │ │ │ │ └── d │ │ │ │ ├── configuration │ │ │ │ └── dubbo │ │ │ │ │ └── DubboConfiguration.java │ │ │ │ ├── launcher │ │ │ │ └── Launcher.java │ │ │ │ └── service │ │ │ │ └── ServiceDImpl.java │ │ │ └── resources │ │ │ ├── application.properties │ │ │ └── logback.xml │ ├── dubbo-service-e │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── image │ │ │ ├── Dockerfile │ │ │ ├── build.sh │ │ │ └── run.sh │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── jthink │ │ │ │ └── skyeye │ │ │ │ └── benchmark │ │ │ │ └── dubbo │ │ │ │ └── service │ │ │ │ └── e │ │ │ │ ├── configuration │ │ │ │ └── dubbo │ │ │ │ │ └── DubboConfiguration.java │ │ │ │ ├── launcher │ │ │ │ └── Launcher.java │ │ │ │ └── service │ │ │ │ └── ServiceEImpl.java │ │ │ └── resources │ │ │ ├── application.properties │ │ │ └── logback.xml │ ├── performance-test │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── benchmark │ │ │ └── performance │ │ │ └── test │ │ │ ├── launcher │ │ │ └── Launcher.java │ │ │ └── task │ │ │ └── RpcCaller.java │ └── settings.gradle ├── hi-log │ ├── .gitignore │ ├── build.gradle │ ├── hi-log-log4j2 │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── image │ │ │ ├── Dockerfile │ │ │ ├── build.sh │ │ │ └── run.sh │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── jthink │ │ │ │ └── skyeye │ │ │ │ └── benchmark │ │ │ │ └── hi │ │ │ │ └── log │ │ │ │ └── log4j2 │ │ │ │ └── launcher │ │ │ │ └── Launcher.java │ │ │ └── resources │ │ │ └── log4j2.xml │ └── settings.gradle ├── log-generater │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── benchmark │ │ │ └── log │ │ │ └── generater │ │ │ ├── launcher │ │ │ └── Launcher.java │ │ │ ├── service │ │ │ └── GenerateLogService.java │ │ │ ├── task │ │ │ └── GenerateLog.java │ │ │ └── util │ │ │ └── RandomSeed.java │ │ └── resources │ │ ├── application.properties │ │ ├── logback.xml │ │ └── properties │ │ └── log-generater.properties └── spring-cloud-service │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ ├── spring-cloud-service-a │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── benchmark │ │ │ └── spring │ │ │ └── cloud │ │ │ └── service │ │ │ └── a │ │ │ ├── application │ │ │ └── Application.java │ │ │ ├── controller │ │ │ └── TraceController.java │ │ │ └── service │ │ │ └── TraceService.java │ │ └── resources │ │ ├── application.properties │ │ ├── logback.xml │ │ └── properties │ │ └── service-a.properties │ ├── spring-cloud-service-b │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── benchmark │ │ │ └── spring │ │ │ └── cloud │ │ │ └── service │ │ │ └── b │ │ │ ├── application │ │ │ └── Application.java │ │ │ └── controller │ │ │ └── ServiceController.java │ │ └── resources │ │ ├── application.properties │ │ ├── logback.xml │ │ └── properties │ │ └── service-b.properties │ └── spring-cloud-service-client │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ └── main │ └── java │ └── com │ └── jthink │ └── skyeye │ └── benchmark │ └── spring │ └── cloud │ └── service │ └── client │ ├── fallback │ ├── ServiceBFallbackFactory.java │ ├── ServiceCFallbackFactory.java │ ├── ServiceDFallbackFactory.java │ └── ServiceEFallbackFactory.java │ └── iface │ ├── ServiceB.java │ ├── ServiceC.java │ ├── ServiceD.java │ └── ServiceE.java ├── skyeye-client ├── .gitignore ├── README.md ├── build.gradle ├── settings.gradle ├── skyeye-client-core │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── client │ │ │ └── core │ │ │ ├── constant │ │ │ ├── KafkaConfig.java │ │ │ └── NodeMode.java │ │ │ ├── kafka │ │ │ └── partitioner │ │ │ │ └── KeyModPartitioner.java │ │ │ ├── producer │ │ │ └── LazySingletonProducer.java │ │ │ ├── register │ │ │ └── ZkRegister.java │ │ │ └── util │ │ │ └── SysUtil.java │ │ └── test │ │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── client │ │ └── core │ │ ├── kafka │ │ ├── logback │ │ │ └── test │ │ │ │ └── KafkaProducerDemo.java │ │ └── partition │ │ │ └── test │ │ │ └── PartitionTest.java │ │ └── zk │ │ └── test │ │ └── ZkTest.java ├── skyeye-client-log4j │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── client │ │ └── log4j │ │ └── appender │ │ └── KafkaAppender.java ├── skyeye-client-log4j2 │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── client │ │ └── log4j2 │ │ └── appender │ │ ├── KafkaAppender.java │ │ └── KafkaManager.java ├── skyeye-client-logback │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── client │ │ └── logback │ │ ├── appender │ │ └── KafkaAppender.java │ │ ├── builder │ │ ├── AppHostKeyBuilder.java │ │ └── KeyBuilder.java │ │ └── encoder │ │ └── KafkaLayoutEncoder.java └── zknode.png ├── skyeye-collector ├── .gitignore ├── README.md ├── build.gradle ├── column.png ├── settings.gradle ├── skyeye-collector-backup │ ├── .gitignore │ ├── build.gradle │ ├── image │ │ ├── Dockerfile │ │ ├── build.sh │ │ └── run.sh │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── collector │ │ │ └── backup │ │ │ ├── balancer │ │ │ └── HandleRebalance.java │ │ │ ├── configuration │ │ │ └── hadoop │ │ │ │ ├── HadoopConfiguration.java │ │ │ │ └── HadoopProperties.java │ │ │ ├── launcher │ │ │ └── Launcher.java │ │ │ ├── task │ │ │ ├── BackupTask.java │ │ │ └── UploadTask.java │ │ │ └── util │ │ │ └── FileUtil.java │ │ └── resources │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── logback.xml │ │ └── properties │ │ └── collector-backup.properties ├── skyeye-collector-core │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── jthink │ │ │ │ └── skyeye │ │ │ │ └── collector │ │ │ │ └── core │ │ │ │ ├── callback │ │ │ │ └── KafkaOffsetCommitCallback.java │ │ │ │ ├── configuration │ │ │ │ ├── es │ │ │ │ │ ├── EsConfiguration.java │ │ │ │ │ └── EsProperties.java │ │ │ │ └── kafka │ │ │ │ │ ├── KafkaConfiguration.java │ │ │ │ │ └── KafkaProperties.java │ │ │ │ ├── hook │ │ │ │ └── ShutdownHookRunner.java │ │ │ │ └── task │ │ │ │ └── Task.java │ │ └── resources │ │ │ └── shell │ │ │ └── create-topic.sh │ │ └── test │ │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── collector │ │ └── core │ │ └── test │ │ └── KafkaConsumerTest.java ├── skyeye-collector-indexer │ ├── .gitignore │ ├── build.gradle │ ├── image │ │ ├── Dockerfile │ │ ├── build.sh │ │ └── run.sh │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── collector │ │ │ └── indexer │ │ │ ├── balancer │ │ │ └── HandleRebalance.java │ │ │ ├── launcher │ │ │ └── Launcher.java │ │ │ └── task │ │ │ └── IndexerTask.java │ │ └── resources │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── logback.xml │ │ ├── properties │ │ └── collector-indexer.properties │ │ └── shell │ │ ├── create-index.py │ │ ├── install.sh │ │ └── start.sh ├── skyeye-collector-metrics │ ├── .gitignore │ ├── build.gradle │ ├── image │ │ ├── Dockerfile │ │ ├── build.sh │ │ └── run.sh │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── collector │ │ │ └── metrics │ │ │ ├── balancer │ │ │ └── HandleRebalance.java │ │ │ ├── cache │ │ │ └── CacheService.java │ │ │ ├── configuration │ │ │ └── zookeeper │ │ │ │ └── ZookeeperConfiguration.java │ │ │ ├── launcher │ │ │ └── Launcher.java │ │ │ └── task │ │ │ ├── MetricsTask.java │ │ │ └── job │ │ │ ├── ExceptionProcessor.java │ │ │ ├── Indexer.java │ │ │ ├── Job.java │ │ │ ├── JobConfiguration.java │ │ │ └── NameCollector.java │ │ └── resources │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── logback.xml │ │ ├── properties │ │ └── collector-metrics.properties │ │ └── shell │ │ ├── create-index.py │ │ ├── install.sh │ │ └── start.sh └── skyeye-collector-trace │ ├── .gitignore │ ├── build.gradle │ ├── image │ ├── Dockerfile │ ├── build.sh │ └── run.sh │ ├── settings.gradle │ └── src │ └── main │ ├── java │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── collector │ │ └── trace │ │ ├── balancer │ │ └── HandleRebalance.java │ │ ├── cache │ │ └── CacheService.java │ │ ├── launcher │ │ └── Launcher.java │ │ ├── store │ │ ├── HbaseStore.java │ │ └── Store.java │ │ └── task │ │ └── RpcTraceTask.java │ └── resources │ ├── application.properties │ ├── banner.txt │ ├── logback.xml │ ├── properties │ └── collector-trace.properties │ └── shell │ └── hbase ├── skyeye-data ├── .gitignore ├── README.md ├── build.gradle ├── settings.gradle ├── skyeye-data-dubbo │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── data │ │ │ └── dubbo │ │ │ ├── DubboAutoConfiguration.java │ │ │ ├── DubboProperties.java │ │ │ └── DubboService.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── skyeye-data-dubbox │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── data │ │ │ └── dubbox │ │ │ ├── DubboAutoConfiguration.java │ │ │ ├── DubboProperties.java │ │ │ └── DubboService.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── skyeye-data-hbase │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── data │ │ │ └── hbase │ │ │ ├── api │ │ │ ├── HbaseOperations.java │ │ │ ├── HbaseSystemException.java │ │ │ ├── HbaseTemplate.java │ │ │ ├── MutatorCallback.java │ │ │ ├── RowMapper.java │ │ │ └── TableCallback.java │ │ │ └── boot │ │ │ ├── HbaseAutoConfiguration.java │ │ │ └── HbaseProperties.java │ │ └── resources │ │ └── META-INF │ │ └── spring.factories ├── skyeye-data-http │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── data │ │ │ └── http │ │ │ └── HttpRequest.java │ │ └── test │ │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── data │ │ └── http │ │ └── test │ │ └── HttpRequestTest.java ├── skyeye-data-jpa │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── data │ │ │ └── jpa │ │ │ ├── configuration │ │ │ └── JpaConfiguration.java │ │ │ ├── domain │ │ │ ├── AppInfo.java │ │ │ ├── MonitorTemplate.java │ │ │ ├── NameInfo.java │ │ │ └── ServiceInfo.java │ │ │ ├── dto │ │ │ ├── AppStatusDto.java │ │ │ └── NameInfoDto.java │ │ │ ├── pk │ │ │ ├── AppInfoPK.java │ │ │ ├── NameInfoPK.java │ │ │ └── ServiceInfoPK.java │ │ │ └── repository │ │ │ ├── AppInfoRepository.java │ │ │ ├── MonitorTemplateRepository.java │ │ │ ├── NameInfoRepository.java │ │ │ └── ServiceInfoRepository.java │ │ └── resources │ │ └── sql │ │ └── init.sql └── skyeye-data-rabbitmq │ ├── .gitignore │ ├── README.md │ ├── build.gradle │ ├── settings.gradle │ └── src │ └── main │ └── java │ └── com │ └── jthink │ └── skyeye │ └── data │ └── rabbitmq │ ├── configuration │ └── AmqpConfiguration.java │ └── service │ └── RabbitmqService.java ├── skyeye-monitor ├── .gitignore ├── README.md ├── build.gradle ├── image │ ├── Dockerfile │ ├── build.sh │ └── run.sh ├── settings.gradle └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── monitor │ │ │ ├── configuration │ │ │ └── zookeeper │ │ │ │ └── ZookeeperConfiguration.java │ │ │ ├── launcher │ │ │ └── Launcher.java │ │ │ ├── listener │ │ │ ├── AppChildrenChangeListener.java │ │ │ └── ScrollChildrenChangeListener.java │ │ │ └── service │ │ │ ├── AppInfoService.java │ │ │ ├── AppStatusMonitorService.java │ │ │ └── CacheService.java │ └── resources │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── logback.xml │ │ ├── properties │ │ └── monitor.properties │ │ └── shell │ │ └── zk │ └── test │ └── java │ └── com │ └── jthink │ └── skyeye │ └── monitor │ └── test │ └── CuratorTest.java ├── skyeye-statistics ├── .gitignore ├── README.md ├── build.gradle ├── pom.xml ├── settings.gradle └── src │ └── main │ ├── java │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── statistics │ │ └── properties │ │ └── TaskProperties.java │ ├── resources │ ├── application.properties │ ├── banner.txt │ ├── log4j.xml │ └── properties │ │ └── teemo.properties │ └── scala │ └── com │ └── jthink │ └── skyeye │ └── statistics │ ├── configuration │ └── SparkConfiguration.scala │ ├── dto │ └── ApiStatisticDto.scala │ ├── launcher │ └── Launcher.scala │ ├── model │ ├── key │ │ ├── Key.scala │ │ └── rpc │ │ │ ├── TimeApiKey.scala │ │ │ └── TimeApiStatusKey.scala │ └── value │ │ ├── Value.scala │ │ └── rpc │ │ ├── StatusCntValue.scala │ │ └── SuccessFailedCntValue.scala │ └── task │ ├── RpcStatisticTask.scala │ ├── Task.scala │ └── TestTask.scala ├── skyeye-trace ├── .gitignore ├── README.md ├── build.gradle ├── settings.gradle ├── skyeye-trace-core │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ │ ├── main │ │ └── java │ │ │ └── com │ │ │ └── jthink │ │ │ └── skyeye │ │ │ └── trace │ │ │ └── core │ │ │ ├── collector │ │ │ ├── Collector.java │ │ │ └── KafkaCollector.java │ │ │ ├── dto │ │ │ └── RegisterDto.java │ │ │ ├── generater │ │ │ ├── IdGen.java │ │ │ ├── IncrementIdGen.java │ │ │ └── UniqueIdGen.java │ │ │ ├── registry │ │ │ ├── Registry.java │ │ │ └── ZookeeperRegistry.java │ │ │ ├── sampler │ │ │ ├── HashSampler.java │ │ │ ├── PercentageSampler.java │ │ │ └── Sampler.java │ │ │ └── trace │ │ │ └── Tracer.java │ │ └── test │ │ └── java │ │ └── com │ │ └── jthink │ │ └── skyeye │ │ └── trace │ │ └── core │ │ └── test │ │ └── id │ │ └── UniqueIdGenTest.java └── skyeye-trace-sc │ ├── .gitignore │ ├── build.gradle │ ├── settings.gradle │ └── src │ └── main │ └── java │ └── com │ └── jthink │ └── skyeye │ └── trace │ └── sc │ └── filter │ └── RpcTraceFilter.java └── skyeye-web ├── .gitignore ├── README.md ├── build.gradle ├── image ├── Dockerfile ├── build.sh └── run.sh ├── settings.gradle └── src └── main ├── java └── com │ └── jthink │ └── skyeye │ └── web │ ├── application │ └── Application.java │ ├── configuration │ └── mvc │ │ └── MvcConfig.java │ ├── constant │ └── EsSqlTemplate.java │ ├── dto │ ├── FilterDto.java │ ├── NoneDupeLogDto.java │ ├── StatisticsDto.java │ ├── TraceAnnotationDto.java │ ├── TraceDto.java │ ├── TraceStatisticsDto.java │ ├── TraceTimeConsumeDto.java │ └── mapper │ │ ├── TraceStatisticsMapper.java │ │ └── TraceTimeConsumeRowMapper.java │ ├── message │ ├── BaseMessage.java │ ├── Message.java │ ├── MessageCode.java │ └── StatusCode.java │ ├── service │ ├── AppMonitorService.java │ ├── LogQueryService.java │ ├── StatisticsService.java │ └── TraceService.java │ ├── task │ └── MonitorTask.java │ ├── util │ ├── RadixUtil.java │ └── ResponseUtil.java │ └── web │ └── controller │ ├── AppController.java │ ├── LogController.java │ ├── StatisticsController.java │ └── TraceController.java └── resources ├── application.properties ├── banner.txt ├── favicon.ico ├── logback.xml ├── properties └── web.properties └── static ├── images └── loading.gif ├── index.html ├── scripts ├── app.js ├── common │ ├── chartUtil.js │ ├── constant.js │ ├── rpcchart.js │ └── util.js ├── controllers │ ├── app │ │ ├── deployController.js │ │ └── statusController.js │ ├── controllers.js │ ├── homeController.js │ ├── log │ │ ├── historyController.js │ │ ├── queryController.js │ │ └── realtimeController.js │ ├── platformController.js │ ├── rpctrace │ │ ├── chainController.js │ │ └── traceController.js │ └── statistics │ │ ├── apiController.js │ │ └── thirdController.js ├── directives │ ├── directives.js │ └── reloadSlidebar.js ├── filters │ └── filters.js ├── libs │ ├── angular-plugin │ │ ├── angular-ui-router.js │ │ ├── angular-ui-router.min.js │ │ └── ui-bootstrap-tpls-0.13.0.min.js │ ├── angular │ │ ├── angular-animate.js │ │ ├── angular-animate.min.js │ │ ├── angular-animate.min.js.map │ │ ├── angular-aria.js │ │ ├── angular-aria.min.js │ │ ├── angular-aria.min.js.map │ │ ├── angular-cookies.js │ │ ├── angular-cookies.min.js │ │ ├── angular-cookies.min.js.map │ │ ├── angular-csp.css │ │ ├── angular-loader.js │ │ ├── angular-loader.min.js │ │ ├── angular-loader.min.js.map │ │ ├── angular-messages.js │ │ ├── angular-messages.min.js │ │ ├── angular-messages.min.js.map │ │ ├── angular-mocks.js │ │ ├── angular-resource.js │ │ ├── angular-resource.min.js │ │ ├── angular-resource.min.js.map │ │ ├── angular-route.js │ │ ├── angular-route.min.js │ │ ├── angular-route.min.js.map │ │ ├── angular-sanitize.js │ │ ├── angular-sanitize.min.js │ │ ├── angular-sanitize.min.js.map │ │ ├── angular-scenario.js │ │ ├── angular-touch.js │ │ ├── angular-touch.min.js │ │ ├── angular-touch.min.js.map │ │ ├── angular.js │ │ ├── angular.min.js │ │ └── angular.min.js.map │ ├── bootstrap-plugin │ │ └── bootstrap-select.js │ ├── bootstrap │ │ └── bootstrap.min.js │ ├── custom │ │ └── ui.js │ ├── echarts.js │ ├── echarts │ │ ├── echarts.common.min.js │ │ ├── echarts.js │ │ ├── esl.js │ │ ├── theme │ │ │ ├── chalk.js │ │ │ ├── halloween.js │ │ │ ├── macarons.js │ │ │ ├── roma.js │ │ │ ├── shine.js │ │ │ └── walden.js │ │ └── zrender.js │ ├── jedate │ │ ├── jquery-1.7.2.js │ │ ├── jquery.jedate.js │ │ ├── jquery.jedate.min.js │ │ └── skin │ │ │ └── jedate.css │ ├── jquery-plugin │ │ ├── common-table.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.dcjqaccordion.2.7.js │ │ ├── jquery.nicescroll.js │ │ └── jquery.scrollTo.min.js │ ├── jquery │ │ ├── jquery.min.js │ │ └── jquery.min.map │ ├── requirejs │ │ └── require.min.js │ └── underscore │ │ ├── underscore-min.map │ │ └── underscore.min.js ├── main.js └── services │ ├── dataService.js │ ├── platformService.js │ └── services.js ├── styles ├── app │ ├── deploy.css │ └── status.css ├── home.css ├── libs │ ├── bootstrap │ │ ├── bootstrap.css.map │ │ └── bootstrap.min.css │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── jedate │ │ └── jedate.css │ └── jquery-plugin │ │ └── jquery-ui.css ├── log │ ├── history.css │ ├── query.css │ └── realtime.css ├── main.css ├── rpctrace │ ├── chain.css │ └── trace.css └── statistics │ ├── api.css │ └── third.css └── views ├── app ├── deploy.html └── status.html ├── home.html ├── log ├── history.html ├── query.html └── realtime.html ├── rpctrace ├── chain.html └── trace.html └── statistics ├── api.html └── third.html /.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/architecture.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include 'skyeye-agent' 2 | include 'skyeye-base' 3 | include 'skyeye-client:skyeye-client-core', 'skyeye-client:skyeye-client-log4j', 'skyeye-client:skyeye-client-logback', 'skyeye-client:skyeye-client-log4j2' 4 | include 'skyeye-trace:skyeye-trace-core', 'skyeye-trace:skyeye-trace-sc' 5 | include 'skyeye-data:skyeye-data-dubbo', 'skyeye-data:skyeye-data-dubbox', 'skyeye-data:skyeye-data-hbase', 'skyeye-data:skyeye-data-http', 'skyeye-data:skyeye-data-jpa', 'skyeye-data:skyeye-data-rabbitmq' 6 | include 'skyeye-collector:skyeye-collector-core', 'skyeye-collector:skyeye-collector-backup', 'skyeye-collector:skyeye-collector-indexer', 'skyeye-collector:skyeye-collector-metrics', 'skyeye-collector:skyeye-collector-trace' 7 | include 'skyeye-alarm' 8 | include 'skyeye-web' 9 | include 'skyeye-monitor' 10 | -------------------------------------------------------------------------------- /skyeye-agent/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-agent/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | rancher容器部署的agent,提供宿主机的host给对接app的容器使用,改项目只需在每个机器上启动下然后停止(网络模式需要是host) 3 | -------------------------------------------------------------------------------- /skyeye-agent/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'application' 2 | 3 | dependencies { 4 | compile project(':skyeye-base') 5 | } 6 | 7 | configurations { 8 | compile.exclude group: "log4j", module: "log4j" 9 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 10 | compile.exclude group: "org.springframework", module: "spring-web" 11 | } 12 | 13 | mainClassName = 'com.jthink.skyeye.agent.launcher.Launcher' 14 | 15 | buildscript { 16 | 17 | repositories { 18 | mavenLocal() 19 | maven { url mavenPublicUrl } 20 | mavenCentral() 21 | } 22 | 23 | dependencies { 24 | classpath("io.spring.gradle:dependency-management-plugin:$gradlePluginVersion") 25 | } 26 | } 27 | 28 | startScripts { 29 | doLast { 30 | unixScript.text = unixScript.text.replaceAll("lib/(.*)\n", "lib/\\*") 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /skyeye-agent/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | 15 | # set env 16 | ENV VERSION $version 17 | 18 | # copy the file 19 | RUN mkdir -p /home/deploy 20 | ADD skyeye-agent-$version.tar /home/deploy 21 | COPY run.sh /run.sh 22 | RUN chmod +x /run.sh 23 | 24 | # CMD to start 25 | CMD ["/run.sh"] 26 | -------------------------------------------------------------------------------- /skyeye-agent/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | cp ../target/distributions/*.tar . 5 | 6 | sudo docker build --build-arg version=$version -t 192.168.88.73:8888/skyeye/skyeye-agent:$version . 7 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-agent:$version 8 | -------------------------------------------------------------------------------- /skyeye-agent/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /home/deploy/skyeye-agent-$VERSION 6 | nohup bin/skyeye-agent & 7 | tail -f /opt/jthink/jthink-config/README.md 8 | -------------------------------------------------------------------------------- /skyeye-agent/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-agent' -------------------------------------------------------------------------------- /skyeye-agent/src/main/java/com/jthink/skyeye/agent/launcher/Launcher.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.agent.launcher; 2 | 3 | import com.jthink.skyeye.base.util.DockerHostUtil; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 项目启动器 11 | * @date 2016-08-24 18:31:48 12 | */ 13 | public class Launcher { 14 | 15 | public static void main(String[] args) { 16 | // 进行宿主机host获取, 并写入 17 | String host = DockerHostUtil.getHostFromLocal(); 18 | DockerHostUtil.writeToFile(host); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /skyeye-alarm/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-alarm/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 报警系统,业务系统的报警存入rabbitmq中,alarm进行消费和发送具体的报警 3 | -------------------------------------------------------------------------------- /skyeye-alarm/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'org.springframework.boot' 2 | apply plugin: 'application' 3 | 4 | dependencies { 5 | compile project(':skyeye-base') 6 | compile project(':skyeye-data:skyeye-data-http') 7 | compile project(':skyeye-data:skyeye-data-rabbitmq') 8 | compile "org.springframework.boot:spring-boot-starter" 9 | 10 | compile "com.alibaba:fastjson:$fastJsonVersion" 11 | 12 | compile "javax.mail:mail:1.4.7" 13 | 14 | testCompile "org.springframework.boot:spring-boot-starter-test" 15 | } 16 | 17 | configurations { 18 | compile.exclude group: "log4j", module: "log4j" 19 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 20 | compile.exclude group: "org.springframework", module: "spring-web" 21 | } 22 | 23 | mainClassName = 'com.jthink.skyeye.alarm.launcher.Launcher' 24 | 25 | buildscript { 26 | 27 | repositories { 28 | mavenLocal() 29 | maven { url mavenPublicUrl } 30 | mavenCentral() 31 | } 32 | 33 | dependencies { 34 | classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion") 35 | classpath("io.spring.gradle:dependency-management-plugin:$gradlePluginVersion") 36 | } 37 | } 38 | 39 | startScripts { 40 | doLast { 41 | unixScript.text = unixScript.text.replaceAll("lib/(.*)\n", "lib/\\*") 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /skyeye-alarm/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD skyeye-alarm-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-alarm/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/skyeye/skyeye-alarm:$version . 8 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-alarm:$version 9 | -------------------------------------------------------------------------------- /skyeye-alarm/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/skyeye-alarm-$VERSION 9 | nohup bin/skyeye-alarm & 10 | tail -f /opt/jthink/jthink-config/skyeye/alarm/alarm.properties 11 | -------------------------------------------------------------------------------- /skyeye-alarm/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-alarm' -------------------------------------------------------------------------------- /skyeye-alarm/src/main/java/com/jthink/skyeye/alarm/configuration/dingding/DingdingProperties.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.alarm.configuration.dingding; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 钉钉配置文件 11 | * @date 2017-09-29 09:16:16 12 | */ 13 | @ConfigurationProperties(prefix = "spring.alert.dingding") 14 | public class DingdingProperties { 15 | 16 | private String url; 17 | 18 | private boolean switchFlag; 19 | 20 | public String getUrl() { 21 | return url; 22 | } 23 | 24 | public void setUrl(String url) { 25 | this.url = url; 26 | } 27 | 28 | public boolean isSwitchFlag() { 29 | return switchFlag; 30 | } 31 | 32 | public void setSwitchFlag(boolean switchFlag) { 33 | this.switchFlag = switchFlag; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /skyeye-alarm/src/main/java/com/jthink/skyeye/alarm/configuration/wechat/WechatProperties.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.alarm.configuration.wechat; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | 5 | /** 6 | * Copyright (C), 2016, 银联智惠信息服务(上海)有限公司 7 | * 8 | * @author qianjc 9 | * @version 0.0.1 10 | * @desc 11 | * @date 2016-09-29 17:40:53 12 | */ 13 | @ConfigurationProperties(prefix = "spring.alert.wechat") 14 | public class WechatProperties { 15 | 16 | private String url; 17 | 18 | private boolean switchFlag; 19 | 20 | public String getUrl() { 21 | return url; 22 | } 23 | 24 | public void setUrl(String url) { 25 | this.url = url; 26 | } 27 | 28 | public boolean isSwitchFlag() { 29 | return switchFlag; 30 | } 31 | 32 | public void setSwitchFlag(boolean switchFlag) { 33 | this.switchFlag = switchFlag; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /skyeye-alarm/src/main/java/com/jthink/skyeye/alarm/service/WechatService.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.alarm.service; 2 | 3 | import com.jthink.skyeye.alarm.configuration.wechat.WechatProperties; 4 | import com.jthink.skyeye.data.http.HttpRequest; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 9 | import org.springframework.stereotype.Service; 10 | 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc 微信报警 17 | * @date 2016-09-29 17:32:33 18 | */ 19 | @Service 20 | @EnableConfigurationProperties(WechatProperties.class) 21 | public class WechatService { 22 | 23 | private static final Logger LOGGER = LoggerFactory.getLogger(WechatService.class); 24 | 25 | @Autowired 26 | private WechatProperties wechatProperties; 27 | 28 | public void send(String msg) { 29 | String reponse = HttpRequest.get(this.wechatProperties.getUrl(), msg); 30 | if (reponse != null) { 31 | // 请求成功 32 | LOGGER.info("发送微信成功"); 33 | } else { 34 | LOGGER.info("发送微信失败"); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /skyeye-alarm/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # rabbitmq 2 | spring.rabbitmq.addresses=${rabbit.request.addresses} 3 | spring.rabbitmq.username=${rabbit.request.username} 4 | spring.rabbitmq.password=${rabbit.request.password} 5 | spring.rabbitmq.virtual-host=${rabbit.request.vhost} 6 | spring.rabbitmq.dynamic=true 7 | spring.rabbitmq.cache.channel.size=${rabbit.request.channelCacheSize} 8 | spring.queue.rabbitmq.queue=${rabbit.request.queue} 9 | spring.queue.rabbitmq.exchange=${rabbit.request.exchange} 10 | spring.queue.rabbitmq.routingKey=${rabbit.request.routingKey} 11 | spring.queue.rabbitmq.maxConcurrentConsumers=${rabbit.request.maxConcurrentConsumers} 12 | spring.queue.rabbitmq.concurrentConsumers=${rabbit.request.concurrentConsumers} 13 | 14 | # wechat 15 | spring.alert.wechat.url=${alert.wechat.url} 16 | spring.alert.wechat.switchFlag=${alert.wechat.switchFlag} 17 | 18 | # dingding 19 | spring.alert.dingding.url=${alert.dingding.url} 20 | spring.alert.dingding.switchFlag=${alert.dingding.switchFlag} 21 | 22 | # mail 23 | spring.mail.jthink.smtphost=${mail.jthink.smtphost} 24 | spring.mail.jthink.port=${mail.jthink.port} 25 | spring.mail.jthink.from=${mail.jthink.from} 26 | spring.mail.jthink.cc=${mail.jthink.cc} 27 | spring.mail.jthink.password=${mail.jthink.password} 28 | spring.mail.jthink.switchFlag=${alert.mail.switchFlag} 29 | -------------------------------------------------------------------------------- /skyeye-alarm/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ▄████████ ▄█ ▄█▄ ▄██ ▄ ▄████████ ▄██ ▄ ▄████████ ▄████████ ▄█ ▄████████ ▄████████ ▄▄▄▄███▄▄▄▄ 2 | ███ ███ ███ ▄███▀ ███ ██▄ ███ ███ ███ ██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▄██▀▀▀███▀▀▀██▄ 3 | ███ █▀ ███▐██▀ ███▄▄▄███ ███ █▀ ███▄▄▄███ ███ █▀ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ 4 | ███ ▄█████▀ ▀▀▀▀▀▀███ ▄███▄▄▄ ▀▀▀▀▀▀███ ▄███▄▄▄ ███ ███ ███ ███ ███ ▄███▄▄▄▄██▀ ███ ███ ███ 5 | ▀███████████ ▀▀█████▄ ▄██ ███ ▀▀███▀▀▀ ▄██ ███ ▀▀███▀▀▀ ▀███████████ ███ ▀███████████ ▀▀███▀▀▀▀▀ ███ ███ ███ 6 | ███ ███▐██▄ ███ ███ ███ █▄ ███ ███ ███ █▄ ███ ███ ███ ███ ███ ▀███████████ ███ ███ ███ 7 | ▄█ ███ ███ ▀███▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███▌ ▄ ███ ███ ███ ███ ███ ███ ███ 8 | ▄████████▀ ███ ▀█▀ ▀█████▀ ██████████ ▀█████▀ ██████████ ███ █▀ █████▄▄██ ███ █▀ ███ ███ ▀█ ███ █▀ 9 | ▀ ▀ ███ ███ -------------------------------------------------------------------------------- /skyeye-alarm/src/main/resources/properties/alarm.properties: -------------------------------------------------------------------------------- 1 | # log_mailer request queue 2 | rabbit.request.addresses=localhost:5672 3 | rabbit.request.username=jthink 4 | rabbit.request.password=jthink 5 | rabbit.request.vhost=/dev 6 | rabbit.request.channelCacheSize=50 7 | rabbit.request.queue=log_mailer 8 | rabbit.request.exchange=direct.log 9 | rabbit.request.routingKey=log.key 10 | rabbit.request.maxConcurrentConsumers=20 11 | rabbit.request.concurrentConsumers=10 12 | 13 | # wechat 14 | alert.wechat.url=http://weixin-app.xxx.com/wx/opsAlert?msg= 15 | alert.wechat.switchFlag=false 16 | 17 | # 钉钉 18 | alert.dingding.url=https://oapi.dingtalk.com/robot/send?access_token=xxx 19 | alert.dingding.switchFlag=false 20 | 21 | # mail 22 | mail.jthink.smtphost=smtp.xxx.com 23 | mail.jthink.port=25 24 | mail.jthink.from=xxx@xxx.com 25 | mail.jthink.cc=xxx@xxx.com 26 | mail.jthink.password=jthink_0926 27 | alert.mail.switchFlag=true 28 | -------------------------------------------------------------------------------- /skyeye-alarm/src/test/java/com/jthink/skyeye/alarm/test/mail/MailTest.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.alarm.test.mail; 2 | 3 | import com.jthink.skyeye.alarm.service.MailService; 4 | import com.jthink.skyeye.base.dto.MailDto; 5 | 6 | import java.util.Arrays; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc 发送邮件test 14 | * @date 2016-09-23 16:52:02 15 | */ 16 | public class MailTest { 17 | 18 | public static void main(String[] args) throws InterruptedException { 19 | 20 | MailDto mailDto = new MailDto(); 21 | mailDto.setTo(Arrays.asList("xxx@xxx.com")); 22 | mailDto.setContent("报警测试"); 23 | mailDto.setSubject("[SkyEye]-alarm app alert"); 24 | 25 | for (int i = 0; i < 100; ++i) { 26 | new MailService().sendMail(mailDto); 27 | // Thread.sleep(2000); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /skyeye-base/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-base/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 监控组的公用基础包 3 | -------------------------------------------------------------------------------- /skyeye-base/build.gradle: -------------------------------------------------------------------------------- 1 | task sourcesJar(type: Jar, dependsOn: classes) { 2 | classifier = 'sources' 3 | from sourceSets.main.allSource 4 | } 5 | 6 | artifacts { 7 | archives sourcesJar 8 | } 9 | 10 | //uploadArchives { 11 | // repositories { 12 | // mavenDeployer { 13 | // repository(url: mavenReleaseUrl) { 14 | // authentication(userName: 'admin', password: 'admin123') 15 | // } 16 | // snapshotRepository(url: mavenSnapshotUrl) { 17 | // authentication(userName: 'admin', password: 'admin123') 18 | // } 19 | // } 20 | // } 21 | //} 22 | 23 | dependencies { 24 | compile "org.slf4j:slf4j-api:$slf4jVersion" 25 | } 26 | -------------------------------------------------------------------------------- /skyeye-base/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-base' 2 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/EventType.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 日志类型 9 | * @date 2016-09-26 16:52:53 10 | */ 11 | public enum EventType { 12 | 13 | normal(Constants.EVENT_TYPE_NORMAL, "正常入库日志"), 14 | invoke_interface(Constants.EVENT_TYPE_INVOKE_INTERFACE, "api调用"), 15 | middleware_opt(Constants.EVENT_TYPE_MIDDLEWARE_OPT, "中间件操作"), 16 | job_execute(Constants.EVENT_TYPE_JOB_EXECUTE, "job执行状态"), 17 | custom_log(Constants.EVENT_TYPE_CUSTOM_LOG, "自定义埋点日志"), 18 | rpc_trace(Constants.EVENT_TYPE_RPC_TRACE, "rpc trace跟踪日志"), 19 | thirdparty_call(Constants.EVENT_TYPE_THIRDPARTY_CALL, "第三方系统调用"); 20 | 21 | private String symbol; 22 | 23 | private String label; 24 | 25 | private EventType(String symbol, String label) { 26 | this.symbol = symbol; 27 | this.label = label; 28 | } 29 | 30 | public String symbol() { 31 | return this.symbol; 32 | } 33 | 34 | public String label() { 35 | return this.label; 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/LogCollectionStatus.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 日志采集状态 9 | * @date 2016-10-09 11:00:37 10 | */ 11 | public enum LogCollectionStatus { 12 | 13 | RUNNING(Constants.LOG_COLLECTION_RUNNING, "正常运行"), 14 | STOPPED(Constants.LOG_COLLECTION_STOPPED, "停止运行"), 15 | HISTORY(Constants.LOG_COLLECTION_HISTORY, "历史运行"); 16 | 17 | private String symbol; 18 | 19 | private String label; 20 | 21 | private LogCollectionStatus(String symbol, String label) { 22 | this.symbol = symbol; 23 | this.label = label; 24 | } 25 | 26 | public String symbol() { 27 | return this.symbol; 28 | } 29 | 30 | public String label() { 31 | return this.label; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/LogLevel.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 日志级别 9 | * @date 2016-10-12 21:33:18 10 | */ 11 | public enum LogLevel { 12 | 13 | INFO(Constants.LOG_LEVEL_INFO), 14 | ERROR(Constants.LOG_LEVEL_ERROR), 15 | WARNING(Constants.LOG_LEVEL_WARNING); 16 | 17 | private String label; 18 | 19 | private LogLevel(String label) { 20 | this.label = label; 21 | } 22 | 23 | public String label() { 24 | return this.label; 25 | } 26 | 27 | /** 28 | * 29 | * @param level 30 | * @return 31 | */ 32 | public boolean isLegal(String level) { 33 | try { 34 | LogLevel.valueOf(level); 35 | return true; 36 | } catch (Exception e) { 37 | return false; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/MiddleWare.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 支持监控的中间件 9 | * @date 2016-11-14 10:08:32 10 | */ 11 | public enum MiddleWare { 12 | 13 | HBASE(Constants.MIDDLEWARE_HBASE, "hbase"), 14 | MONGO(Constants.MIDDLEWARE_MONGO, "mongo"); 15 | 16 | private String symbol; 17 | 18 | private String label; 19 | 20 | private MiddleWare(String symbol, String label) { 21 | this.symbol = symbol; 22 | this.label = label; 23 | } 24 | 25 | public String symbol() { 26 | return this.symbol; 27 | } 28 | 29 | public String label() { 30 | return this.label; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/NameInfoType.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 9 | * @date 2016-11-17 10:02:53 10 | */ 11 | public enum NameInfoType { 12 | 13 | API(Constants.API, "api名称"), 14 | ACCOUNT(Constants.ACCOUNT, "account名称"), 15 | MIDDLEWARE(Constants.MIDDLEWARE, "中间件名称"), 16 | THIRD(Constants.THIRD, "第三方名称"); 17 | 18 | private String symbol; 19 | 20 | private String label; 21 | 22 | private NameInfoType(String symbol, String label) { 23 | this.symbol = symbol; 24 | this.label = label; 25 | } 26 | 27 | public String symbol() { 28 | return this.symbol; 29 | } 30 | 31 | public String label() { 32 | return label; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/Opt.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 操作符 9 | * @date 2016-10-13 08:59:52 10 | */ 11 | public enum Opt { 12 | 13 | EQUAL(Constants.EQUAL, "等于"), 14 | GREATER(Constants.GREATER, "大于"), 15 | GREATER_EQUAL(Constants.GEQUAL, "大于等于"), 16 | LESS(Constants.LESS, "小于"), 17 | LESS_EQUAL(Constants.LEQUAL, "小于等于"); 18 | 19 | private String symbol; 20 | 21 | private String label; 22 | 23 | private Opt(String symbol, String label) { 24 | this.symbol = symbol; 25 | this.label = label; 26 | } 27 | 28 | public String symbol() { 29 | return this.symbol; 30 | } 31 | 32 | public String label() { 33 | return label; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/RpcType.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc rpc type类型 9 | * @date 2017-03-27 10:38:32 10 | */ 11 | public enum RpcType { 12 | 13 | none(Constants.RPC_TYPE_NONE, "none"), 14 | dubbo(Constants.RPC_TYPE_DUBBO, "dubbo"), 15 | sc(Constants.RPC_TYPE_SC, "spring-cloud"); 16 | 17 | private String symbol; 18 | 19 | private String label; 20 | 21 | private RpcType(String symbol, String label) { 22 | this.symbol = symbol; 23 | this.label = label; 24 | } 25 | 26 | public String symbol() { 27 | return this.symbol; 28 | } 29 | 30 | public String label() { 31 | return this.label; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/constant/TimeUnit.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 9 | * @date 2016-10-13 08:59:52 10 | */ 11 | public enum TimeUnit { 12 | 13 | SECOND("s", "秒"), 14 | MINUTE("m", "分"), 15 | HOUR("h", "时"), 16 | DAY("d", "天"); 17 | 18 | private String symbol; 19 | 20 | private String label; 21 | 22 | TimeUnit(String symbol, String label) { 23 | this.symbol = symbol; 24 | this.label = label; 25 | } 26 | 27 | public String symbol() { 28 | return symbol; 29 | } 30 | 31 | 32 | public String label() { 33 | return label; 34 | } 35 | 36 | @Override 37 | public String toString() { 38 | return symbol + "\t" + label; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/dapper/AnnotationType.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.dapper; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc annotation支持的类型 11 | * @date 2016-11-04 17:44:40 12 | */ 13 | public enum AnnotationType { 14 | 15 | CS(Constants.CS_KEY, Constants.CS_VALUE), 16 | SR(Constants.SR_KEY, Constants.SR_VALUE), 17 | SS(Constants.SS_KEY, Constants.SS_VALUE), 18 | CR(Constants.CR_KEY, Constants.CR_VALUE); 19 | 20 | private String symbol; 21 | 22 | private String label; 23 | 24 | private AnnotationType(String symbol, String label) { 25 | this.symbol = symbol; 26 | this.label = label; 27 | } 28 | 29 | public String symbol() { 30 | return this.symbol; 31 | } 32 | 33 | public String label() { 34 | return this.label; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/dapper/ExceptionType.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.dapper; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc binary annotation的一种,异常类型 11 | * @date 2016-12-21 15:13:28 12 | */ 13 | public enum ExceptionType { 14 | 15 | EXCEPTION(Constants.DUBBO_EXCEPTION, Constants.EXCEPTION), 16 | TIMEOUTEXCEPTION(Constants.DUBBO_TIMEOUTEXCEPTION, Constants.EXCEPTION); 17 | 18 | private String symbol; 19 | 20 | private String label; 21 | 22 | private ExceptionType(String symbol, String label) { 23 | this.symbol = symbol; 24 | this.label = label; 25 | } 26 | 27 | public String symbol() { 28 | return this.symbol; 29 | } 30 | 31 | public String label() { 32 | return this.label; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/dapper/NodeProperty.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.dapper; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 节点性质 11 | * @date 2017-02-17 17:28:01 12 | */ 13 | public enum NodeProperty { 14 | 15 | C(Constants.CLIENT_KEY, Constants.CLIENT_VALUE), 16 | S(Constants.SERVER_KEY, Constants.SERVER_VALUE); 17 | 18 | private String symbol; 19 | 20 | private String label; 21 | 22 | private NodeProperty(String symbol, String label) { 23 | this.symbol = symbol; 24 | this.label = label; 25 | } 26 | 27 | public String symbol() { 28 | return this.symbol; 29 | } 30 | 31 | public String label() { 32 | return this.label; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/dto/FileDto.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.dto; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 11 | * @date 2016-09-23 16:59:12 12 | */ 13 | public class FileDto implements Serializable { 14 | 15 | private static final long serialVersionUID = 8714191576381945205L; 16 | 17 | private String fileName; 18 | private byte[] fileBytes; 19 | 20 | public FileDto() { 21 | } 22 | 23 | public FileDto(String fileName, byte[] fileBytes) { 24 | this.fileName = fileName; 25 | this.fileBytes = fileBytes; 26 | } 27 | 28 | public String getFileName() { 29 | return fileName; 30 | } 31 | 32 | public void setFileName(String fileName) { 33 | this.fileName = fileName; 34 | } 35 | 36 | public byte[] getFileBytes() { 37 | return fileBytes; 38 | } 39 | 40 | public void setFileBytes(byte[] fileBytes) { 41 | this.fileBytes = fileBytes; 42 | } 43 | } -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/sql/ConditionOrder.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.sql; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * JThink@JThink 9 | * 10 | * @author JThink 11 | * @version 0.0.1 12 | * @desc order by 的条件描述 13 | * @date 2016-11-29 20:15:41 14 | */ 15 | public class ConditionOrder implements Serializable { 16 | 17 | private static final long serialVersionUID = 1L; 18 | // 列名 19 | private String column; 20 | 21 | // 排序 22 | private OrderDesc desc; 23 | 24 | public String getColumn() { 25 | return column; 26 | } 27 | 28 | public void setColumn(String column) { 29 | this.column = column; 30 | } 31 | 32 | public OrderDesc getDesc() { 33 | return desc; 34 | } 35 | 36 | public void setDesc(OrderDesc desc) { 37 | this.desc = desc; 38 | } 39 | 40 | @Override 41 | public String toString() { 42 | return this.column + Constants.SPACE + this.desc.name(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/sql/Func.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.sql; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc sql支持在select语句的函数 11 | * @date 2016-11-29 21:10:31 12 | */ 13 | public enum Func implements Serializable { 14 | 15 | // 可以扩展 16 | SUM(), 17 | MAX(), 18 | MIN(), 19 | COUNT(), 20 | COLLECT() 21 | } 22 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/sql/Opt.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.sql; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * JThink@JThink 9 | * 10 | * @author JThink 11 | * @version 0.0.1 12 | * @desc 13 | * @date 6/7/16 14 | */ 15 | public enum Opt implements Serializable { 16 | 17 | TRUE(Constants.TRUE, "是"), 18 | FALSE(Constants.FALSE, "否"), 19 | EQUAL(Constants.EQUAL, "等于"), 20 | GREATER(Constants.GREATER, "大于"), 21 | GREATER_EQUAL(Constants.GEQUAL, "大于等于"), 22 | LESS(Constants.LESS, "小于"), 23 | LESS_EQUAL(Constants.LEQUAL, "小于等于"), 24 | BETWEEN(Constants.BETWEEN, "闭区间"), 25 | IN(Constants.IN, "包含"), 26 | NOT_IN(Constants.NOT_IN, "包含"), 27 | 28 | LIKE(Constants.LIKE, "模糊匹配"), 29 | NOT_LIKE(Constants.NOT_LIKE, "模糊匹配"), 30 | IS_NULL(Constants.IS_NULL, "为空"); 31 | 32 | private String symbol; 33 | 34 | private String label; 35 | 36 | private Opt(String symbol, String label) { 37 | this.symbol = symbol; 38 | this.label = label; 39 | } 40 | 41 | public String symbol() { 42 | return this.symbol; 43 | } 44 | 45 | public String label() { 46 | return this.label; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/sql/OrderBy.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.sql; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | 5 | import java.io.Serializable; 6 | import java.util.List; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc order by 14 | * @date 2016-11-29 20:18:24 15 | */ 16 | public class OrderBy implements Serializable { 17 | 18 | private static final long serialVersionUID = 1L; 19 | // 排序条件 20 | private List conditions; 21 | 22 | public List getConditions() { 23 | return conditions; 24 | } 25 | 26 | public void setConditions(List conditions) { 27 | this.conditions = conditions; 28 | } 29 | 30 | @Override 31 | public String toString() { 32 | 33 | StringBuffer str = new StringBuffer(); 34 | if (this.conditions != null && !this.conditions.isEmpty()) { 35 | str.append("ORDER BY ").append(this.conditions.get(0).toString()); 36 | for (int i = 1; i < this.conditions.size(); i++) { 37 | str.append(Constants.COMMA).append(this.conditions.get(i).toString()); 38 | } 39 | } 40 | return str.toString(); 41 | } 42 | } -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/sql/OrderDesc.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.sql; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 升序或者降序 11 | * @date 2016-11-29 20:16:34 12 | */ 13 | public enum OrderDesc implements Serializable { 14 | 15 | DESC(), 16 | ASC() 17 | } 18 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/sql/SqlBuildException.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.sql; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc sql构造的自定义异常 9 | * @date 2016-11-29 21:10:31 10 | */ 11 | public class SqlBuildException extends Exception { 12 | 13 | public SqlBuildException() { 14 | super(); 15 | } 16 | 17 | public SqlBuildException(String message) { 18 | super(message); 19 | } 20 | 21 | public SqlBuildException(Throwable cause) { 22 | super(cause); 23 | } 24 | 25 | public SqlBuildException(String message, Throwable cause) { 26 | super(message, cause); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /skyeye-base/src/main/java/com/jthink/skyeye/base/util/StringUtil.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.util; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 字符串相关的util 9 | * @date 2016-09-08 20:29:20 10 | */ 11 | public class StringUtil { 12 | 13 | public static boolean isBlank(String str) { 14 | int strLen; 15 | if (str == null || (strLen = str.length()) == 0) { 16 | return true; 17 | } 18 | for (int i = 0; i < strLen; i++) { 19 | if ((Character.isWhitespace(str.charAt(i)) == false)) { 20 | return false; 21 | } 22 | } 23 | return true; 24 | } 25 | 26 | public static boolean isNotBlank(String str) { 27 | return !StringUtil.isBlank(str); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /skyeye-base/src/test/java/com/jthink/skyeye/base/log/event/EventLogTest.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.base.log.event; 2 | 3 | 4 | import com.jthink.skyeye.base.constant.EventType; 5 | import com.jthink.skyeye.base.constant.MiddleWare; 6 | import com.jthink.skyeye.base.dto.ApiLog; 7 | import com.jthink.skyeye.base.dto.EventLog; 8 | 9 | /** 10 | * JThink@JThink 11 | * 12 | * @author JThink 13 | * @version 0.0.1 14 | * @desc 日志事件相关测试 15 | * @date 2016-08-24 20:23:16 16 | */ 17 | public class EventLogTest { 18 | 19 | public static void main(String[] args) { 20 | EventLog e = EventLog.buildEventLog(EventType.middleware_opt, MiddleWare.HBASE.symbol(), 100, EventLog.MONITOR_STATUS_SUCCESS, "测试构造日志事件类型"); 21 | System.out.println(e); 22 | 23 | EventType et = EventLog.parseEventType(e.toString()); 24 | System.out.println(et); 25 | 26 | EventLog er = EventLog.parseEventLog(e.toString()); 27 | System.out.println(er); 28 | 29 | 30 | 31 | ApiLog a = ApiLog.buildApiLog(EventType.invoke_interface, MiddleWare.HBASE.symbol(), "800001", 100, EventLog.MONITOR_STATUS_SUCCESS, "测试构造日志事件类型"); 32 | System.out.println(a); 33 | 34 | EventType et1 = EventLog.parseEventType(a.toString()); 35 | System.out.println(et1); 36 | 37 | ApiLog ar = ApiLog.parseEventLog(a.toString()); 38 | System.out.println(ar); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /skyeye-benchmark/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 监控中心项目的测试项目 3 | ## log-generater 4 | 日志生成器 5 | ## dubbo-service-trace 6 | dubbox服务链条项目,提供服务链条调用 7 | -------------------------------------------------------------------------------- /skyeye-benchmark/doc/Test Case of SkyEye.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-benchmark/doc/Test Case of SkyEye.xls -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-a/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-a/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dubbo-service-a' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-a/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # 项目启动地址 2 | server.address=0.0.0.0 3 | server.port=8888 4 | 5 | # dubbo配置 6 | spring.service.dubbo.registry.name=veno-test-service-a 7 | spring.service.dubbo.registry.address=riot01:2181,riot02:2181,riot03:2181 8 | spring.service.dubbo.registry.check=true 9 | spring.service.dubbo.registry.register=true 10 | spring.service.dubbo.registry.protocol=zookeeper 11 | spring.service.dubbo.registry.retries=0 12 | spring.service.dubbo.registry.timeout=60000 13 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-b/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-b/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dubbo-service-b' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-b/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/b/configuration/dubbo/DubboConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.b.configuration.dubbo; 2 | 3 | import com.jthink.skyeye.data.dubbox.DubboService; 4 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceB; 5 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceC; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.context.annotation.Bean; 8 | import org.springframework.context.annotation.Configuration; 9 | 10 | import javax.annotation.PostConstruct; 11 | 12 | /** 13 | * JThink@JThink 14 | * 15 | * @author JThink 16 | * @version 0.0.1 17 | * @desc dubbo的配置 18 | * @date 2016-12-14 16:58:18 19 | */ 20 | @Configuration 21 | public class DubboConfiguration { 22 | 23 | @Autowired 24 | private DubboService dubboService; 25 | @Autowired 26 | private ServiceB serviceBImpl; 27 | 28 | @Bean 29 | public ServiceC serviceC() { 30 | return this.dubboService.get(ServiceC.class); 31 | } 32 | 33 | @PostConstruct 34 | public void exportDubboService() { 35 | this.dubboService.export(ServiceB.class, this.serviceBImpl); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-b/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/b/service/ServiceBImpl.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.b.service; 2 | 3 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceB; 4 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceC; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc 16 | * @date 2016-12-14 16:50:05 17 | */ 18 | @Service 19 | public class ServiceBImpl implements ServiceB { 20 | 21 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceBImpl.class); 22 | 23 | @Autowired 24 | private ServiceC serviceC; 25 | 26 | @Override 27 | public String invokeB() { 28 | LOGGER.info("调用服务C"); 29 | return this.serviceC.invokeC(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-b/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # dubbo配置 2 | spring.service.dubbo.registry.name=veno-test-service-b 3 | spring.service.dubbo.registry.address=riot01:2181,riot02:2181,riot03:2181 4 | spring.service.dubbo.registry.check=true 5 | spring.service.dubbo.registry.register=true 6 | spring.service.dubbo.registry.protocol=zookeeper 7 | spring.service.dubbo.registry.retries=0 8 | spring.service.dubbo.registry.timeout=60000 9 | spring.service.dubbo.registry.protocolName=dubbo 10 | spring.service.dubbo.registry.payload=10485760 11 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-c/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-c/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dubbo-service-c' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-c/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/c/service/ServiceCImpl.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.c.service; 2 | 3 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceC; 4 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceD; 5 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceE; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc 17 | * @date 2016-12-14 16:50:05 18 | */ 19 | @Service 20 | public class ServiceCImpl implements ServiceC { 21 | 22 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceCImpl.class); 23 | 24 | @Autowired 25 | private ServiceD serviceD; 26 | @Autowired 27 | private ServiceE serviceE; 28 | 29 | @Override 30 | public String invokeC() { 31 | LOGGER.info("调用服务D和E"); 32 | return this.serviceD.invokeD() + " and " + this.serviceE.invokeE(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-c/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # dubbo配置 2 | spring.service.dubbo.registry.name=veno-test-service-c 3 | spring.service.dubbo.registry.address=riot01:2181,riot02:2181,riot03:2181 4 | spring.service.dubbo.registry.check=true 5 | spring.service.dubbo.registry.register=true 6 | spring.service.dubbo.registry.protocol=zookeeper 7 | spring.service.dubbo.registry.retries=0 8 | spring.service.dubbo.registry.timeout=60000 9 | spring.service.dubbo.registry.protocolName=dubbo 10 | spring.service.dubbo.registry.payload=10485760 11 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-client/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-client/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | apply plugin: 'eclipse' 3 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-client/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dubbo-service-client' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-client/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/client/ServiceB.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.client; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc service b 接口定义 9 | * @date 2016-12-14 16:34:24 10 | */ 11 | public interface ServiceB { 12 | 13 | public String invokeB(); 14 | } 15 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-client/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/client/ServiceC.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.client; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc service c 接口定义 9 | * @date 2016-12-14 16:34:24 10 | */ 11 | public interface ServiceC { 12 | 13 | public String invokeC(); 14 | } 15 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-client/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/client/ServiceD.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.client; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc service d 接口定义 9 | * @date 2016-12-14 16:34:24 10 | */ 11 | public interface ServiceD { 12 | 13 | public String invokeD(); 14 | } 15 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-client/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/client/ServiceE.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.client; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc service e 接口定义 9 | * @date 2016-12-14 16:34:24 10 | */ 11 | public interface ServiceE { 12 | 13 | public String invokeE(); 14 | } 15 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-d/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-d/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dubbo-service-d' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-d/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/d/configuration/dubbo/DubboConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.d.configuration.dubbo; 2 | 3 | import com.jthink.skyeye.data.dubbox.DubboService; 4 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceD; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | import javax.annotation.PostConstruct; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc dubbo的配置 16 | * @date 2016-12-14 16:58:18 17 | */ 18 | @Configuration 19 | public class DubboConfiguration { 20 | 21 | @Autowired 22 | private DubboService dubboService; 23 | @Autowired 24 | private ServiceD serviceDImpl; 25 | 26 | @PostConstruct 27 | public void exportDubboService() { 28 | this.dubboService.export(ServiceD.class, this.serviceDImpl); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-d/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/d/service/ServiceDImpl.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.d.service; 2 | 3 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceD; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.stereotype.Service; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc 14 | * @date 2016-12-14 16:50:05 15 | */ 16 | @Service 17 | public class ServiceDImpl implements ServiceD { 18 | 19 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceDImpl.class); 20 | 21 | @Override 22 | public String invokeD() { 23 | LOGGER.info("调用服务D"); 24 | return "D"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-d/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # dubbo配置 2 | spring.service.dubbo.registry.name=veno-test-service-d 3 | spring.service.dubbo.registry.address=riot01:2181,riot02:2181,riot03:2181 4 | spring.service.dubbo.registry.check=true 5 | spring.service.dubbo.registry.register=true 6 | spring.service.dubbo.registry.protocol=zookeeper 7 | spring.service.dubbo.registry.retries=0 8 | spring.service.dubbo.registry.timeout=60000 9 | spring.service.dubbo.registry.protocolName=dubbo 10 | spring.service.dubbo.registry.payload=10485760 11 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD dubbo-service-e-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/dubbo-service/dubbo-service-e:$version . 8 | sudo docker push 192.168.88.73:8888/dubbo-service/dubbo-service-e:$version 9 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/dubbo-service-e-$VERSION 9 | nohup bin/dubbo-service-e & 10 | tail -f /opt/jthink/jthink-config/skyeye/alarm/alarm.properties 11 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dubbo-service-e' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/e/configuration/dubbo/DubboConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.e.configuration.dubbo; 2 | 3 | import com.jthink.skyeye.data.dubbo.DubboService; 4 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceE; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | import javax.annotation.PostConstruct; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc dubbo的配置 16 | * @date 2016-12-14 16:58:18 17 | */ 18 | @Configuration 19 | public class DubboConfiguration { 20 | 21 | @Autowired 22 | private DubboService dubboService; 23 | @Autowired 24 | private ServiceE serviceEImpl; 25 | 26 | @PostConstruct 27 | public void exportDubboService() { 28 | this.dubboService.export(ServiceE.class, this.serviceEImpl); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/src/main/java/com/jthink/skyeye/benchmark/dubbo/service/e/service/ServiceEImpl.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.dubbo.service.e.service; 2 | 3 | import com.jthink.skyeye.benchmark.dubbo.service.client.ServiceE; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.stereotype.Service; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc 14 | * @date 2016-12-14 16:50:05 15 | */ 16 | @Service 17 | public class ServiceEImpl implements ServiceE { 18 | 19 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceEImpl.class); 20 | 21 | @Override 22 | public String invokeE() { 23 | LOGGER.info("调用服务E"); 24 | return "E"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/dubbo-service-e/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # dubbo配置 2 | spring.service.dubbo.registry.name=veno-test-service-e 3 | spring.service.dubbo.registry.address=riot01:2181,riot02:2181,riot03:2181 4 | spring.service.dubbo.registry.check=true 5 | spring.service.dubbo.registry.register=true 6 | spring.service.dubbo.registry.protocol=zookeeper 7 | spring.service.dubbo.registry.retries=0 8 | spring.service.dubbo.registry.timeout=60000 9 | spring.service.dubbo.registry.protocolName=dubbo 10 | spring.service.dubbo.registry.payload=10485760 11 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/performance-test/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/performance-test/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | apply plugin: 'eclipse' 3 | apply plugin: 'maven' 4 | apply plugin: 'application' 5 | 6 | dependencies { 7 | compile project(":dubbo-service-client") 8 | compile "skyeye:skyeye-data-http:$dataVersion" 9 | } 10 | 11 | configurations { 12 | compile.exclude group: "log4j", module: "log4j" 13 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 14 | } 15 | 16 | mainClassName = "com.jthink.skyeye.benchmark.performance.test.launcher.Launcher" 17 | 18 | buildscript { 19 | repositories { 20 | mavenLocal() 21 | maven { url mavenPublicUrl } 22 | mavenCentral() 23 | } 24 | } 25 | 26 | startScripts { 27 | doLast { 28 | unixScript.text = unixScript.text.replaceAll("lib/(.*)\n", "lib/\\*") 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/performance-test/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'performance-test' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/performance-test/src/main/java/com/jthink/skyeye/benchmark/performance/test/task/RpcCaller.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.performance.test.task; 2 | 3 | import com.jthink.skyeye.data.http.HttpRequest; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc rpc调用线程 11 | * @date 2017-03-31 10:31:29 12 | */ 13 | public class RpcCaller implements Runnable { 14 | 15 | private static final String BASE_URL = "http://localhost:8888/"; 16 | 17 | private String url; 18 | 19 | public RpcCaller() { 20 | 21 | } 22 | 23 | public RpcCaller(String url) { 24 | this.url = url; 25 | } 26 | 27 | @Override 28 | public void run() { 29 | while (true) { 30 | HttpRequest.get(BASE_URL + this.url, ""); 31 | } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /skyeye-benchmark/dubbo-service/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'dubbo-service' 2 | include 'dubbo-service-client', 'dubbo-service-a', 'dubbo-service-b', 'dubbo-service-c', 'dubbo-service-d', 'dubbo-service-e', 'performance-test' 3 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | apply plugin: 'java' 3 | apply plugin: 'eclipse' 4 | 5 | group = 'skyeye' 6 | version = '1.3.0' 7 | sourceCompatibility = 1.8 8 | targetCompatibility = 1.8 9 | compileJava.options.encoding = 'UTF-8' 10 | buildDir = 'target' 11 | 12 | ext { 13 | mavenPublicUrl = 'http://192.168.88.8:8081/nexus/content/repositories/public' 14 | mavenReleaseUrl = 'http://192.168.88.8:8081/nexus/content/repositories/releases' 15 | mavenSnapshotUrl = 'http://192.168.88.8:8081/nexus/content/repositories/snapshots' 16 | } 17 | 18 | task sourcesJar(type: Jar, dependsOn: classes) { 19 | classifier = 'sources' 20 | from sourceSets.main.allSource 21 | } 22 | 23 | // task javadocJar(type: Jar, dependsOn: javadoc) { 24 | // classifier = 'javadoc' 25 | // from javadoc.destinationDir 26 | // } 27 | 28 | artifacts { 29 | archives sourcesJar 30 | // archives javadocJar 31 | } 32 | } 33 | subprojects { 34 | apply plugin: 'java' 35 | apply plugin: 'eclipse' 36 | 37 | ext { 38 | clientVersion = '1.3.0' 39 | } 40 | 41 | [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' 42 | 43 | repositories { 44 | mavenLocal() 45 | maven { url mavenPublicUrl } 46 | maven { url mavenReleaseUrl } 47 | maven { url mavenSnapshotUrl } 48 | mavenCentral() 49 | } 50 | 51 | dependencies { 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/hi-log-log4j2/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/hi-log-log4j2/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | apply plugin: 'eclipse' 3 | apply plugin: 'maven' 4 | apply plugin: 'org.springframework.boot' 5 | apply plugin: 'application' 6 | 7 | dependencies { 8 | compile "skyeye:skyeye-client-log4j2:$clientVersion" 9 | compile ("org.springframework.boot:spring-boot-starter") { 10 | exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' 11 | } 12 | compile "org.springframework.boot:spring-boot-starter-log4j2" 13 | 14 | testCompile "org.springframework.boot:spring-boot-starter-test" 15 | } 16 | 17 | configurations { 18 | compile.exclude group: "log4j", module: "log4j" 19 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 20 | } 21 | 22 | mainClassName = "com.jthink.skyeye.benchmark.hi.log.log4j2.launcher.Launcher" 23 | 24 | buildscript { 25 | ext { 26 | springBootVersion = '1.5.6.RELEASE' 27 | } 28 | 29 | repositories { 30 | mavenLocal() 31 | maven { url mavenPublicUrl } 32 | mavenCentral() 33 | } 34 | 35 | dependencies { 36 | classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 37 | classpath("io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE") 38 | } 39 | } 40 | 41 | startScripts { 42 | doLast { 43 | unixScript.text = unixScript.text.replaceAll("lib/(.*)\n", "lib/\\*") 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/hi-log-log4j2/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD hi-log-log4j2-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/hi-log-log4j2/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/hi-log/hi-log-log4j2:$version . 8 | sudo docker push 192.168.88.73:8888/hi-log/hi-log-log4j2:$version 9 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/hi-log-log4j2/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/hi-log-log4j2-$VERSION 9 | nohup bin/hi-log-log4j2 & 10 | tail -f /opt/jthink/jthink-config/skyeye/alarm/alarm.properties 11 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/hi-log-log4j2/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'hi-log-log4j2' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/hi-log/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'hi-log' 2 | include 'hi-log-log4j2' 3 | -------------------------------------------------------------------------------- /skyeye-benchmark/log-generater/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/log-generater/README.md: -------------------------------------------------------------------------------- 1 | 日志产生器 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/log-generater/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'log-generater' -------------------------------------------------------------------------------- /skyeye-benchmark/log-generater/src/main/java/com/jthink/skyeye/benchmark/log/generater/task/GenerateLog.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.log.generater.task; 2 | 3 | import com.jthink.skyeye.benchmark.log.generater.service.GenerateLogService; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.scheduling.annotation.EnableScheduling; 9 | import org.springframework.scheduling.annotation.Scheduled; 10 | 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc 17 | * @date 2016-11-28 15:28:52 18 | */ 19 | @Configuration 20 | @EnableScheduling 21 | public class GenerateLog { 22 | 23 | private static Logger LOGGER = LoggerFactory.getLogger(GenerateLog.class); 24 | 25 | @Autowired 26 | private GenerateLogService generateLogService; 27 | 28 | @Scheduled(cron = "* * * * * *") 29 | public void refreshCache() { 30 | // LOGGER.info("reload cache start"); 31 | // this.cacheService.load(); 32 | // LOGGER.info("reload cache end"); 33 | 34 | // for (int i = 0; i < 10; i ++) { 35 | this.generateLogService.generateCoverLog(); 36 | // } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /skyeye-benchmark/log-generater/src/main/java/com/jthink/skyeye/benchmark/log/generater/util/RandomSeed.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.log.generater.util; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 11 | * @date 2017-04-19 10:47:51 12 | */ 13 | public class RandomSeed { 14 | 15 | public static int nextInt(int max) { 16 | Random random = new Random(); 17 | return random.nextInt(max); 18 | } 19 | 20 | public static void main(String[] args) { 21 | for (int i = 0; i < 100; ++i) { 22 | System.out.println(nextInt(2)); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /skyeye-benchmark/log-generater/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.data.hbase.quorum=panda-01 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/log-generater/src/main/resources/properties/log-generater.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-benchmark/log-generater/src/main/resources/properties/log-generater.properties -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'spring-cloud-service' 2 | include 'spring-cloud-service-client' , 'spring-cloud-service-a' , 'spring-cloud-service-b' 3 | //, 'spring-cloud-service-c', 'spring-cloud-service-d', 'spring-cloud-service-e' 4 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-a/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-a/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'spring-cloud-service-a' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-a/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # server 2 | server.address=${serverAddress} 3 | server.port=${serverPort} 4 | # service 5 | spring.application.name=spring-cloud-service-a 6 | eureka.client.serviceUrl.defaultZone=${eureka.server.address} 7 | feign.hystrix.enabled=true 8 | hystrix.command.ServiceB#invokeB.execution.isolation.thread.timeoutInMilliseconds=10000 9 | hystrix.command.ServiceC#invokeC.execution.isolation.thread.timeoutInMilliseconds=10000 10 | hystrix.command.ServiceD#invokeD.execution.isolation.thread.timeoutInMilliseconds=10000 11 | hystrix.command.ServiceE#invokeE.execution.isolation.thread.timeoutInMilliseconds=10000 12 | # feign httpclient 13 | feign.httpclient.enabled=true 14 | spring.cloud.feign.httpclient.maxTotal=400 15 | spring.cloud.feign.httpclient.defaultMaxPerRoute=20 16 | spring.cloud.feign.httpclient.alive=5000 17 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-a/src/main/resources/properties/service-a.properties: -------------------------------------------------------------------------------- 1 | # server 2 | serverAddress=0.0.0.0 3 | serverPort=20000 4 | # register address 5 | eureka.server.address=http://admin:abc123_@riot01:11111/eureka/,http://admin:abc123_@riot02:11111/eureka/,http://admin:abc123_@riot03:11111/eureka/ 6 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-b/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-b/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'spring-cloud-service-b' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-b/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/b/controller/ServiceController.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.b.controller; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.iface.ServiceB; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc 测试接口 14 | * @date 2017-06-05 11:36:52 15 | */ 16 | @RestController 17 | public class ServiceController implements ServiceB { 18 | 19 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceController.class); 20 | 21 | @Override 22 | public String invokeB() { 23 | LOGGER.info("run service c logic code"); 24 | return "B"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-b/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # server 2 | server.address=${serverAddress} 3 | server.port=${serverPort} 4 | # service 5 | spring.application.name=spring-cloud-service-b 6 | eureka.client.serviceUrl.defaultZone=${eureka.server.address} 7 | feign.hystrix.enabled=true 8 | hystrix.command.ServiceB#invokeB.execution.isolation.thread.timeoutInMilliseconds=10000 9 | hystrix.command.ServiceC#invokeC.execution.isolation.thread.timeoutInMilliseconds=10000 10 | hystrix.command.ServiceD#invokeD.execution.isolation.thread.timeoutInMilliseconds=10000 11 | hystrix.command.ServiceE#invokeE.execution.isolation.thread.timeoutInMilliseconds=10000 12 | # feign httpclient 13 | feign.httpclient.enabled=true 14 | spring.cloud.feign.httpclient.maxTotal=400 15 | spring.cloud.feign.httpclient.defaultMaxPerRoute=20 16 | spring.cloud.feign.httpclient.alive=5000 17 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-b/src/main/resources/properties/service-b.properties: -------------------------------------------------------------------------------- 1 | # server 2 | serverAddress=0.0.0.0 3 | serverPort=20001 4 | # register address 5 | eureka.server.address=http://admin:abc123_@riot01:11111/eureka/,http://admin:abc123_@riot02:11111/eureka/,http://admin:abc123_@riot03:11111/eureka/ 6 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | apply plugin: 'eclipse' 3 | 4 | ext { 5 | springVersion = '4.3.10.RELEASE' 6 | feignHystrixVersion = '9.5.0' 7 | netflixCoreVersion = '1.3.2.RELEASE' 8 | } 9 | 10 | dependencies { 11 | compile ("org.springframework.cloud:spring-cloud-netflix-core:$netflixCoreVersion") { 12 | exclude group: 'org.springframework.boot', module: 'spring-boot' 13 | exclude group: 'org.springframework.boot', module: 'spring-boot-autoconfigure' 14 | } 15 | compile ("org.springframework:spring-web:$springVersion") 16 | compile "io.github.openfeign:feign-hystrix:$feignHystrixVersion" 17 | } 18 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'spring-cloud-service-client' 2 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/fallback/ServiceBFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.iface.ServiceB; 4 | import feign.hystrix.FallbackFactory; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * JThink@JThink 11 | * 12 | * @author JThink 13 | * @version 0.0.1 14 | * @desc service c 服务降级 15 | * @date 2017-02-24 16:34:24 16 | */ 17 | @Component 18 | public class ServiceBFallbackFactory implements FallbackFactory { 19 | 20 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceBFallbackFactory.class); 21 | 22 | @Override 23 | public ServiceB create(Throwable cause) { 24 | return new ServiceB() { 25 | @Override 26 | public String invokeB() { 27 | ServiceBFallbackFactory.LOGGER.info(cause.toString()); 28 | ServiceBFallbackFactory.LOGGER.info("call the fallback B"); 29 | return "fallback B"; 30 | } 31 | }; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/fallback/ServiceCFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.iface.ServiceC; 4 | import feign.hystrix.FallbackFactory; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * JThink@JThink 11 | * 12 | * @author JThink 13 | * @version 0.0.1 14 | * @desc service c 服务降级 15 | * @date 2017-02-24 16:34:24 16 | */ 17 | @Component 18 | public class ServiceCFallbackFactory implements FallbackFactory { 19 | 20 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceCFallbackFactory.class); 21 | 22 | @Override 23 | public ServiceC create(Throwable cause) { 24 | return new ServiceC() { 25 | @Override 26 | public String invokeC() { 27 | ServiceCFallbackFactory.LOGGER.info(cause.toString()); 28 | ServiceCFallbackFactory.LOGGER.info("call the fallback C"); 29 | return "fallback C"; 30 | } 31 | }; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/fallback/ServiceDFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.iface.ServiceD; 4 | import feign.hystrix.FallbackFactory; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * JThink@JThink 11 | * 12 | * @author JThink 13 | * @version 0.0.1 14 | * @desc service D 服务降级 15 | * @date 2017-02-24 16:34:24 16 | */ 17 | @Component 18 | public class ServiceDFallbackFactory implements FallbackFactory { 19 | 20 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceDFallbackFactory.class); 21 | 22 | @Override 23 | public ServiceD create(Throwable cause) { 24 | return new ServiceD() { 25 | @Override 26 | public String invokeD() { 27 | ServiceDFallbackFactory.LOGGER.info(cause.toString()); 28 | ServiceDFallbackFactory.LOGGER.info("call the fallback D"); 29 | return "fallback D"; 30 | } 31 | }; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/fallback/ServiceEFallbackFactory.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.iface.ServiceE; 4 | import feign.hystrix.FallbackFactory; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * JThink@JThink 11 | * 12 | * @author JThink 13 | * @version 0.0.1 14 | * @desc service e 服务降级 15 | * @date 2017-02-24 16:34:24 16 | */ 17 | @Component 18 | public class ServiceEFallbackFactory implements FallbackFactory { 19 | 20 | private static final Logger LOGGER = LoggerFactory.getLogger(ServiceEFallbackFactory.class); 21 | 22 | @Override 23 | public ServiceE create(Throwable cause) { 24 | return new ServiceE() { 25 | @Override 26 | public String invokeE() { 27 | ServiceEFallbackFactory.LOGGER.info(cause.toString()); 28 | ServiceEFallbackFactory.LOGGER.info("call the fallback E"); 29 | return "fallback E"; 30 | } 31 | }; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/iface/ServiceB.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.iface; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback.ServiceBFallbackFactory; 4 | import org.springframework.cloud.netflix.feign.FeignClient; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RequestMethod; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc service b 接口定义 14 | * @date 2017-02-24 16:34:24 15 | */ 16 | @FeignClient(name = "spring-cloud-service-b", fallbackFactory = ServiceBFallbackFactory.class) 17 | @RequestMapping("service-b") 18 | public interface ServiceB { 19 | 20 | @RequestMapping(value = "invokeB", method = RequestMethod.GET) 21 | String invokeB(); 22 | } 23 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/iface/ServiceC.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.iface; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback.ServiceCFallbackFactory; 4 | import org.springframework.cloud.netflix.feign.FeignClient; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RequestMethod; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc service c 接口定义 14 | * @date 2017-02-24 16:34:24 15 | */ 16 | @FeignClient(name = "spring-cloud-service-c", fallbackFactory = ServiceCFallbackFactory.class) 17 | @RequestMapping("service-c") 18 | public interface ServiceC { 19 | 20 | @RequestMapping(value = "invokeC", method = RequestMethod.GET) 21 | String invokeC(); 22 | } 23 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/iface/ServiceD.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.iface; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback.ServiceDFallbackFactory; 4 | import org.springframework.cloud.netflix.feign.FeignClient; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RequestMethod; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc service d 接口定义 14 | * @date 2017-02-24 16:34:24 15 | */ 16 | @FeignClient(name = "spring-cloud-service-d", fallbackFactory = ServiceDFallbackFactory.class) 17 | @RequestMapping("service-d") 18 | public interface ServiceD { 19 | 20 | @RequestMapping(value = "invokeD", method = RequestMethod.GET) 21 | String invokeD(); 22 | } 23 | -------------------------------------------------------------------------------- /skyeye-benchmark/spring-cloud-service/spring-cloud-service-client/src/main/java/com/jthink/skyeye/benchmark/spring/cloud/service/client/iface/ServiceE.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.benchmark.spring.cloud.service.client.iface; 2 | 3 | import com.jthink.skyeye.benchmark.spring.cloud.service.client.fallback.ServiceEFallbackFactory; 4 | import org.springframework.cloud.netflix.feign.FeignClient; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RequestMethod; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc service e 接口定义 14 | * @date 2017-02-24 16:34:24 15 | */ 16 | @FeignClient(name = "spring-cloud-service-e", fallbackFactory = ServiceEFallbackFactory.class) 17 | @RequestMapping("service-e") 18 | public interface ServiceE { 19 | 20 | @RequestMapping(value = "invokeE", method = RequestMethod.GET) 21 | String invokeE(); 22 | } 23 | -------------------------------------------------------------------------------- /skyeye-client/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-client/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | 3 | task sourcesJar(type: Jar, dependsOn: classes) { 4 | classifier = 'sources' 5 | from sourceSets.main.allSource 6 | } 7 | 8 | // task javadocJar(type: Jar, dependsOn: javadoc) { 9 | // classifier = 'javadoc' 10 | // from javadoc.destinationDir 11 | // } 12 | 13 | artifacts { 14 | archives sourcesJar 15 | // archives javadocJar 16 | } 17 | 18 | uploadArchives { 19 | repositories { 20 | mavenDeployer { 21 | repository(url: mavenReleaseUrl) { 22 | authentication(userName: 'admin', password: 'admin123') 23 | } 24 | snapshotRepository(url: mavenSnapshotUrl) { 25 | authentication(userName: 'admin', password: 'admin123') 26 | } 27 | } 28 | } 29 | } 30 | } 31 | 32 | subprojects { 33 | 34 | ext { 35 | 36 | } 37 | 38 | dependencies { 39 | compile project(':skyeye-base') 40 | compile project(':skyeye-trace:skyeye-trace-core') 41 | compile "org.apache.kafka:kafka-clients:$kafkaVersion" 42 | compile "org.apache.zookeeper:zookeeper:$zookeeperVersion" 43 | compile "com.101tec:zkclient:$zkclientVersion" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /skyeye-client/settings.gradle: -------------------------------------------------------------------------------- 1 | include 'skyeye-client-core' , 'skyeye-client-log4j', 'skyeye-client-logback', 'skyeye-client-log4j2' 2 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/build.gradle: -------------------------------------------------------------------------------- 1 | configurations { 2 | compile.exclude group: "log4j", module: "log4j" 3 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 4 | compile.exclude group: "ch.qos.logback", module: "logback-classic" 5 | compile.exclude group: "ch.qos.logback", module: "logback-core" 6 | } 7 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-client-core' 2 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/src/main/java/com/jthink/skyeye/client/core/constant/NodeMode.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.client.core.constant; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 节点性质 11 | * @date 2016-09-21 15:47:17 12 | */ 13 | public enum NodeMode { 14 | 15 | EPHEMERAL("EPHEMERAL", Constants.ROOT_PATH_EPHEMERAL), 16 | PERSISTENT("PERSISTENT", Constants.ROOT_PATH_PERSISTENT); 17 | 18 | private String symbol; 19 | 20 | private String label; 21 | 22 | private NodeMode(String symbol, String label) { 23 | this.symbol = symbol; 24 | this.label = label; 25 | } 26 | 27 | public String symbol() { 28 | return this.symbol; 29 | } 30 | 31 | public String label() { 32 | return this.label; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/src/main/java/com/jthink/skyeye/client/core/kafka/partitioner/KeyModPartitioner.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.client.core.kafka.partitioner; 2 | 3 | import org.apache.kafka.clients.producer.Partitioner; 4 | import org.apache.kafka.common.Cluster; 5 | import org.apache.kafka.common.PartitionInfo; 6 | import org.apache.kafka.common.utils.Utils; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc 自定义kafka的partitioner 17 | * @date 2016-09-09 11:23:49 18 | */ 19 | public class KeyModPartitioner implements Partitioner { 20 | 21 | @Override 22 | public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) { 23 | List partitions = cluster.partitionsForTopic(topic); 24 | int numPartitions = partitions.size(); 25 | int partitionNum = 0; 26 | try { 27 | partitionNum = Utils.murmur2(keyBytes); 28 | } catch (Exception e) { 29 | partitionNum = key.hashCode(); 30 | } 31 | 32 | return Math.abs(partitionNum % numPartitions); 33 | } 34 | 35 | @Override 36 | public void close() { 37 | 38 | } 39 | 40 | @Override 41 | public void configure(Map configs) { 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/src/main/java/com/jthink/skyeye/client/core/producer/LazySingletonProducer.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.client.core.producer; 2 | 3 | import org.apache.kafka.clients.producer.KafkaProducer; 4 | import org.apache.kafka.clients.producer.Producer; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc double check实现KafkaProducer的懒加载 14 | * @date 2016-09-09 09:02:34 15 | */ 16 | public class LazySingletonProducer { 17 | 18 | private static volatile Producer producer; 19 | 20 | /** 21 | * 私有化构造方法 22 | */ 23 | private LazySingletonProducer() { 24 | 25 | } 26 | 27 | /** 28 | * 实例化 29 | * @param config 30 | * @return 31 | */ 32 | public static Producer getInstance(Map config) { 33 | if (producer == null) { 34 | synchronized(LazySingletonProducer.class) { 35 | if (producer == null) { 36 | producer = new KafkaProducer(config); 37 | } 38 | } 39 | } 40 | return producer; 41 | } 42 | 43 | /** 44 | * 是否初始化 45 | * @return 46 | */ 47 | public static boolean isInstanced() { 48 | return producer != null; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/src/main/java/com/jthink/skyeye/client/core/util/SysUtil.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.client.core.util; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | import com.jthink.skyeye.base.util.DockerHostUtil; 5 | import com.jthink.skyeye.base.util.StringUtil; 6 | 7 | /** 8 | * JThink@JThink 9 | * 10 | * @author JThink 11 | * @version 0.0.1 12 | * @desc 系统相关的util 13 | * @date 2016-09-27 19:38:39 14 | */ 15 | public class SysUtil { 16 | 17 | public static String host = Constants.EMPTY_STR; 18 | public static String userDir = Constants.EMPTY_STR; 19 | 20 | static { 21 | // host的读取,为了配合容器部署和rancher部署,首先是需要从环境变量里面取,如果取不到再从.skyeye/host这个文件取,最后再取不到从运行机器中取 22 | host = System.getenv(Constants.COMPUTERNAME); 23 | if (StringUtil.isBlank(host)) { 24 | // 未获取到, 从docker设置的环境变量取 25 | host = System.getenv(Constants.SKYEYE_HOST_TO_REGISTRY); 26 | if (StringUtil.isBlank(host)) { 27 | // 未获取到,从.skyeye/host获取 28 | host = DockerHostUtil.readFromFile(); 29 | if (StringUtil.isBlank(host)) { 30 | // 未获取到,从运行机器中取 31 | host = DockerHostUtil.getHostFromLocal(); 32 | } 33 | } 34 | } 35 | 36 | userDir = System.getProperty("user.dir", ""); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-core/src/test/java/com/jthink/skyeye/client/core/kafka/partition/test/PartitionTest.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.client.core.kafka.partition.test; 2 | 3 | import org.apache.kafka.common.utils.Utils; 4 | 5 | import java.nio.ByteBuffer; 6 | 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc 14 | * @date 2016-11-02 14:38:47 15 | */ 16 | public class PartitionTest { 17 | 18 | public static void main(String[] args) { 19 | String app = "app-test1"; 20 | String host = "jthink"; 21 | int numPartitions = 9; 22 | 23 | String key = new StringBuilder(app).append(host).toString(); 24 | byte[] keyBytes= ByteBuffer.allocate(4).putInt(key.hashCode()).array(); 25 | int partitionNum = 0; 26 | try { 27 | partitionNum = Utils.murmur2(keyBytes); 28 | } catch (Exception e) { 29 | partitionNum = key.hashCode(); 30 | } 31 | System.out.println(Math.abs(partitionNum % numPartitions)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-log4j/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-log4j/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(':skyeye-client:skyeye-client-core') 3 | compile "log4j:log4j:$log4jVersion" 4 | } 5 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-log4j/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-client-log4j' 2 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-log4j2/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-log4j2/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(':skyeye-client:skyeye-client-core') 3 | compile "org.apache.logging.log4j:log4j-core:$log4j2Version" 4 | } 5 | 6 | configurations { 7 | compile.exclude group: "log4j", module: "log4j" 8 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 9 | } 10 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-log4j2/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-client-log4j2' 2 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-logback/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-logback/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(':skyeye-client:skyeye-client-core') 3 | compile "ch.qos.logback:logback-classic:$logbackVersion" 4 | } 5 | 6 | configurations { 7 | compile.exclude group: "log4j", module: "log4j" 8 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 9 | } 10 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-logback/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-client-logback' 2 | -------------------------------------------------------------------------------- /skyeye-client/skyeye-client-logback/src/main/java/com/jthink/skyeye/client/logback/builder/KeyBuilder.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.client.logback.builder; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc ProducerRecord需要的key参数,根据该值进行分区 9 | * @date 2016-09-09 13:23:18 10 | */ 11 | public interface KeyBuilder { 12 | 13 | /** 14 | * 生成ProducerRecord需要的key参数 15 | * @param e log event, ch.qos.logback.classic.spi.ILoggingEvent 16 | * @return 17 | */ 18 | byte[] build(E e); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /skyeye-client/zknode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-client/zknode.png -------------------------------------------------------------------------------- /skyeye-collector/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-collector/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 日志采集入库、监控报警以及索引等服务 3 | # 功能介绍 4 | - 日志索引: 日志采集入es并建立索引 5 | - 日志备份: 日志采集入文件并上传至hdfs备份 6 | - 项目信息采集: 对事件日志进行名称采集 7 | - 监控数据采集: 对监控数据建立索引存入es 8 | - rpc trace数据采集: 采集rpc 跟踪的span数据并存入hbase 9 | # 中间件介绍 10 | ## elasticsearch 11 | - app-log的字段 12 | ![](column.png) 13 | ## kafka 14 | - partition: 9个partition,项目部署3个节点,每个节点消费3个(利用kafka消费组的机制进行rebalance) 15 | - 消息有序性: 对接的系统抽象出app和host,确保每个节点上部署的一个项目的日志只进入一个partition 16 | - 消息有且仅消费一次: 利用同步和异步提交offset和回滚机制实现 17 | ## hbase(rpc trace数据) 18 | 1. trace表(数据表) 19 | 1. rowkey: traceId 20 | 2. columnFamily: span 21 | 3. qualifier: [spanId+c, spanId+s ...](有N个span就有N*2个, c/s表示是client还是server采集到的) 22 | 4. value: span json value 23 | 2. time_consume(索引表) 24 | 1. rowkey: serviceId + cs时间 25 | 2. columnFamily: trace 26 | 3. qualifier: traceId ... 27 | 4. value: 整个调用链条耗时 28 | 3. annotation(索引表) 29 | 1. rowkey: serviceId + ExceptionType + cs/sr时间 30 | 2. columnFamily: trace 31 | 3. qualifier: traceId ... 32 | 4. value: binaryAnnotation的value 33 | -------------------------------------------------------------------------------- /skyeye-collector/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | 3 | } 4 | subprojects { 5 | 6 | dependencies { 7 | compile "org.apache.kafka:kafka-clients:$kafkaVersion" 8 | compile "org.springframework.boot:spring-boot-starter:$springBootVersion" 9 | compile project (':skyeye-base') 10 | compile "org.elasticsearch:elasticsearch:$esVersion" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /skyeye-collector/column.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-collector/column.png -------------------------------------------------------------------------------- /skyeye-collector/settings.gradle: -------------------------------------------------------------------------------- 1 | include 'skyeye-collector-core', 'skyeye-collector-indexer', 'skyeye-collector-backup', 'skyeye-collector-trace' , 'skyeye-collector-metrics' 2 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD skyeye-collector-backup-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/skyeye/skyeye-collector-backup:$version . 8 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-collector-backup:$version 9 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/skyeye-collector-backup-$VERSION 9 | nohup bin/skyeye-collector-backup & 10 | tail -f /opt/jthink/jthink-config/skyeye/collector/collector-backup.properties 11 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-collector-backup' 2 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # kafka config 2 | spring.message.kafka.brokers=${kafka.brokers} 3 | spring.message.kafka.topic=${kafka.topic} 4 | spring.message.kafka.consumeGroup=${kafka.consume.group} 5 | spring.message.kafka.pollTimeout=${kafka.poll.timeout} 6 | 7 | # hdfs 8 | spring.bigdata.hadoop.hdfs.port=${hadoop.hdfs.namenode.port} 9 | spring.bigdata.hadoop.hdfs.host=${hadoop.hdfs.namenode.host} 10 | spring.bigdata.hadoop.hdfs.user=${hadoop.hdfs.user} 11 | spring.bigdata.hadoop.hdfs.baseDir=${hadoop.hdfs.baseDir} 12 | spring.bigdata.hadoop.hdfs.fileRoot=${hadoop.hdfs.fileRoot} 13 | spring.upload.log.cron=${upload.log.cron} 14 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ███████╗██╗ ██╗██╗ ██╗███████╗██╗ ██╗███████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗████████╗ ██████╗ ██████╗ 2 | ██╔════╝██║ ██╔╝╚██╗ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔════╝██╔═══██╗██║ ██║ ██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗ 3 | ███████╗█████╔╝ ╚████╔╝ █████╗ ╚████╔╝ █████╗█████╗██║ ██║ ██║██║ ██║ █████╗ ██║ ██║ ██║ ██║██████╔╝ 4 | ╚════██║██╔═██╗ ╚██╔╝ ██╔══╝ ╚██╔╝ ██╔══╝╚════╝██║ ██║ ██║██║ ██║ ██╔══╝ ██║ ██║ ██║ ██║██╔══██╗ 5 | ███████║██║ ██╗ ██║ ███████╗ ██║ ███████╗ ╚██████╗╚██████╔╝███████╗███████╗███████╗╚██████╗ ██║ ╚██████╔╝██║ ██║ 6 | ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ 7 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-backup/src/main/resources/properties/collector-backup.properties: -------------------------------------------------------------------------------- 1 | # kafka config 2 | kafka.brokers=riot01:9092,riot02:9092,riot03:9092 3 | kafka.topic=app-log 4 | kafka.consume.group=log-backup-consume-group 5 | kafka.poll.timeout=100 6 | 7 | # hdfs 8 | hadoop.hdfs.namenode.port=8020 9 | hadoop.hdfs.namenode.host=192.168.88.131 10 | hadoop.hdfs.user=qianjicheng 11 | hadoop.hdfs.baseDir=/user/qianjicheng/JThink/ 12 | hadoop.hdfs.fileRoot=/tmp/monitor-center/ 13 | upload.log.cron=0 30 0 * * ? 14 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-core/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-core/build.gradle: -------------------------------------------------------------------------------- 1 | configurations { 2 | compile.exclude group: "log4j", module: "log4j" 3 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 4 | } 5 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-core/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-collector-core' 2 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-core/src/main/java/com/jthink/skyeye/collector/core/callback/KafkaOffsetCommitCallback.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.collector.core.callback; 2 | 3 | import org.apache.kafka.clients.consumer.OffsetAndMetadata; 4 | import org.apache.kafka.clients.consumer.OffsetCommitCallback; 5 | import org.apache.kafka.common.TopicPartition; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc 17 | * @date 2016-09-20 10:22:54 18 | */ 19 | public class KafkaOffsetCommitCallback implements OffsetCommitCallback { 20 | 21 | private static final Logger LOGGER = LoggerFactory.getLogger(KafkaOffsetCommitCallback.class); 22 | 23 | @Override 24 | public void onComplete(Map offsets, Exception exception) { 25 | if (null != exception) { 26 | // 如果异步提交发生了异常 27 | LOGGER.error("commit failed for offsets {}, and exception is {}", offsets, exception); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-core/src/main/java/com/jthink/skyeye/collector/core/hook/ShutdownHookRunner.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.collector.core.hook; 2 | 3 | import com.jthink.skyeye.collector.core.task.Task; 4 | import org.apache.kafka.clients.consumer.KafkaConsumer; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc 项目启动器 14 | * @date 2017-08-03 18:31:48 15 | * @since 1.0.0 16 | */ 17 | public class ShutdownHookRunner extends Thread { 18 | 19 | private static final Logger LOGGER = LoggerFactory.getLogger(ShutdownHookRunner.class); 20 | 21 | private KafkaConsumer kafkaConsumer; 22 | 23 | private Task task; 24 | 25 | public ShutdownHookRunner(KafkaConsumer kafkaConsumer, Task task) { 26 | this.kafkaConsumer = kafkaConsumer; 27 | this.task = task; 28 | } 29 | 30 | @Override 31 | public void run() { 32 | LOGGER.info("starting to exit"); 33 | 34 | this.kafkaConsumer.wakeup(); 35 | 36 | try { 37 | this.task.executeThread().join(); 38 | } catch (InterruptedException e) { 39 | LOGGER.error("interrupted, ", e); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-core/src/main/java/com/jthink/skyeye/collector/core/task/Task.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.collector.core.task; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc kafka消费task 9 | * @date 2016-09-20 10:24:24 10 | */ 11 | public interface Task extends Runnable { 12 | 13 | /** 14 | * 执行task 15 | */ 16 | void doTask(); 17 | 18 | Thread executeThread(); 19 | } 20 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-core/src/main/resources/shell/create-topic.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # zk servers, 192.168.88.70:2181,192.168.88.71:2181,192.168.88.72:2181/kafka/0.10.0.1 4 | urls=$1 5 | 6 | bin/kafka-topics.sh --create --zookeeper ${urls} --replication-factor 3 --partitions 3 --topic app-log -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'org.springframework.boot' 2 | apply plugin: 'application' 3 | 4 | dependencies { 5 | compile project(':skyeye-collector:skyeye-collector-core') 6 | 7 | testCompile "org.springframework.boot:spring-boot-starter-test" 8 | } 9 | 10 | configurations { 11 | compile.exclude group: "log4j", module: "log4j" 12 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 13 | } 14 | 15 | mainClassName = "com.jthink.skyeye.collector.indexer.launcher.Launcher" 16 | 17 | buildscript { 18 | 19 | repositories { 20 | mavenLocal() 21 | maven { url mavenPublicUrl } 22 | mavenCentral() 23 | } 24 | 25 | dependencies { 26 | classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion") 27 | classpath("io.spring.gradle:dependency-management-plugin:$gradlePluginVersion") 28 | } 29 | } 30 | 31 | startScripts { 32 | doLast { 33 | unixScript.text = unixScript.text.replaceAll("lib/(.*)\n", "lib/\\*") 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD skyeye-collector-indexer-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/skyeye/skyeye-collector-indexer:$version . 8 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-collector-indexer:$version 9 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/skyeye-collector-indexer-$VERSION 9 | nohup bin/skyeye-collector-indexer & 10 | tail -f /opt/jthink/jthink-config/skyeye/collector/collector-indexer.properties 11 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-collector-indexer' 2 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # kafka config 2 | spring.message.kafka.brokers=${kafka.brokers} 3 | spring.message.kafka.topic=${kafka.topic} 4 | spring.message.kafka.consumeGroup=${kafka.consume.group} 5 | spring.message.kafka.pollTimeout=${kafka.poll.timeout} 6 | 7 | # es config 8 | spring.indexer.es.ips=${es.ips} 9 | spring.indexer.es.cluster=${es.cluster} 10 | spring.indexer.es.port=${es.port} 11 | spring.indexer.es.sniff=${es.sniff} 12 | spring.indexer.es.index=${es.index} 13 | spring.indexer.es.doc=${es.doc} 14 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ███████╗██╗ ██╗██╗ ██╗███████╗██╗ ██╗███████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗████████╗ ██████╗ ██████╗ 2 | ██╔════╝██║ ██╔╝╚██╗ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔════╝██╔═══██╗██║ ██║ ██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗ 3 | ███████╗█████╔╝ ╚████╔╝ █████╗ ╚████╔╝ █████╗█████╗██║ ██║ ██║██║ ██║ █████╗ ██║ ██║ ██║ ██║██████╔╝ 4 | ╚════██║██╔═██╗ ╚██╔╝ ██╔══╝ ╚██╔╝ ██╔══╝╚════╝██║ ██║ ██║██║ ██║ ██╔══╝ ██║ ██║ ██║ ██║██╔══██╗ 5 | ███████║██║ ██╗ ██║ ███████╗ ██║ ███████╗ ╚██████╗╚██████╔╝███████╗███████╗███████╗╚██████╗ ██║ ╚██████╔╝██║ ██║ 6 | ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ 7 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/src/main/resources/properties/collector-indexer.properties: -------------------------------------------------------------------------------- 1 | # kafka config 2 | kafka.brokers=riot01:9092,riot02:9092,riot03:9092 3 | kafka.topic=app-log 4 | kafka.consume.group=es-indexer-consume-group 5 | kafka.poll.timeout=100 6 | 7 | # es config 8 | es.ips=riot01,riot02,riot03 9 | es.cluster=mondeo 10 | es.port=9300 11 | es.sniff=true 12 | es.index=app-log 13 | es.doc=log 14 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/src/main/resources/shell/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "--> install python-pip module" 4 | sudo apt-get install python-pip 5 | echo "--> install elasticsearch module" 6 | sudo pip install pyelasticsearch -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-indexer/src/main/resources/shell/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 索引 4 | # urls http://192.168.88.70:9200,http://192.168.88.71:9200,http://192.168.88.72:9200 5 | # call: bash start.sh app-log http://192.168.88.70:9200,http://192.168.88.71:9200,http://192.168.88.72:9200 6 | 7 | index=$1 8 | urls=$2 9 | 10 | echo '创建索引开始' 11 | python create-index.py ${index} ${urls} 12 | echo '创建索引结束' -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'org.springframework.boot' 2 | apply plugin: 'application' 3 | 4 | dependencies { 5 | compile project(':skyeye-collector:skyeye-collector-core') 6 | 7 | compile "org.springframework.boot:spring-boot-starter-data-redis:$springBootVersion" 8 | compile project(':skyeye-data:skyeye-data-jpa') 9 | compile project(':skyeye-data:skyeye-data-rabbitmq') 10 | compile "org.apache.zookeeper:zookeeper:$zookeeperVersion" 11 | compile "com.101tec:zkclient:$zkclientVersion" 12 | compile "commons-lang:commons-lang:2.6" 13 | 14 | testCompile "org.springframework.boot:spring-boot-starter-test" 15 | } 16 | 17 | configurations { 18 | compile.exclude group: "log4j", module: "log4j" 19 | compile.exclude group: "org.slf4j", module: "slf4j-log4j12" 20 | } 21 | 22 | mainClassName = "com.jthink.skyeye.collector.metrics.launcher.Launcher" 23 | 24 | buildscript { 25 | 26 | repositories { 27 | mavenLocal() 28 | maven { url mavenPublicUrl } 29 | mavenCentral() 30 | } 31 | 32 | dependencies { 33 | classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion") 34 | classpath("io.spring.gradle:dependency-management-plugin:$gradlePluginVersion") 35 | } 36 | } 37 | 38 | startScripts { 39 | doLast { 40 | unixScript.text = unixScript.text.replaceAll("lib/(.*)\n", "lib/\\*") 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD skyeye-collector-metrics-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/skyeye/skyeye-collector-metrics:$version . 8 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-collector-metrics:$version 9 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/skyeye-collector-metrics-$VERSION 9 | nohup bin/skyeye-collector-metrics & 10 | tail -f /opt/jthink/jthink-config/skyeye/collector/collector-metrics.properties 11 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-collector-metrics' 2 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/src/main/java/com/jthink/skyeye/collector/metrics/task/job/Job.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.collector.metrics.task.job; 2 | 3 | import com.jthink.skyeye.base.constant.EventType; 4 | import com.jthink.skyeye.base.dto.EventLog; 5 | import com.jthink.skyeye.base.dto.LogDto; 6 | import org.elasticsearch.action.bulk.BulkRequestBuilder; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc info collect consume group的具体业务处理根类 16 | * @date 2016-11-21 15:51:39 17 | */ 18 | public abstract class Job { 19 | 20 | // 下一个处理链条 21 | private Job nextJob; 22 | // 每个job能处理的消息类型 23 | private List types; 24 | 25 | /** 26 | * 执行具体的业务处理 27 | */ 28 | public abstract void doJob(EventLog log, LogDto logDto, BulkRequestBuilder bulkRequest); 29 | 30 | public Job(List types) { 31 | this.types = types; 32 | } 33 | 34 | public Job getNextJob() { 35 | return nextJob; 36 | } 37 | 38 | public void setNextJob(Job nextJob) { 39 | this.nextJob = nextJob; 40 | } 41 | 42 | public List getTypes() { 43 | return types; 44 | } 45 | 46 | public void setTypes(List types) { 47 | this.types = types; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ███████╗██╗ ██╗██╗ ██╗███████╗██╗ ██╗███████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗████████╗ ██████╗ ██████╗ 2 | ██╔════╝██║ ██╔╝╚██╗ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔════╝██╔═══██╗██║ ██║ ██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗ 3 | ███████╗█████╔╝ ╚████╔╝ █████╗ ╚████╔╝ █████╗█████╗██║ ██║ ██║██║ ██║ █████╗ ██║ ██║ ██║ ██║██████╔╝ 4 | ╚════██║██╔═██╗ ╚██╔╝ ██╔══╝ ╚██╔╝ ██╔══╝╚════╝██║ ██║ ██║██║ ██║ ██╔══╝ ██║ ██║ ██║ ██║██╔══██╗ 5 | ███████║██║ ██╗ ██║ ███████╗ ██║ ███████╗ ╚██████╗╚██████╔╝███████╗███████╗███████╗╚██████╗ ██║ ╚██████╔╝██║ ██║ 6 | ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ 7 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/src/main/resources/properties/collector-metrics.properties: -------------------------------------------------------------------------------- 1 | # kafka config 2 | kafka.brokers=riot01:9092,riot02:9092,riot03:9092 3 | kafka.topic=app-log 4 | kafka.consume.group=info-collect-consume-group 5 | kafka.poll.timeout=100 6 | 7 | # es config 8 | es.ips=riot01,riot02,riot03 9 | es.cluster=mondeo 10 | es.port=9300 11 | es.sniff=true 12 | es.index=event-log 13 | es.doc=log 14 | 15 | # redis config 16 | redis.host=localhost 17 | redis.port=6379 18 | redis.password= 19 | 20 | # mysql config 21 | database.address=localhost:3306 22 | database.name=monitor-center 23 | database.username=root 24 | database.password=root 25 | 26 | # log_mailer request queue 27 | rabbit.request.addresses=localhost:5672 28 | rabbit.request.username=jthink 29 | rabbit.request.password=jthink 30 | rabbit.request.vhost=/dev 31 | rabbit.request.channelCacheSize=50 32 | rabbit.request.queue=log_mailer 33 | rabbit.request.exchange=direct.log 34 | rabbit.request.routingKey=log.key 35 | 36 | # zk 37 | zookeeper.zkServers=riot01:2181,riot02:2181,riot03:2181 38 | zookeeper.sessionTimeout=60000 39 | zookeeper.connectionTimeout=5000 40 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/src/main/resources/shell/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "--> install python-pip module" 4 | sudo apt-get install python-pip 5 | echo "--> install elasticsearch module" 6 | sudo pip install pyelasticsearch -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-metrics/src/main/resources/shell/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 索引 4 | # urls http://192.168.88.70:9200,http://192.168.88.71:9200,http://192.168.88.72:9200 5 | # call: bash start.sh event-log http://192.168.88.70:9200,http://192.168.88.71:9200,http://192.168.88.72:9200 6 | 7 | index=$1 8 | urls=$2 9 | 10 | echo '创建索引开始' 11 | python create-index.py ${index} ${urls} 12 | echo '创建索引结束' -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD skyeye-collector-trace-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/skyeye/skyeye-collector-trace:$version . 8 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-collector-trace:$version 9 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/skyeye-collector-trace-$VERSION 9 | nohup bin/skyeye-collector-trace & 10 | tail -f /opt/jthink/jthink-config/skyeye/collector/collector-trace.properties 11 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-collector-trace' 2 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/src/main/java/com/jthink/skyeye/collector/trace/store/Store.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.collector.trace.store; 2 | 3 | import com.jthink.skyeye.base.dapper.Annotation; 4 | import com.jthink.skyeye.base.dapper.Span; 5 | import org.apache.hadoop.hbase.client.Put; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc span信息存储入库接口 16 | * @date 2017-02-17 09:46:22 17 | */ 18 | public interface Store { 19 | 20 | /** 21 | * 存储span 22 | * @param span 23 | * @param spanJson 24 | * @param annotationMap 25 | * @return 26 | */ 27 | Put storeSpan(Span span, String spanJson, Map annotationMap); 28 | 29 | /** 30 | * 存储trace, 保存每个trace耗时 31 | * @param span 32 | * @param annotationMap 33 | * @return 34 | */ 35 | Put storeTrace(Span span, Map annotationMap); 36 | 37 | /** 38 | * 存储annotation, 保存自定义的异常信息 39 | * @param span 40 | * @param annotationMap 41 | * @return 42 | */ 43 | List storeAnnotation(Span span, Map annotationMap); 44 | 45 | /** 46 | * 存储所有的信息 47 | * @param spanJson 48 | * @param span 49 | * @return 50 | */ 51 | Map> store(String spanJson, Span span); 52 | } 53 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ███████╗██╗ ██╗██╗ ██╗███████╗██╗ ██╗███████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ██████╗████████╗ ██████╗ ██████╗ 2 | ██╔════╝██║ ██╔╝╚██╗ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔════╝██╔═══██╗██║ ██║ ██╔════╝██╔════╝╚══██╔══╝██╔═══██╗██╔══██╗ 3 | ███████╗█████╔╝ ╚████╔╝ █████╗ ╚████╔╝ █████╗█████╗██║ ██║ ██║██║ ██║ █████╗ ██║ ██║ ██║ ██║██████╔╝ 4 | ╚════██║██╔═██╗ ╚██╔╝ ██╔══╝ ╚██╔╝ ██╔══╝╚════╝██║ ██║ ██║██║ ██║ ██╔══╝ ██║ ██║ ██║ ██║██╔══██╗ 5 | ███████║██║ ██╗ ██║ ███████╗ ██║ ███████╗ ╚██████╗╚██████╔╝███████╗███████╗███████╗╚██████╗ ██║ ╚██████╔╝██║ ██║ 6 | ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚══════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ 7 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/src/main/resources/properties/collector-trace.properties: -------------------------------------------------------------------------------- 1 | # kafka config 2 | kafka.brokers=riot01:9092,riot02:9092,riot03:9092 3 | kafka.topic=app-log 4 | kafka.consume.group=rpc-trace-consume-group 5 | kafka.poll.timeout=100 6 | 7 | # redis config 8 | redis.host=localhost 9 | redis.port=6379 10 | redis.password= 11 | 12 | # mysql config 13 | database.address=localhost:3306 14 | database.name=monitor-center 15 | database.username=root 16 | database.password=root 17 | 18 | # hbase config 19 | hbase.quorum=panda-01,panda-01,panda-03 20 | hbase.rootDir=hdfs://panda-01:8020/hbase 21 | hbase.zookeeper.znode.parent=/hbase 22 | -------------------------------------------------------------------------------- /skyeye-collector/skyeye-collector-trace/src/main/resources/shell/hbase: -------------------------------------------------------------------------------- 1 | create 'trace', {NAME => 'span', VERSIONS => 1, COMPRESSION => 'SNAPPY'}, {NUMREGIONS => 3, SPLITALGO => 'HexStringSplit'} 2 | create 'time_consume', {NAME => 'trace', VERSIONS => 1, COMPRESSION => 'SNAPPY'}, {NUMREGIONS => 3, SPLITALGO => 'HexStringSplit'} 3 | create 'annotation', {NAME => 'trace', VERSIONS => 1, COMPRESSION => 'SNAPPY'}, {NUMREGIONS => 3, SPLITALGO => 'HexStringSplit'} 4 | -------------------------------------------------------------------------------- /skyeye-data/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-data/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 监控组数据抽象层 3 | 4 | ## 子项目介绍 5 | - skyeye-data-hbase: 抽象出hbase(1.x的CDH版本新api)的Get、Put、Delete、Update等操作并制作成spring-boot的starter,并集成了中间件数据采集(即使用该module的项目无需单独再写接入中间件采集的代码) 6 | - skyeye-data-http: 抽象出http的get操作提供给监控组所有的项目使用 7 | - skyeye-data-jpa: jpa相关的操作 8 | - skyeye-data-rabbitmq: 抽象出报警队列的读取和消费,提供给监控组多个项目使用 -------------------------------------------------------------------------------- /skyeye-data/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | 3 | task sourcesJar(type: Jar, dependsOn: classes) { 4 | classifier = 'sources' 5 | from sourceSets.main.allSource 6 | } 7 | 8 | artifacts { 9 | archives sourcesJar 10 | } 11 | // 12 | // uploadArchives { 13 | // repositories { 14 | // mavenDeployer { 15 | // repository(url: mavenReleaseUrl) { 16 | // authentication(userName: 'admin', password: 'admin123') 17 | // } 18 | // snapshotRepository(url: mavenSnapshotUrl) { 19 | // authentication(userName: 'admin', password: 'admin123') 20 | // } 21 | // } 22 | // } 23 | // } 24 | } 25 | 26 | subprojects { 27 | 28 | ext { 29 | 30 | } 31 | 32 | dependencies { 33 | compile "org.slf4j:slf4j-api:$slf4jVersion" 34 | compile project(':skyeye-base') 35 | 36 | testCompile "junit:junit:4.12" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /skyeye-data/settings.gradle: -------------------------------------------------------------------------------- 1 | include 'skyeye-data-dubbo', 'skyeye-data-dubbox', 'skyeye-data-hbase', 'skyeye-data-http', 'skyeye-data-jpa', 'skyeye-data-rabbitmq' 2 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbo/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbo/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile "org.springframework.boot:spring-boot-autoconfigure:$springBootVersion" 3 | compile "org.springframework:spring-tx:$springVersion" 4 | compile ("com.alibaba:dubbo-config-spring:$dubboVersion") 5 | compile ("com.alibaba:dubbo-registry-zookeeper:$dubboVersion") 6 | compile ("com.alibaba:dubbo-rpc-default:$dubboVersion") 7 | compile ("com.alibaba:dubbo-remoting-netty:$dubboVersion") 8 | compile ("com.alibaba:dubbo-monitor-default:$dubboVersion") 9 | } 10 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbo/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-data-dubbo' 2 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbo/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.jthink.skyeye.data.dubbo.DubboAutoConfiguration -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbox/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbox/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile "org.springframework.boot:spring-boot-autoconfigure:$springBootVersion" 3 | compile "org.springframework:spring-tx:$springVersion" 4 | compile ("com.alibaba:dubbo-config-spring:$dubboxVersion") 5 | compile ("com.alibaba:dubbo-registry-zookeeper:$dubboxVersion") 6 | compile ("com.alibaba:dubbo-rpc-default:$dubboxVersion") 7 | compile ("com.alibaba:dubbo-remoting-netty:$dubboxVersion") 8 | compile ("com.alibaba:dubbo-monitor-default:$dubboxVersion") 9 | } 10 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbox/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-data-dubbox' 2 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-dubbox/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.jthink.skyeye.data.dubbox.DubboAutoConfiguration -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/build.gradle: -------------------------------------------------------------------------------- 1 | repositories { 2 | mavenLocal() 3 | maven { url mavenClouderaUrl } 4 | mavenCentral() 5 | } 6 | 7 | dependencies { 8 | compile "org.springframework.boot:spring-boot-autoconfigure:$springBootVersion" 9 | compile "org.springframework:spring-tx:$springVersion" 10 | compile ("org.apache.hbase:hbase-client:$hbaseVersion") { 11 | exclude group: 'javax.servlet', module: 'servlet-api' 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-data-hbase' 2 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/src/main/java/com/jthink/skyeye/data/hbase/api/HbaseSystemException.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.hbase.api; 2 | 3 | import org.springframework.dao.UncategorizedDataAccessException; 4 | 5 | /** 6 | * HBase Data Access exception. 7 | * 8 | * @author Costin Leau 9 | */ 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc copy from spring data hadoop hbase, modified by JThink 16 | * @date 2016-11-15 16:08:41 17 | */ 18 | public class HbaseSystemException extends UncategorizedDataAccessException { 19 | 20 | public HbaseSystemException(Exception cause) { 21 | super(cause.getMessage(), cause); 22 | } 23 | 24 | public HbaseSystemException(Throwable throwable) { 25 | super(throwable.getMessage(), throwable); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/src/main/java/com/jthink/skyeye/data/hbase/api/MutatorCallback.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.hbase.api; 2 | 3 | import org.apache.hadoop.hbase.client.BufferedMutator; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc callback for hbase put delete and update 11 | * @date 2016-12-08 14:31:34 12 | */ 13 | public interface MutatorCallback { 14 | 15 | /** 16 | * 使用mutator api to update put and delete 17 | * @param mutator 18 | * @throws Throwable 19 | */ 20 | void doInMutator(BufferedMutator mutator) throws Throwable; 21 | } 22 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/src/main/java/com/jthink/skyeye/data/hbase/api/RowMapper.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.hbase.api; 2 | 3 | import org.apache.hadoop.hbase.client.Result; 4 | 5 | /** 6 | * Callback for mapping rows of a {@link ResultScanner} on a per-row basis. 7 | * Implementations of this interface perform the actual work of mapping each row to a result object, but don't need to worry about exception handling. 8 | * 9 | * @author Costin Leau 10 | */ 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc copy from spring data hadoop hbase, modified by JThink, use the 1.0.0 api 17 | * @date 2016-11-15 15:42:46 18 | */ 19 | public interface RowMapper { 20 | 21 | T mapRow(Result result, int rowNum) throws Exception; 22 | } 23 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/src/main/java/com/jthink/skyeye/data/hbase/api/TableCallback.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.hbase.api; 2 | 3 | import org.apache.hadoop.hbase.client.Table; 4 | 5 | /** 6 | * Callback interface for Hbase code. To be used with {@link HbaseTemplate}'s execution methods, often as anonymous classes within a method implementation without 7 | * having to worry about exception handling. 8 | * 9 | * @author Costin Leau 10 | */ 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc copy from spring data hadoop hbase, modified by JThink, use the 1.0.0 api 17 | * @date 2016-11-15 14:49:52 18 | */ 19 | public interface TableCallback { 20 | 21 | /** 22 | * Gets called by {@link HbaseTemplate} execute with an active Hbase table. Does need to care about activating or closing down the table. 23 | * 24 | * @param table active Hbase table 25 | * @return a result object, or null if none 26 | * @throws Throwable thrown by the Hbase API 27 | */ 28 | T doInTable(Table table) throws Throwable; 29 | } -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/src/main/java/com/jthink/skyeye/data/hbase/boot/HbaseProperties.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.hbase.boot; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 11 | * @date 2016-11-16 14:51:42 12 | */ 13 | @ConfigurationProperties(prefix = "spring.data.hbase") 14 | public class HbaseProperties { 15 | 16 | private String quorum; 17 | 18 | private String rootDir; 19 | 20 | private String nodeParent; 21 | 22 | public String getQuorum() { 23 | return quorum; 24 | } 25 | 26 | public void setQuorum(String quorum) { 27 | this.quorum = quorum; 28 | } 29 | 30 | public String getRootDir() { 31 | return rootDir; 32 | } 33 | 34 | public void setRootDir(String rootDir) { 35 | this.rootDir = rootDir; 36 | } 37 | 38 | public String getNodeParent() { 39 | return nodeParent; 40 | } 41 | 42 | public void setNodeParent(String nodeParent) { 43 | this.nodeParent = nodeParent; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-hbase/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.jthink.skyeye.data.hbase.boot.HbaseAutoConfiguration -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-http/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-http/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 监控组http请求封装 -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-http/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile "org.apache.httpcomponents:httpclient:$httpclientVersion" 3 | } 4 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-http/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-data-http' 2 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-http/src/test/java/com/jthink/skyeye/data/http/test/HttpRequestTest.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.http.test; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc http请求 9 | * @date 2016-11-17 10:49:52 10 | */ 11 | public class HttpRequestTest { 12 | 13 | public static void main(String[] args) { 14 | 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 监控组orm层 -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") 3 | 4 | compile ("org.apache.commons:commons-dbcp2:2.1.1") 5 | compile ("mysql:mysql-connector-java:5.1.43") 6 | } 7 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-data-jpa' 2 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/configuration/JpaConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.configuration; 2 | 3 | import org.springframework.boot.autoconfigure.domain.EntityScan; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 6 | import org.springframework.transaction.annotation.EnableTransactionManagement; 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | * @desc jpa相关的配置 14 | * @date 2016-08-26 09:32:15 15 | */ 16 | @Configuration 17 | @EnableTransactionManagement 18 | @EntityScan("com.jthink.skyeye.data.jpa.domain") 19 | @EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager", basePackages = { "com.jthink.skyeye.data.jpa.repository" }) 20 | public class JpaConfiguration { 21 | } 22 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/domain/AppInfo.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.domain; 2 | 3 | import com.jthink.skyeye.data.jpa.pk.AppInfoPK; 4 | 5 | import javax.persistence.Column; 6 | import javax.persistence.Entity; 7 | import javax.persistence.Id; 8 | import javax.persistence.Table; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc app info 16 | * @date 2016-10-09 09:57:28 17 | */ 18 | @Entity 19 | @Table(name = "app_info") 20 | public class AppInfo { 21 | 22 | @Id 23 | private AppInfoPK appInfoPK; 24 | 25 | @Column(name = "status") 26 | private String status; 27 | 28 | @Column(name = "deploy", nullable = false) 29 | private String deploy; 30 | 31 | public AppInfoPK getAppInfoPK() { 32 | return appInfoPK; 33 | } 34 | 35 | public void setAppInfoPK(AppInfoPK appInfoPK) { 36 | this.appInfoPK = appInfoPK; 37 | } 38 | 39 | public String getStatus() { 40 | return status; 41 | } 42 | 43 | public void setStatus(String status) { 44 | this.status = status; 45 | } 46 | 47 | public String getDeploy() { 48 | return deploy; 49 | } 50 | 51 | public void setDeploy(String deploy) { 52 | this.deploy = deploy; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/domain/NameInfo.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.domain; 2 | 3 | import com.jthink.skyeye.data.jpa.pk.NameInfoPK; 4 | 5 | import javax.persistence.Column; 6 | import javax.persistence.Entity; 7 | import javax.persistence.Id; 8 | import javax.persistence.Table; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc name info entity 16 | * @date 2016-11-17 09:17:19 17 | */ 18 | @Entity 19 | @Table(name = "name_info") 20 | public class NameInfo { 21 | 22 | // 联合主键 23 | @Id 24 | private NameInfoPK nameInfoPK; 25 | // 来自哪个app 26 | @Column(name = "app") 27 | private String app; 28 | // 属于哪个报警模板 29 | @Column(name = "tid") 30 | private Integer tid; 31 | 32 | public NameInfoPK getNameInfoPK() { 33 | return nameInfoPK; 34 | } 35 | 36 | public void setNameInfoPK(NameInfoPK nameInfoPK) { 37 | this.nameInfoPK = nameInfoPK; 38 | } 39 | 40 | public String getApp() { 41 | return app; 42 | } 43 | 44 | public void setApp(String app) { 45 | this.app = app; 46 | } 47 | 48 | public Integer getTid() { 49 | return tid; 50 | } 51 | 52 | public NameInfo setTid(Integer tid) { 53 | this.tid = tid; 54 | return this; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/domain/ServiceInfo.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.domain; 2 | 3 | import com.jthink.skyeye.data.jpa.pk.ServiceInfoPK; 4 | 5 | import javax.persistence.Column; 6 | import javax.persistence.Entity; 7 | import javax.persistence.Id; 8 | import javax.persistence.Table; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc rpc服务注册表 16 | * @date 2017-02-23 15:42:31 17 | */ 18 | @Entity 19 | @Table(name = "service_info") 20 | public class ServiceInfo { 21 | 22 | @Id 23 | private ServiceInfoPK serviceInfoPK; 24 | // 为该服务分配的id, 每个iface作为一个service,同一个iface有1或多个method, 该id设置为serviceId(即,iface_method) 25 | @Column(name = "sid", nullable = false) 26 | private String sid; 27 | 28 | public ServiceInfoPK getServiceInfoPK() { 29 | return serviceInfoPK; 30 | } 31 | 32 | public ServiceInfo setServiceInfoPK(ServiceInfoPK serviceInfoPK) { 33 | this.serviceInfoPK = serviceInfoPK; 34 | return this; 35 | } 36 | 37 | public String getSid() { 38 | return sid; 39 | } 40 | 41 | public ServiceInfo setSid(String sid) { 42 | this.sid = sid; 43 | return this; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/dto/AppStatusDto.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.dto; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 9 | * @date 2016-10-09 21:09:37 10 | */ 11 | public class AppStatusDto { 12 | 13 | private String host; 14 | 15 | private String app; 16 | 17 | private String status; 18 | 19 | private String deploy; 20 | 21 | public AppStatusDto(String host, String app, String status, String deploy) { 22 | this.host = host; 23 | this.app = app; 24 | this.status = status; 25 | this.deploy = deploy; 26 | } 27 | 28 | public String getHost() { 29 | return host; 30 | } 31 | 32 | public void setHost(String host) { 33 | this.host = host; 34 | } 35 | 36 | public String getApp() { 37 | return app; 38 | } 39 | 40 | public void setApp(String app) { 41 | this.app = app; 42 | } 43 | 44 | public String getStatus() { 45 | return status; 46 | } 47 | 48 | public void setStatus(String status) { 49 | this.status = status; 50 | } 51 | 52 | public String getDeploy() { 53 | return deploy; 54 | } 55 | 56 | public void setDeploy(String deploy) { 57 | this.deploy = deploy; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/dto/NameInfoDto.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.dto; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc name info dto 9 | * @date 2016-11-17 09:17:19 10 | */ 11 | public class NameInfoDto { 12 | 13 | private String name; 14 | private String type; 15 | private String app; 16 | 17 | public NameInfoDto() { 18 | } 19 | 20 | public NameInfoDto(String name, String type, String app) { 21 | this.name = name; 22 | this.type = type; 23 | this.app = app; 24 | } 25 | 26 | public String getName() { 27 | return name; 28 | } 29 | 30 | public void setName(String name) { 31 | this.name = name; 32 | } 33 | 34 | public String getType() { 35 | return type; 36 | } 37 | 38 | public void setType(String type) { 39 | this.type = type; 40 | } 41 | 42 | public String getApp() { 43 | return app; 44 | } 45 | 46 | public void setApp(String app) { 47 | this.app = app; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/repository/MonitorTemplateRepository.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.repository; 2 | 3 | import com.jthink.skyeye.data.jpa.domain.MonitorTemplate; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | /** 7 | * JThink@JThink 8 | * 9 | * @author JThink 10 | * @version 0.0.1 11 | * @desc 监控模板Repository 12 | * @date 2016-10-09 09:57:28 13 | */ 14 | public interface MonitorTemplateRepository extends JpaRepository { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/repository/NameInfoRepository.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.repository; 2 | 3 | import com.jthink.skyeye.data.jpa.domain.NameInfo; 4 | import com.jthink.skyeye.data.jpa.dto.NameInfoDto; 5 | import com.jthink.skyeye.data.jpa.pk.NameInfoPK; 6 | import org.springframework.data.jpa.repository.Query; 7 | import org.springframework.data.repository.CrudRepository; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc 17 | * @date 2016-11-22 13:59:31 18 | */ 19 | public interface NameInfoRepository extends CrudRepository { 20 | 21 | @Query(value = "select new com.jthink.skyeye.data.jpa.dto.NameInfoDto(a.nameInfoPK.name, a.nameInfoPK.type, a.app)" 22 | + "from NameInfo a where a.nameInfoPK.type=?1") 23 | List findBySql(String type); 24 | 25 | @Query(value = "select new com.jthink.skyeye.data.jpa.dto.NameInfoDto(a.nameInfoPK.name, a.nameInfoPK.type, a.app)" 26 | + "from NameInfo a where a.nameInfoPK.type=?1 and a.nameInfoPK.name=?2") 27 | List findBySql(String type, String name); 28 | 29 | /** 30 | * 查询属于tid模板的所有name info 31 | * @param tid 32 | * @return 33 | */ 34 | List findByTid(Integer tid); 35 | } 36 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-jpa/src/main/java/com/jthink/skyeye/data/jpa/repository/ServiceInfoRepository.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.jpa.repository; 2 | 3 | import com.jthink.skyeye.data.jpa.domain.ServiceInfo; 4 | import com.jthink.skyeye.data.jpa.pk.ServiceInfoPK; 5 | import org.springframework.data.jpa.repository.Query; 6 | import org.springframework.data.repository.CrudRepository; 7 | 8 | import java.util.List; 9 | /** 10 | * JThink@JThink 11 | * 12 | * @author JThink 13 | * @version 0.0.1 14 | * @desc 15 | * @date 2017-03-29 15:32:13 16 | */ 17 | public interface ServiceInfoRepository extends CrudRepository { 18 | @Query(value = "select distinct s.serviceInfoPK.iface from ServiceInfo s") 19 | List findAllIface(); 20 | 21 | @Query(value = "select s.serviceInfoPK.method from ServiceInfo s where s.serviceInfoPK.iface=?") 22 | List findMethodByIface(String iface); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-rabbitmq/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-rabbitmq/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 监控组rabbitmq操作封装 -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-rabbitmq/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile ("org.springframework.boot:spring-boot-starter-amqp:$springBootVersion") { 3 | exclude group: 'org.springframework', module: 'spring-web' 4 | } 5 | compile "org.springframework:spring-tx:$springVersion" 6 | compile "org.codehaus.jackson:jackson-core-asl:$jacksonVersion" 7 | compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion" 8 | } 9 | -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-rabbitmq/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-data-rabbitmq' -------------------------------------------------------------------------------- /skyeye-data/skyeye-data-rabbitmq/src/main/java/com/jthink/skyeye/data/rabbitmq/service/RabbitmqService.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.data.rabbitmq.service; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | import com.jthink.skyeye.base.dto.MailDto; 5 | import org.springframework.amqp.rabbit.core.RabbitTemplate; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.Arrays; 10 | 11 | /** 12 | * JThink@JThink 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | * @desc 封装monitor-center需要的rabbit操作 17 | * @date 2016-11-23 09:03:16 18 | */ 19 | @Service 20 | public class RabbitmqService { 21 | 22 | @Autowired 23 | private RabbitTemplate rabbitTemplate; 24 | 25 | public void sendMessage(String info, String mail) { 26 | this.rabbitTemplate.convertAndSend(this.buildMailDto(info, mail)); 27 | } 28 | 29 | /** 30 | * 构造mailDto 31 | * @param info 32 | * @param mail 33 | * @return 34 | */ 35 | private MailDto buildMailDto(String info, String mail) { 36 | MailDto mailDto = new MailDto(); 37 | mailDto.setTo(Arrays.asList(mail.split(Constants.COMMA))); 38 | mailDto.setContent(info); 39 | mailDto.setSubject(Constants.MONITOR_MAIL_SUBJECT); 40 | return mailDto; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /skyeye-monitor/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-monitor/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 系统监控报警 3 | # 功能介绍 4 | - 系统监控:对对接的系统进行进程级别的监控,保证系统在正常启动和升级停止的时候能够进行邮件报警,保证系统发生异常意外停止的时候能够邮件报警 5 | - 日志采集器监控:对对接的系统内嵌的日志采集存活性进行监控,保证采集器意外终止会发生报警,但不会block对接的系统 6 | -------------------------------------------------------------------------------- /skyeye-monitor/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD skyeye-monitor-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-monitor/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/skyeye/skyeye-monitor:$version . 8 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-monitor:$version 9 | -------------------------------------------------------------------------------- /skyeye-monitor/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/skyeye-monitor-$VERSION 9 | nohup bin/skyeye-monitor & 10 | tail -f /opt/jthink/jthink-config/skyeye/monitor/monitor.properties 11 | -------------------------------------------------------------------------------- /skyeye-monitor/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-monitor' -------------------------------------------------------------------------------- /skyeye-monitor/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ▄████████ ▄█ ▄█▄ ▄██ ▄ ▄████████ ▄██ ▄ ▄████████ ▄▄▄▄███▄▄▄▄ ▄██████▄ ███▄▄▄▄ ▄█ ███ ▄██████▄ ▄████████ 2 | ███ ███ ███ ▄███▀ ███ ██▄ ███ ███ ███ ██▄ ███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███▀▀▀██▄ ███ ▀█████████▄ ███ ███ ███ ███ 3 | ███ █▀ ███▐██▀ ███▄▄▄███ ███ █▀ ███▄▄▄███ ███ █▀ ███ ███ ███ ███ ███ ███ ███ ███▌ ▀███▀▀██ ███ ███ ███ ███ 4 | ███ ▄█████▀ ▀▀▀▀▀▀███ ▄███▄▄▄ ▀▀▀▀▀▀███ ▄███▄▄▄ ███ ███ ███ ███ ███ ███ ███ ███▌ ███ ▀ ███ ███ ▄███▄▄▄▄██▀ 5 | ▀███████████ ▀▀█████▄ ▄██ ███ ▀▀███▀▀▀ ▄██ ███ ▀▀███▀▀▀ ███ ███ ███ ███ ███ ███ ███ ███▌ ███ ███ ███ ▀▀███▀▀▀▀▀ 6 | ███ ███▐██▄ ███ ███ ███ █▄ ███ ███ ███ █▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀███████████ 7 | ▄█ ███ ███ ▀███▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ 8 | ▄████████▀ ███ ▀█▀ ▀█████▀ ██████████ ▀█████▀ ██████████ ▀█ ███ █▀ ▀██████▀ ▀█ █▀ █▀ ▄████▀ ▀██████▀ ███ ███ 9 | ▀ ███ ███ -------------------------------------------------------------------------------- /skyeye-monitor/src/main/resources/properties/monitor.properties: -------------------------------------------------------------------------------- 1 | # zk 2 | zookeeper.zkServers=riot01:2181,riot02:2181,riot03:2181 3 | zookeeper.sessionTimeout=60000 4 | zookeeper.connectionTimeout=5000 5 | zookeeper.baseSleepTimeMs=1000 6 | zookeeper.maxRetries=3 7 | 8 | # log_mailer request queue 9 | rabbit.request.addresses=localhost:5672 10 | rabbit.request.username=jthink 11 | rabbit.request.password=jthink 12 | rabbit.request.vhost=/dev 13 | rabbit.request.channelCacheSize=50 14 | rabbit.request.queue=log_mailer 15 | rabbit.request.exchange=direct.log 16 | rabbit.request.routingKey=log.key 17 | 18 | # mysql config 19 | database.address=localhost:3306 20 | database.name=monitor-center 21 | database.username=root 22 | database.password=root 23 | -------------------------------------------------------------------------------- /skyeye-monitor/src/main/resources/shell/zk: -------------------------------------------------------------------------------- 1 | create /skyeye null 2 | create /skyeye/monitor null 3 | create /skyeye/monitor/scroll null 4 | create /skyeye/monitor/query null 5 | create /skyeye/registry null 6 | create /skyeye/registry/service null 7 | create /skyeye/registry/id null 8 | create /skyeye/seq null 9 | -------------------------------------------------------------------------------- /skyeye-statistics/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-statistics/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | spark steaming流计算相关的实时统计数据 3 | -------------------------------------------------------------------------------- /skyeye-statistics/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-statistics' 2 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/java/com/jthink/skyeye/statistics/properties/TaskProperties.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.properties; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 任务相关的task 11 | * @date 2017-01-11 16:17:27 12 | */ 13 | @ConfigurationProperties(prefix = "spring.spark.task") 14 | public class TaskProperties { 15 | 16 | // spark job名字 17 | private String rpcJobName; 18 | 19 | public String getRpcJobName() { 20 | return rpcJobName; 21 | } 22 | 23 | public void setRpcJobName(String rpcJobName) { 24 | this.rpcJobName = rpcJobName; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.spark.task.name=${task.name} 2 | spring.spark.task.srcPath=${task.src.path} 3 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | ▄▄▄▄▀ ▄███▄ ▄███▄ █▀▄▀█ ████▄ 4 | ▀▀▀ █ █▀ ▀ █▀ ▀ █ █ █ █ █ 5 | █ ██▄▄ ██▄▄ █ ▄ █ █ █ 6 | █ █▄ ▄▀ █▄ ▄▀ █ █ ▀████ 7 | ▀ ▀███▀ ▀███▀ █ 8 | ▀ 9 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/resources/properties/teemo.properties: -------------------------------------------------------------------------------- 1 | task.name=xxx algorithm 2 | task.src.path=/user/xxx/xxx/xxx 3 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/configuration/SparkConfiguration.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.configuration 2 | 3 | import com.jthink.skyeye.statistics.properties.TaskProperties 4 | import org.apache.spark.{SparkConf, SparkContext} 5 | import org.springframework.beans.factory.annotation.Autowired 6 | import org.springframework.context.annotation.{Bean, Configuration} 7 | 8 | /** 9 | * JThink@JThink 10 | * 11 | * @author JThink 12 | * @version 0.0.1 13 | */ 14 | @Configuration 15 | class SparkConfiguration { 16 | 17 | @Autowired 18 | @transient 19 | var taskProperties: TaskProperties = _ 20 | 21 | @Bean 22 | def sparkContext(): SparkContext = { 23 | val conf = new SparkConf().setAppName(this.taskProperties.getRpcJobName) 24 | val sc = new SparkContext(conf) 25 | sc 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/dto/ApiStatisticDto.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.dto 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | */ 9 | class ApiStatisticDto { 10 | 11 | // row key 12 | var row: String = _ 13 | // api 14 | var api: String = _ 15 | // api请求的状态 16 | var status: String = _ 17 | // api请求的次数 18 | var cnt: Int = _ 19 | } 20 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/model/key/Key.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.model.key 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | */ 9 | trait Key extends Serializable { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/model/key/rpc/TimeApiKey.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.model.key.rpc 2 | 3 | import com.jthink.skyeye.statistics.model.key.Key 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * 统计的key 9 | * 10 | * @author JThink 11 | * @version 0.0.1 12 | */ 13 | class TimeApiKey(_time: String, _api: String) extends Key { 14 | 15 | // time, 到秒的String 16 | var time: String = _time 17 | // api 18 | var api: String = _api 19 | 20 | def canEqual(other: Any): Boolean = other.isInstanceOf[TimeApiKey] 21 | 22 | override def equals(other: Any): Boolean = other match { 23 | case that: TimeApiKey => 24 | (that canEqual this) && 25 | time == that.time && 26 | api == that.api 27 | case _ => false 28 | } 29 | 30 | override def hashCode(): Int = { 31 | val state = Seq(time, api) 32 | state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) 33 | } 34 | 35 | override def toString = s"TimeApiKey($time, $api)" 36 | } 37 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/model/key/rpc/TimeApiStatusKey.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.model.key.rpc 2 | 3 | import com.jthink.skyeye.statistics.model.key.Key 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * 统计的key 9 | * 10 | * @author JThink 11 | * @version 0.0.1 12 | */ 13 | class TimeApiStatusKey(_time: String, _api: String, _status: String) extends Key { 14 | 15 | // time, 到秒的String 16 | var time: String = _time 17 | // api 18 | var api: String = _api 19 | // status 20 | var status: String = _status 21 | 22 | def canEqual(other: Any): Boolean = other.isInstanceOf[TimeApiStatusKey] 23 | 24 | override def equals(other: Any): Boolean = other match { 25 | case that: TimeApiStatusKey => 26 | (that canEqual this) && 27 | time == that.time && 28 | api == that.api && 29 | status == that.status 30 | case _ => false 31 | } 32 | 33 | override def hashCode(): Int = { 34 | val state = Seq(time, api, status) 35 | state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) 36 | } 37 | 38 | override def toString = s"TimeApiStatusKey($time, $api, $status)" 39 | } 40 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/model/value/Value.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.model.value 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | */ 9 | trait Value extends Serializable { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/model/value/rpc/StatusCntValue.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.model.value.rpc 2 | 3 | import com.jthink.skyeye.statistics.model.value.Value 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | */ 11 | class StatusCntValue(_status: String, _cnt: Int) extends Value { 12 | 13 | // status 14 | var status: String = _status 15 | // 该状态统计的次数 16 | var cnt: Int = _cnt 17 | 18 | def canEqual(other: Any): Boolean = other.isInstanceOf[StatusCntValue] 19 | 20 | override def equals(other: Any): Boolean = other match { 21 | case that: StatusCntValue => 22 | (that canEqual this) && 23 | status == that.status && 24 | cnt == that.cnt 25 | case _ => false 26 | } 27 | 28 | override def hashCode(): Int = { 29 | val state = Seq(status, cnt) 30 | state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) 31 | } 32 | 33 | override def toString = s"StatusCntValue($status, $cnt)" 34 | } 35 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/model/value/rpc/SuccessFailedCntValue.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.model.value.rpc 2 | 3 | import com.jthink.skyeye.statistics.model.value.Value 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | */ 11 | class SuccessFailedCntValue(_successCnt: Int, _failedCnt: Int) extends Value { 12 | 13 | // 成功次数 14 | var successCnt: Int = _successCnt 15 | // 失败次数 16 | var failedCnt: Int = _failedCnt 17 | 18 | def canEqual(other: Any): Boolean = other.isInstanceOf[SuccessFailedCntValue] 19 | 20 | override def equals(other: Any): Boolean = other match { 21 | case that: SuccessFailedCntValue => 22 | (that canEqual this) && 23 | successCnt == that.successCnt && 24 | failedCnt == that.failedCnt 25 | case _ => false 26 | } 27 | 28 | override def hashCode(): Int = { 29 | val state = Seq(successCnt, failedCnt) 30 | state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) 31 | } 32 | 33 | override def toString = s"SuccessFailedCntValue($successCnt, $failedCnt)" 34 | } 35 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/task/Task.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.task 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * spark任务的父类 7 | * @author JThink 8 | * @version 0.0.1 9 | */ 10 | trait Task extends Serializable { 11 | 12 | def doTask() 13 | } 14 | -------------------------------------------------------------------------------- /skyeye-statistics/src/main/scala/com/jthink/skyeye/statistics/task/TestTask.scala: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.statistics.task 2 | 3 | import com.jthink.skyeye.statistics.properties.TaskProperties 4 | import org.apache.spark.SparkContext 5 | import org.slf4j.{Logger, LoggerFactory} 6 | import org.springframework.beans.factory.annotation.Autowired 7 | import org.springframework.stereotype.Component 8 | 9 | /** 10 | * JThink@JThink 11 | * 12 | * 算法具体逻辑 13 | * 14 | * @author JThink 15 | * @version 0.0.1 16 | */ 17 | @Component 18 | class TestTask extends Task { 19 | 20 | private val LOGGER: Logger = LoggerFactory.getLogger(classOf[TestTask]) 21 | 22 | @Autowired 23 | @transient 24 | var taskProperties: TaskProperties = _ 25 | 26 | @Autowired 27 | @transient 28 | var sparkContext: SparkContext = _ 29 | 30 | /** 31 | * 具体的业务逻辑 32 | */ 33 | override def doTask(): Unit = { 34 | LOGGER.info("task test start") 35 | // TODO: 具体的业务逻辑 36 | LOGGER.info("task test stop") 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /skyeye-trace/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /out/ 23 | -------------------------------------------------------------------------------- /skyeye-trace/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 分布式rpc tracer跟踪系统 3 | # 设计 4 | ## 采样率 5 | - 百分比采样率: 6 | 1. 0-100条/s: 全部采集 7 | 2. 101-500条/s: 50%采集 8 | 3. 501条以上/s: 10%采集 9 | - hash采样率: 待实现 10 | - 实现Sampler接口自定义 11 | ## 采集器 12 | - kafka采集器: 直接利用日志采集的方式存入kafka,日志类型为:rpc_trace 13 | - 实现Collector接口自定义 14 | -------------------------------------------------------------------------------- /skyeye-trace/build.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | 3 | task sourcesJar(type: Jar, dependsOn: classes) { 4 | classifier = 'sources' 5 | from sourceSets.main.allSource 6 | } 7 | 8 | artifacts { 9 | archives sourcesJar 10 | } 11 | 12 | uploadArchives { 13 | repositories { 14 | mavenDeployer { 15 | repository(url: mavenReleaseUrl) { 16 | authentication(userName: 'admin', password: 'admin123') 17 | } 18 | snapshotRepository(url: mavenSnapshotUrl) { 19 | authentication(userName: 'admin', password: 'admin123') 20 | } 21 | } 22 | } 23 | } 24 | } 25 | 26 | subprojects { 27 | 28 | ext { 29 | 30 | } 31 | 32 | dependencies { 33 | compile project(':skyeye-base') 34 | compile "org.slf4j:slf4j-api:$slf4jVersion" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /skyeye-trace/settings.gradle: -------------------------------------------------------------------------------- 1 | include 'skyeye-trace-core' , 'skyeye-trace-sc' 2 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile "com.alibaba:fastjson:$fastJsonVersion" 3 | compile "org.apache.zookeeper:zookeeper:$zookeeperVersion" 4 | compile "com.101tec:zkclient:$zkclientVersion" 5 | } 6 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-trace-core' 2 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/main/java/com/jthink/skyeye/trace/core/collector/Collector.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.collector; 2 | 3 | import com.jthink.skyeye.base.dapper.Span; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc span的采集器接口 11 | * @date 2017-02-15 14:21:53 12 | */ 13 | public interface Collector { 14 | 15 | /** 16 | * 采集 17 | */ 18 | void collect(Span span); 19 | } 20 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/main/java/com/jthink/skyeye/trace/core/dto/RegisterDto.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.dto; 2 | 3 | import org.I0Itec.zkclient.ZkClient; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 向注册中心注册的信息dto 11 | * @date 2017-03-23 11:04:16 12 | */ 13 | public class RegisterDto { 14 | 15 | private String app; 16 | 17 | private String host; 18 | 19 | private ZkClient zkClient; 20 | 21 | public RegisterDto() { 22 | 23 | } 24 | 25 | public RegisterDto(String app, String host, ZkClient zkClient) { 26 | this.app = app; 27 | this.host = host; 28 | this.zkClient = zkClient; 29 | } 30 | 31 | public String getApp() { 32 | return app; 33 | } 34 | 35 | public RegisterDto setApp(String app) { 36 | this.app = app; 37 | return this; 38 | } 39 | 40 | public String getHost() { 41 | return host; 42 | } 43 | 44 | public RegisterDto setHost(String host) { 45 | this.host = host; 46 | return this; 47 | } 48 | 49 | public ZkClient getZkClient() { 50 | return zkClient; 51 | } 52 | 53 | public RegisterDto setZkClient(ZkClient zkClient) { 54 | this.zkClient = zkClient; 55 | return this; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/main/java/com/jthink/skyeye/trace/core/generater/IdGen.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.generater; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc ID生成器接口 9 | * @date 2017-03-24 11:25:31 10 | */ 11 | public interface IdGen { 12 | 13 | /** 14 | * 生成下一个ID 15 | * @return 16 | */ 17 | String nextId(); 18 | } 19 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/main/java/com/jthink/skyeye/trace/core/registry/Registry.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.registry; 2 | 3 | import com.jthink.skyeye.trace.core.dto.RegisterDto; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 注册中心注册器 11 | * @date 2017-03-23 10:10:06 12 | */ 13 | public interface Registry { 14 | 15 | /** 16 | * 对服务进行注册 17 | * @return 返回注册serviceID 18 | */ 19 | String register(RegisterDto registerDto); 20 | } 21 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/main/java/com/jthink/skyeye/trace/core/registry/ZookeeperRegistry.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.registry; 2 | 3 | import com.jthink.skyeye.base.constant.Constants; 4 | import com.jthink.skyeye.trace.core.generater.IdGen; 5 | import com.jthink.skyeye.trace.core.dto.RegisterDto; 6 | import com.jthink.skyeye.trace.core.generater.IncrementIdGen; 7 | import org.I0Itec.zkclient.ZkClient; 8 | 9 | /** 10 | * JThink@JThink 11 | * 12 | * @author JThink 13 | * @version 0.0.1 14 | * @desc 利用zookeeper实现注册中心 15 | * @date 2017-03-23 10:14:22 16 | */ 17 | public class ZookeeperRegistry implements Registry { 18 | 19 | /** 20 | * 向注册中心进行注册,生成该服务的编号并返回 21 | * @param registerDto 22 | * @return 23 | */ 24 | @Override 25 | public String register(RegisterDto registerDto) { 26 | String host = registerDto.getHost(); 27 | String app = registerDto.getApp(); 28 | 29 | // 向注册中心注册 30 | ZkClient zkClient = registerDto.getZkClient(); 31 | zkClient.createPersistent(Constants.ZK_REGISTRY_SERVICE_ROOT_PATH + Constants.SLASH + app, true); 32 | IdGen idGen = new IncrementIdGen(registerDto); 33 | String id = idGen.nextId(); 34 | zkClient.createEphemeral(Constants.ZK_REGISTRY_SERVICE_ROOT_PATH + Constants.SLASH + app + Constants.SLASH + host, id); 35 | 36 | return id; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/main/java/com/jthink/skyeye/trace/core/sampler/HashSampler.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.sampler; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 基于hash进行采样设计 9 | * @date 2017-02-15 11:07:38 10 | */ 11 | public class HashSampler implements Sampler { 12 | 13 | @Override 14 | public boolean isCollect() { 15 | // TODO: 具体实现 16 | return false; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/main/java/com/jthink/skyeye/trace/core/sampler/Sampler.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.sampler; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 采样率接口 9 | * @date 2017-02-15 09:46:06 10 | */ 11 | public interface Sampler { 12 | 13 | /** 14 | * 是否采集 15 | * @return 16 | */ 17 | boolean isCollect(); 18 | } 19 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-core/src/test/java/com/jthink/skyeye/trace/core/test/id/UniqueIdGenTest.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.core.test.id; 2 | 3 | import com.jthink.skyeye.trace.core.generater.UniqueIdGen; 4 | 5 | /** 6 | * JThink@JThink 7 | * 8 | * @author JThink 9 | * @version 0.0.1 10 | * @desc 分布式唯一id生成测试 11 | * @date 2017-03-29 10:21:20 12 | */ 13 | public class UniqueIdGenTest { 14 | 15 | 16 | public static void main(String[] args) { 17 | testTimeConsume(); 18 | } 19 | 20 | public static void testTimeConsume() { 21 | UniqueIdGen idGen = UniqueIdGen.getInstance(5); 22 | long start = System.currentTimeMillis(); 23 | for (int i = 0; i < 1024000; ++i) { 24 | System.out.println(idGen.nextId()); 25 | } 26 | long end = System.currentTimeMillis(); 27 | System.out.println("耗时: " + (end - start)); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-sc/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | .DS_Store 23 | /.DS_Store 24 | /out/ 25 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-sc/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile project(':skyeye-trace:skyeye-trace-core') 3 | compile "com.netflix.zuul:zuul-core:$zullVersion" 4 | } 5 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-sc/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-trace-sc' 2 | -------------------------------------------------------------------------------- /skyeye-trace/skyeye-trace-sc/src/main/java/com/jthink/skyeye/trace/sc/filter/RpcTraceFilter.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.trace.sc.filter; 2 | 3 | import com.netflix.zuul.ZuulFilter; 4 | import com.netflix.zuul.context.RequestContext; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | * JThink@JThink 12 | * 13 | * @author JThink 14 | * @version 0.0.1 15 | * @desc 基于zuul filter来实现spring cloud的rpc trace 16 | * @date 2017-08-24 11:07:38 17 | */ 18 | public class RpcTraceFilter extends ZuulFilter { 19 | 20 | private static final Logger LOGGER = LoggerFactory.getLogger(RpcTraceFilter.class); 21 | 22 | @Override 23 | public String filterType() { 24 | return "post"; 25 | } 26 | 27 | @Override 28 | public int filterOrder() { 29 | return 0; 30 | } 31 | 32 | @Override 33 | public boolean shouldFilter() { 34 | return true; 35 | } 36 | 37 | @Override 38 | public Object run() { 39 | RequestContext context = RequestContext.getCurrentContext(); 40 | Map headers = context.getZuulRequestHeaders(); 41 | 42 | headers.forEach((k, v) -> LOGGER.info("key: {}, value: {}", k, v)); 43 | 44 | return null; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /skyeye-web/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | target/ 3 | file/ 4 | logs/ 5 | gen-java/ 6 | .externalToolBuilders/ 7 | .settings/ 8 | .gradle/ 9 | .classpath 10 | .gradletasknamecache 11 | .buildpath 12 | .project 13 | .springBeans 14 | dependency-reduced-pom.xml 15 | *.iml 16 | nohup.out 17 | /tmp 18 | /.apt_generated/ 19 | .idea/ 20 | disconf/ 21 | /target/ 22 | /build/ 23 | /out/ 24 | -------------------------------------------------------------------------------- /skyeye-web/README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | 监控中心UI系统 3 | # 功能介绍 4 | - 日志滚屏显示(支持关键字过滤) 5 | - 历史日志查询检索 6 | - 应用系统注册监控查询 7 | - 应用系统监控状况查询 8 | - api和第三方请求实时和历史次数统计 9 | - api和第三方、中间件等的监控报警 10 | - rpc trace跟踪展示(支持过滤查询) 11 | -------------------------------------------------------------------------------- /skyeye-web/image/Dockerfile: -------------------------------------------------------------------------------- 1 | # build the base image: jdk 2 | # this is the docker file, use the jdk 8u144-ubuntu16.04 3 | # VERSION 1 4 | # Author: leviqian 5 | 6 | # the basic image 7 | FROM 192.168.88.73:8888/common/jdk:8u144-ubuntu16.04 8 | 9 | # maintainer 10 | MAINTAINER leviqian leviqian@sina.com 11 | 12 | # get the args 13 | ARG version 14 | ARG branch 15 | 16 | # set env 17 | ENV VERSION $version 18 | ENV BRANCH $branch 19 | 20 | # copy the file 21 | RUN mkdir -p /home/deploy 22 | ADD skyeye-web-$version.tar /home/deploy 23 | COPY run.sh /run.sh 24 | RUN chmod +x /run.sh 25 | 26 | # CMD to start 27 | CMD ["/run.sh"] 28 | -------------------------------------------------------------------------------- /skyeye-web/image/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | version=$1 4 | branch=$2 5 | cp ../target/distributions/*.tar . 6 | 7 | sudo docker build --build-arg version=$version --build-arg branch=$branch -t 192.168.88.73:8888/skyeye/skyeye-web:$version . 8 | sudo docker push 192.168.88.73:8888/skyeye/skyeye-web:$version 9 | -------------------------------------------------------------------------------- /skyeye-web/image/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source /etc/profile.d/java.sh 4 | 5 | cd /opt/jthink/jthink-config 6 | git checkout $BRANCH 7 | git pull -r origin $BRANCH 8 | cd /home/deploy/skyeye-web-$VERSION 9 | nohup bin/skyeye-web & 10 | tail -f /opt/jthink/jthink-config/skyeye/web/web.properties 11 | -------------------------------------------------------------------------------- /skyeye-web/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'skyeye-web' -------------------------------------------------------------------------------- /skyeye-web/src/main/java/com/jthink/skyeye/web/configuration/mvc/MvcConfig.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.web.configuration.mvc; 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; 4 | import org.springframework.boot.autoconfigure.web.HttpMessageConverters; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | import org.springframework.http.MediaType; 8 | import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; 9 | 10 | import java.util.Arrays; 11 | 12 | /** 13 | * JThink@JThink 14 | * 15 | * @author JThink 16 | * @version 0.0.1 17 | * @desc mvc 配置 18 | * @date 2016-10-08 10:52:10 19 | */ 20 | @Configuration 21 | public class MvcConfig { 22 | 23 | @Bean 24 | public HttpMessageConverters getJacksonHttpMessageConverters(ObjectMapper objectMapper) { 25 | MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper); 26 | converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8, MediaType.TEXT_HTML, MediaType.TEXT_PLAIN)); 27 | return new HttpMessageConverters(converter); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /skyeye-web/src/main/java/com/jthink/skyeye/web/constant/EsSqlTemplate.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.web.constant; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc es sql template替换的key 9 | * @date 2016-12-02 15:18:10 10 | */ 11 | public class EsSqlTemplate { 12 | 13 | public static final String EVENTTYPE = "EVENTTYPE"; 14 | 15 | public static final String UNIQUENAME = "UNIQUENAME"; 16 | 17 | public static final String TIME = "TIME"; 18 | 19 | public static final String BEGIN = "BEGIN"; 20 | 21 | public static final String END = "END"; 22 | 23 | public static final String SCOPE = "SCOPE"; 24 | 25 | public static final String COST = "COST"; 26 | 27 | public static final String DATEFIELD = "DATEFIELD"; 28 | } 29 | -------------------------------------------------------------------------------- /skyeye-web/src/main/java/com/jthink/skyeye/web/dto/NoneDupeLogDto.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.web.dto; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 9 | * @date 2016-10-11 17:14:13 10 | */ 11 | public class NoneDupeLogDto { 12 | 13 | private String flag; 14 | 15 | private String log; 16 | 17 | public NoneDupeLogDto() { 18 | } 19 | 20 | public NoneDupeLogDto(String flag, String log) { 21 | this.flag = flag; 22 | this.log = log; 23 | } 24 | 25 | public String getFlag() { 26 | return flag; 27 | } 28 | 29 | public void setFlag(String flag) { 30 | this.flag = flag; 31 | } 32 | 33 | public String getLog() { 34 | return log; 35 | } 36 | 37 | public void setLog(String log) { 38 | this.log = log; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /skyeye-web/src/main/java/com/jthink/skyeye/web/dto/StatisticsDto.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.web.dto; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 实时统计的数据返回的 9 | * @date 2016-11-30 15:15:06 10 | */ 11 | public class StatisticsDto { 12 | 13 | private String name; 14 | 15 | private String time; 16 | 17 | private int succ; 18 | 19 | private int fail; 20 | 21 | public StatisticsDto() { 22 | } 23 | 24 | public StatisticsDto(String name, String time, int succ, int fail) { 25 | this.name = name; 26 | this.time = time; 27 | this.succ = succ; 28 | this.fail = fail; 29 | } 30 | 31 | public int getSucc() { 32 | return succ; 33 | } 34 | 35 | public void setSucc(int succ) { 36 | this.succ = succ; 37 | } 38 | 39 | public String getTime() { 40 | return time; 41 | } 42 | 43 | public void setTime(String time) { 44 | this.time = time; 45 | } 46 | 47 | public int getFail() { 48 | return fail; 49 | } 50 | 51 | public void setFail(int fail) { 52 | this.fail = fail; 53 | } 54 | 55 | public String getName() { 56 | return name; 57 | } 58 | 59 | public void setName(String name) { 60 | this.name = name; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /skyeye-web/src/main/java/com/jthink/skyeye/web/message/MessageCode.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.web.message; 2 | 3 | /** 4 | * JThink@JThink 5 | * 6 | * @author JThink 7 | * @version 0.0.1 8 | * @desc 消息码 9 | * @date 2016-10-09 09:15:34 10 | */ 11 | public enum MessageCode { 12 | 13 | SUCCESS("0000", "提交成功"), 14 | FAILED("0001", "提交失败"); 15 | 16 | private String code; 17 | private String msg; 18 | 19 | MessageCode(String code, String msg) { 20 | this.code = code; 21 | this.msg = msg; 22 | } 23 | 24 | public String getCode() { 25 | return code; 26 | } 27 | 28 | public String getMsg() { 29 | return msg; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /skyeye-web/src/main/java/com/jthink/skyeye/web/util/RadixUtil.java: -------------------------------------------------------------------------------- 1 | package com.jthink.skyeye.web.util; 2 | 3 | /** 4 | * 进制相关工具类 5 | * @author Aiur 6 | * @version 0.0.1 7 | * @date 2017-3-30 15:15:06 8 | */ 9 | public class RadixUtil { 10 | 11 | public static Long bytesToLong(byte[] bytes) { 12 | String zero = "00000000"; 13 | StringBuilder num = new StringBuilder(); 14 | for (byte b : bytes) { 15 | String binary = zero + Integer.toBinaryString(b); 16 | binary = binary.substring(binary.length() - 4); 17 | num.append(binary); 18 | } 19 | return Long.parseLong(num.toString(), 2); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ███████╗██╗ ██╗██╗ ██╗███████╗██╗ ██╗███████╗ ██╗ ██╗███████╗██████╗ 2 | ██╔════╝██║ ██╔╝╚██╗ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██║ ██║██╔════╝██╔══██╗ 3 | ███████╗█████╔╝ ╚████╔╝ █████╗ ╚████╔╝ █████╗█████╗██║ █╗ ██║█████╗ ██████╔╝ 4 | ╚════██║██╔═██╗ ╚██╔╝ ██╔══╝ ╚██╔╝ ██╔══╝╚════╝██║███╗██║██╔══╝ ██╔══██╗ 5 | ███████║██║ ██╗ ██║ ███████╗ ██║ ███████╗ ╚███╔███╔╝███████╗██████╔╝ 6 | ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝ ╚══╝╚══╝ ╚══════╝╚═════╝ 7 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-web/src/main/resources/favicon.ico -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/properties/web.properties: -------------------------------------------------------------------------------- 1 | # server 2 | serverAddress=0.0.0.0 3 | serverPort=8090 4 | 5 | # mysql config 6 | database.address=localhost:3306 7 | database.name=monitor-center 8 | database.username=root 9 | database.password=root 10 | 11 | # es sql url 12 | es.sql.url=http://riot01:9200/_sql?sql= 13 | es.sql.sql=select * from app-log/log 14 | es.query.delay=10 15 | es.sql.index.event=event-log/log 16 | 17 | # log_mailer request queue 18 | rabbit.request.addresses=localhost:5672 19 | rabbit.request.username=jthink 20 | rabbit.request.password=jthink 21 | rabbit.request.vhost=/dev 22 | rabbit.request.channelCacheSize=50 23 | rabbit.request.queue=log_mailer 24 | rabbit.request.exchange=direct.log 25 | rabbit.request.routingKey=log.key 26 | 27 | # monitor 28 | monitor.es.interval=0 */1 * * * ? 29 | monitor.es.mail=leviqian@sina.com 30 | 31 | # hbase config 32 | hbase.quorum=panda-01,panda-01,panda-03 33 | hbase.rootDir=hdfs://panda-01:8020/hbase 34 | hbase.zookeeper.znode.parent=/hbase 35 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-web/src/main/resources/static/images/loading.gif -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/common/constant.js: -------------------------------------------------------------------------------- 1 | /** 2 | * constant js 3 | * 4 | * @author JThink 5 | */ 6 | define([], function() { 7 | 8 | return { 9 | pageSize: 10, 10 | currentPage: 1, 11 | maxSize: 5, 12 | resCodeSuccess: '0000', 13 | resCodeFailed: '0001', 14 | statCodeSuccess: '00000', 15 | statCodeSqlError: '10101', 16 | zkNodeTypeEphemeral: 0, 17 | zkNodeTypePersistent: 1 18 | } 19 | 20 | }); 21 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/controllers/controllers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * the controllers module 3 | * 4 | * @author JThink 5 | */ 6 | define(['angular'], function(angular) { 7 | 'use strict'; 8 | return angular.module('controllers', []); 9 | }); -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/controllers/homeController.js: -------------------------------------------------------------------------------- 1 | /** 2 | * the home controller 3 | * 4 | * @author JThink 5 | */ 6 | define(['controllers/controllers', 'common/util', 'common/constant', 'services/dataService'], function(controllers, util, constant) { 7 | 'use strict'; 8 | controllers.controller('HomeController', ['$scope', 'DataService', function($scope, DataService) { 9 | 10 | var initData = function() { 11 | 12 | }; 13 | 14 | var initEvent = function() { 15 | 16 | }; 17 | 18 | initData(); 19 | 20 | initEvent(); 21 | }]); 22 | }); -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/directives/directives.js: -------------------------------------------------------------------------------- 1 | /** 2 | * the directives module 3 | * 4 | * @author JThink 5 | */ 6 | define(['angular'], function(angular) { 7 | 'use strict'; 8 | return angular.module('directives', []); 9 | }); -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/directives/reloadSlidebar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * reload slidebar directives 3 | * 4 | * @author JThink 5 | */ 6 | define(['directives/directives'], function(directives) { 7 | directives.directive('reloadslidebar', function($rootScope) { 8 | return { 9 | restrict : 'A', 10 | scope : true, 11 | link : function(scope, element, attrs) { 12 | if (scope.$parent.$last) { 13 | $("#nav-accordion").dcAccordion({ 14 | eventType : 'click' 15 | }); 16 | } 17 | } 18 | }; 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/filters/filters.js: -------------------------------------------------------------------------------- 1 | /** 2 | * the filters module 3 | * 4 | * @author JThink 5 | */ 6 | define(['angular'], function(angular) { 7 | 'use strict'; 8 | return angular.module('filters', []); 9 | }); 10 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/libs/angular/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.3.16 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,g,n){'use strict';g.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},f={},h,k=!1,l=g.copy,m=g.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,f),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in f)m(c[a])&&(b.cookies(a,n),delete f[a]);for(a in c)d=c[a],g.isString(d)||(d=""+d,c[a]=d),d!==f[a]&&(b.cookies(a,d),f[a]=d,e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?(delete c[a],delete f[a]):c[a]= 7 | f[a]=d[a])});return c}]).factory("$cookieStore",["$cookies",function(e){return{get:function(b){return(b=e[b])?g.fromJson(b):b},put:function(b,c){e[b]=g.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); 8 | //# sourceMappingURL=angular-cookies.min.js.map 9 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/libs/angular/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide:not(.ng-hide-animate) { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/services/dataService.js: -------------------------------------------------------------------------------- 1 | /** 2 | * request the backend 3 | * 4 | * @author JThink 5 | */ 6 | define(['services/services', 'common/util', 'underscore'], function(services, util, _) { 7 | 'use strict'; 8 | services.factory('DataService', ['$http', function($http) { 9 | return { 10 | getData: function(obj, callBack) { 11 | var defaultObj = { 12 | // global params 13 | }; 14 | var params = _.extend(defaultObj, obj); 15 | $http({ 16 | method : 'GET', 17 | url : params.url, 18 | params : params 19 | }).success(function(data) { 20 | if (typeof callBack === 'function') { 21 | callBack(data); 22 | } 23 | }); 24 | }, 25 | post: function(url, obj, callBack) { 26 | $http.post(url, obj).success(function(data) { 27 | if (typeof callBack === 'function') { 28 | callBack(data); 29 | } 30 | }); 31 | } 32 | } 33 | }]); 34 | }); -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/scripts/services/services.js: -------------------------------------------------------------------------------- 1 | /** 2 | * the services module 3 | * 4 | * @author JThink 5 | */ 6 | define(['angular'], function(angular) { 7 | 'use strict'; 8 | return angular.module('services', []).config(['$provide', function($provide) { 9 | if (typeof(DEBUG_FLAG) == 'undefined') { 10 | $provide.constant('DEBUG', true); 11 | } else { 12 | $provide.constant('DEBUG', DEBUG_FLAG); 13 | } 14 | }]); 15 | }); -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/app/deploy.css: -------------------------------------------------------------------------------- 1 | .app-deploy-row { 2 | margin-left: 2%; 3 | margin-right: 2%; 4 | } 5 | 6 | .app-deploy-row-content { 7 | background: #fff; 8 | } -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/app/status.css: -------------------------------------------------------------------------------- 1 | .app-status-row { 2 | margin-left: 2%; 3 | margin-right: 2%; 4 | } 5 | 6 | .app-status-row-content { 7 | background: #fff; 8 | } -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/home.css: -------------------------------------------------------------------------------- 1 | .home-row { 2 | margin-left: 2%; 3 | margin-right: 2%; 4 | } 5 | 6 | .home-row-content { 7 | background: #fff; 8 | } 9 | 10 | p { 11 | text-indent: 2em; 12 | font-size: 36px; 13 | } -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JThink/SkyEye/da8e3dd2717b15af8b01492ad87d3764a2043def/skyeye-web/src/main/resources/static/styles/libs/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/log/history.css: -------------------------------------------------------------------------------- 1 | .log-history-row { 2 | margin-left: 2%; 3 | margin-right: 2%; 4 | } 5 | 6 | .log-history-row-content .filter { 7 | background-color: #fff; 8 | border-bottom: 1px solid #e7e7e7; 9 | padding: 10px 15px; 10 | height: 53px; 11 | } 12 | 13 | .log-history-row .filter .item { 14 | margin-left: 10px; 15 | } 16 | 17 | .log-history-row-content .result { 18 | margin-top: 30px; 19 | } 20 | 21 | .log-history-row-content .log-content-panel { 22 | background-color: #542E4A; 23 | border-bottom: 1px solid #e7e7e7; 24 | padding: 10px 15px; 25 | /* min-height: 400px; */ 26 | /* max-width: 1600px; */ 27 | word-break: break-all; 28 | height: 500px; 29 | overflow-y: auto; 30 | } 31 | 32 | .log-history-row-content .log-content ul { 33 | padding: 0; 34 | } 35 | .log-history-row-content .log-content ul li { 36 | list-style: none; 37 | padding: 0; 38 | } 39 | 40 | .log-history-row-content .log-content ul p { 41 | margin: 0; 42 | text-indent: 0; 43 | font-size: 15px; 44 | color: #fff; 45 | font-family: ubuntu; 46 | } -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/log/query.css: -------------------------------------------------------------------------------- 1 | .log-query-row { 2 | margin-left: 2%; 3 | margin-right: 2%; 4 | } 5 | 6 | .log-query-row-content .btn-show { 7 | margin-left: 20px; 8 | } 9 | 10 | .log-query-row-content .sql-desc { 11 | background-color: #fff; 12 | border-bottom: 1px solid #e7e7e7; 13 | padding: 10px 15px; 14 | margin-top: 10px; 15 | } 16 | 17 | .log-query-row-content .sql-desc textarea { 18 | resize: none; 19 | width: 100%; 20 | } 21 | 22 | .log-query-row-content .sql { 23 | background-color: #fff; 24 | border-bottom: 1px solid #e7e7e7; 25 | padding: 10px 15px; 26 | height: 53px; 27 | } 28 | 29 | .log-query-row-content .result { 30 | margin-top: 30px; 31 | } 32 | 33 | .log-query-row-content .log-content-panel { 34 | background-color: #542E4A; 35 | border-bottom: 1px solid #e7e7e7; 36 | padding: 10px 15px; 37 | /* min-height: 400px; */ 38 | /* max-width: 1600px; */ 39 | word-break: break-all; 40 | height: 500px; 41 | overflow-y: auto; 42 | } 43 | 44 | .log-query-row-content .log-content ul { 45 | padding: 0; 46 | } 47 | .log-query-row-content .log-content ul li { 48 | list-style: none; 49 | padding: 0; 50 | } 51 | 52 | .log-query-row-content .log-content ul p { 53 | margin: 0; 54 | text-indent: 0; 55 | font-size: 15px; 56 | color: #fff; 57 | font-family: ubuntu; 58 | } -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/styles/statistics/api.css: -------------------------------------------------------------------------------- 1 | .statistics-api-row { 2 | margin-left: 2%; 3 | margin-right: 2%; 4 | } 5 | .statistics-api-row .filter { 6 | background: #fff; 7 | border-bottom: 1px solid #e7e7e7; 8 | padding: 10px 15px; 9 | height: 53px; 10 | } 11 | .statistics-api-row .item { 12 | margin-left: 10px; 13 | } 14 | .statistics-api-row-content .api-content-panel { 15 | background-color: #FFFFFF; 16 | border-bottom: 1px solid #e7e7e7; 17 | padding: 10px 15px; 18 | /* min-height: 400px; */ 19 | /* max-width: 1600px; */ 20 | word-break: break-all; 21 | height: 500px; 22 | overflow-y: auto; 23 | } 24 | .statistics-api-row .offline { 25 | margin-top: 30px; 26 | } 27 | .statistics-api-row .time-mode-default { 28 | background: #fff; 29 | border: 1px solid #eaedf0 !important; 30 | color: #A8A8A8; 31 | border-radius: 2px; 32 | } 33 | 34 | .statistics-api-row .time-mode-default:hover { 35 | background: #fff; 36 | border-color: #eaedf0 !important; 37 | } 38 | 39 | .statistics-api-row .time-mode-selected { 40 | background-color: #3c96dc !important; 41 | border: 1px solid #eaedf0 !important; 42 | color: #fff !important; 43 | border-radius: 2px; 44 | } 45 | 46 | .statistics-api-row .time-mode-selected:hover { 47 | background-color: #1872b8; 48 | color: #fff !important; 49 | } 50 | 51 | .statistics-api-row .offline .api-content-panel { 52 | margin-bottom: 2%; 53 | } 54 | -------------------------------------------------------------------------------- /skyeye-web/src/main/resources/static/views/home.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |

5 | 监控展示系统,包括实时日志滚屏显示、历史日志查询检索、应用系统注册监控查询、应用系统监控状况查询等服务 6 |

7 | 8 |
9 |
--------------------------------------------------------------------------------