写点什么

极客时间运维进阶训练营第八周作业

作者:好吃不贵
  • 2022-12-16
    芬兰
  • 本文字数:1420 字

    阅读完需:约 5 分钟

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 服务器。


用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
极客时间运维进阶训练营第八周作业_好吃不贵_InfoQ写作社区