skywalking链路追踪

把skywalking收集的数据存到elasticsearch中。
下载es版skywalking:
https://mirrors.bfsu.edu.cn/apache/skywalking/8.6.0/apache-skywalking-apm-es7-8.6.0.tar.gz

# 这里用docker启动es和kibana(仅用于展示es)
[root@ecs-791d ~]# docker run -dit --name es -v /etc/localtime:/etc/localtime -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
[root@ecs-791d ~]# docker run -dit --name kibana -v /etc/localtime:/etc/localtime --link es:elasticsearch -p 5601:5601 kibana:7.6.2

 

# 配置skywalking指定es存储
[root@ecs-791d config]# cat /home/skywalking/config/application.yml 
storage:
selector: ${SW_STORAGE:elasticsearch7}
关于es的ip端口信息,自行修改。

# 监听的端口12800和11800也在config/application.yml 中修改
core:
  selector: ${SW_CORE:default}
  default:
    restHost: ${SW_CORE_REST_HOST:0.0.0.0}
    restPort: ${SW_CORE_REST_PORT:12800}
    gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
    gRPCPort: ${SW_CORE_GRPC_PORT:11800}

 

	
# skywalking 图形界面
修改webapp目录下的 webapp.yml ,端口可以自定义。
server:
  port: 40000

 

# 启动服务端
[root@ecs-791d skywalking]# cd bin
[root@ecs-791d bin]# sh startup.sh 

# 启动后会监听3个端口
[root@ecs-791d skywalking]#  netstat -tnlp | grep -E "40000|12800|11800"
tcp6       0      0 :::11800                :::*                    LISTEN      26762/java          
tcp6       0      0 :::12800                :::*                    LISTEN      26762/java          
tcp6       0      0 :::40000                :::*                    LISTEN      26832/java   

注意skywalking web管理界面没有身份认证功能,可以用nginx代理 + baseAuth
(看github老版本上有认证,未测。)

# java应用端配置
skywalking目录下的 agent 目录为应用端会用到的jar包配置等

java -javaagent:./agent/skywalking-agent.jar -Dskywalking.agent.service_name=admin -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar admin.jar

PS:
skywalking-agent.jar路径要正确,最好写完整路径。
-Dskywalking.agent.service_name=admin admin为skywalking界面中会显示的应用名

参考官方文档:https://skywalking.apache.org/docs/main/v8.6.0/readme/

watir+ruby

Ruby 是面向对象的编程语言,它追求的是“简便快捷的面向对象编程”。Ruby是解释型语言,因此不需编译即可快捷地编程。同时Ruby具有类似Perl的强大的文本处理功能,它可并不只是个玩具,您可以用它来进行实用的编程。此外,您还可以很方便地使用C语言来扩展Ruby的功能,因此可以把她当作各种库的前端来使用。

Watir( Web Application Testing in Ruby) 是一个优秀的开源工具,用于开发基于Web 应用的自动化测试程序。它使用Ruby 脚本语言,提供了轻量级的自动化测试程序框架和丰富的开发库,有效地加速了自动化测试程序开发。

Watir 的主要特性以及使用 Watir 开发自动化程序的优势:

Watir是一个轻量级的用于开发基于Web应用的自动化测试框架,它基于Ruby语言,提供了丰富的开发库,简化了自动化测试程序开发。下面我们总结了Watir的主要一些优良特性:

Watir 基于 Ruby 语言。 Ruby 是面向对象语言,功能强大,简单易用。程序解释执行不用编译;

Watir 支持多种操作系统平台,包括 Windows, Mac, Linux ;同时支持多种主流浏览器,如 IE, Firefox, Chrome

Watir 提供了丰富的开发库,封装了包括浏览器窗口 windows,button, link, dialog, image, table, div 等绝大多数 HTML 对象类型,方便测试人员快速构建自动化测试程序。

Ruby 提供了强大的交互命令工具 IRB(Interactive Ruby Shell), 在 Watir 程序开发中,我们使用 IRB 调试代码。别于传统调试方法,测试人员可以就单独一条命令或者一段程序进行调试,从而能够快速定位错误,节省调试时间。

Ruby 提供了 Test::Unit 单元测试框架,通过继承该框架,我们可以对测试用例,测试用例集 (Test Suites) 进行灵活方便地组合和调用,并且可利用断言 (Assertion) 来验证测试结果。

其他脚本语言如 Perl, Python, Shell 等也可以很好地集成到 Watir 程序中。

Watir 程序在运行时,允许测试人员在该测试机器上访问其他网页或者进行其他操作而不会影响到对象识别的结果。

什么是“持续集成”Continuous Integration

      在敏捷开发中,有一个很重要的实践叫做持续集成。而什么是持续集成呢?简单来说,持续集成是频繁、持续的在多个团队成员的工作中进行集成,并且给与反馈。一个典型的持续集成周期包括以下几个步骤:
1.持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。
2.如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
3.等代码完全更新以后,调用自动化编译脚本,进行代码编译。
4.运行所有的自动化测试。
5.进行代码分析。
6.产生可执行的软件,能够提供给测试人员进行测试。

        如果其中任何一个步骤失败,就表示该Build失败,持续集成服务器会给予相应的反馈。一般来说,持续集成服务器会有相应的管理界面,可以看到Build的状态以及相应的信息,如果Build失败,可以查看原因,是编译失败还是测试失败。或者在每次Build后,持续集成服务器发邮件通知,从邮件中可以看到最新Build的状态。当然,也可以自定义反馈方法,比如在ThoughtWorks中国,有个团队的持续集成反馈就是火山灯,黄色表示正在进行Build,绿色表示Build成功,而红色则表示Build失败,一旦发现灯变红了,所有人都不能提交代码,而应该尽快修复该Build。还有一个团队更有创意,用语音来进行反馈。如果Build成功,就会有语言提示说“Build XXXX成功”,如果失败,就会有提示“Build XXXX失败,是由XXX提交的”,被念到名字的成员就得停下来修复这个Build。

        持续集成实践的目的不是减少Build失败的次数,而是尽早发现问题,在最短的时间内解决问题,减少风险和浪费。如果想尝试持续集成,首先需要的是持续集成服务器,比如CruiseControl或者VSTS;然后需要把现有的Build自动化,比如写Ant脚本;最后就是在持续集成服务器上进行配置,比如配置版本控制,集成间隔时间,如何部署,如何反馈等。

  PS:

       敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

摘自:http://www.cnblogs.com/blusehuang/archive/2008/01/20/continuous_integration.html