极客时间运维进阶训练营第八周作业
1.基于 docker-compose 或二进制部署 skywalking
docker-compose 部署很方便,不过二进制性能更好,可以高 10%左右。所以二进制生产环境用的更多。
注意部署的依赖端口:8080(ui),9200(es),12800(http),11800(gRPC)。
需要在环境上确认这些端口是否被占用,如被占用,可以修改端口,比如 skywalking-ui 改为 8081。
前后端分离:
前端是 8080 的用户接口。
后端流量支持 http 和 gRPC,之所以用两种协议,可以支持不同场景,另外也支持高可用。skywalking 本身有 h2 存储,只是测试的话,可以使用。但是实际工作中,建议使用 es,因为搜索性能高,而且可以把存储独立开来,通过其它模块也可以进行查询,可扩展。
agent 机制:
sky walking 采用微内核的方式,通过 agent 可以外接各种不同的服务,比如 java,python 客户端。相对一体化的实现方式,可扩展性更好,但是通信会损失一部分性能。
一般对 app 的监控,会分两步:
第一步先部署 skywalking 的 agent,地址关联到 skywalking 的 oap,可以是 http,也可以是 gRPC。
第二步关联到 app,这样 skywalking 就可以拿到数据了。
二进制部署:
https://github.com/jianywu/cloud_learn/tree/main/skywalking/skywalking
docker-compose 部署:
https://github.com/jianywu/cloud_learn/tree/main/skywalking/docker-compose
刚建好是没有数据的,使用 agent 获得数据后,就可以看到图了。
2.实现单体服务 halo 博客和 jenkins 的请求链路跟踪
部署 skywalking agent
使用的是 java agent。
https://github.com/jianywu/cloud_learn/tree/main/skywalking/java_agent
部署应用
halo 部署:
wget https://dl.halo.run/release/halo-1.6.1.jar
java -javaagent:/data/skywalking-agent/skywalking-agent.jar -jar /apps/halo-1.6.1.jar
halo 就是个 jar 包,部署很简单。
jenkins 部署:
https://github.com/jianywu/cloud_learn/tree/main/skywalking/tomcat-jenkins
访问 jenkins 后,就可以看到数据。
3.实现 dubbo 微服务实现链路跟踪案例
部署代码见:
https://github.com/jianywu/cloud_learn/tree/main/skywalking/dubbo
ZK 的端口是 2181,因为telnet使用tcp协议,所以可以通过 telnet 来判断是否可达。
系统级的环境变量可以放在/etc/profile中,source 一下即可使用,这样的话,新开的 shell 也会有这个环境变量,貌似比~/.bashrc 更方便,后者只能用于单用户。
telnet $ZK_SERVER1 2181
看是否可以通过 2181 连接到 ZK_SERVER1。
连接到 dubbo client 的 8080 端口,注意后面要输入表达式,比如 hello?name=*
服务端打印:
客户端打印:
客户端会显示接受到请求,以及返回到结果。
skywalking 查看访问量:
客户端:
服务端:
看拓扑情况。
4.实现 skywalking 的钉钉告警
https://github.com/jianywu/cloud_learn/tree/main/skywalking/backend-alarm
先创建业务告警机器人,然后在 skywalking 里添加相关的 alarm-settings.yml。
扩展 1.实现 python Django 项目的请求链路跟踪
部署 skywalking agent
首先部署 skywalking 的 python agent。
可以在 skywalking 看到启动了 python-app。
部署 python 应用
Django 适合快速搭建 web 服务器,需要自己写的代码量很少。
部署见:
https://github.com/jianywu/cloud_learn/tree/main/skywalking/django
用户名是 root,密码是 python3 manage.py createsuperuser 时自己配置的。
可以新增用户,email 不需要确认。
访问 Django 之后,就可以看到 skywalking 有访问了。
扩展 2.实现 OpenResty 及后端 java 服务的全链路请求链路跟踪
openresty 和 nginx 功能类似,是一个 load balancer,可以把流量转到后端的 java 服务器。
评论