网站首页 > 技术教程 正文
度量是CI/CD的基础,如何快速、低成本实现度量有助于形成产研团队的仪表盘,识别各个业务板块的真实价值和扎实程度。简单而言,我们需要这样的图和数据:
为什么度量是基础
了解事物的基本逻辑是看得着、想得清、做得到。CI/CD管理的目标是信息系统的各个组成部分,结合目前端、边、云、用的基本格局,我们的服务治理应该涵盖各个面客APP,云端服务,边缘服务器与设备终端等,典型如下图示。
但是不论如何,首先要建立度量能力,没有客观有效的度量,那么就是看不着准确的运作脉络,进而也就缺乏思考的前提和进一步操作执行的数据依据。所以度量是服务治理的基础,进一步就是服务的命名,服务的授权,频率限制等。
如何快速实现度量
可参考这些文章(【数据分析之四】【CI/CD之一】【CI/CD之二】),了解实现的背景。
面向用侧、边侧、端侧度量的基础是确保度量数据能够快速集中到云端,可以借助当前最广泛应用的http协议来进行收集,需要支持明细数据和统计数据的上报;而面向云侧的度量基础则可以基于每个节点的文件系统来进行收集。收集后的数据在每个节点进行汇总,或直接将明细数据上报到消息队列(可分为多层),然后再通过流式数据分析按照时间等维度进行计算,最后基于报表工具呈现看板。
远程收集 : nginx
支持明细和统计通过get上报,实现按日切分日志的能力,并将访问日志格式整理为json格式。
log_format rpt_raw '{"ver":"$arg_ver",'
'"tm":"$arg_tm",'
'"caller":"$arg_caller",'
'"callee":"$arg_callee",'
'"duration":"$arg_duration",'
'"retcode":"$arg_retcode",'
'"sign":"$arg_sign"'
'}';
log_format rpt_sts '{"ver":"$arg_ver",'
'"tm":"$arg_tm",'
'"caller":"$arg_caller",'
'"callee":"$arg_callee",'
'"avg_duration":"$arg_avg_duration",'
'"max_duration":"$arg_max_duration",'
'"min_duration":"$arg_min_duration",'
'"total_count":"$arg_total_count",'
'"count_of_retcode_0":"$arg_count_of_retcode_0",'
'"count_of_retcode_1":"$arg_count_of_retcode_1",'
'"sign":"$arg_sign"'
'}';
# in virtual server config for example:
server {
listen 8080;
server_name localhost;
location /rpt_raw/ {
root html;
index index.html index.htm;
if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
set $tttt $1;
}
access_log logs/rpt_raw-$tttt.log rpt_raw;
}
location /rpt_sts/ {
root html;
index index.html index.htm;
if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
set $tttt $1;
}
access_log logs/rpt_sts-$tttt.log rpt_sts;
}
}
远程上报 :remote-report
支持明细数据和统计过的数据上报,对于边缘服务器、计算能力足够的端侧,鼓励使用统计过的数据上报,这样可节省流量。
http://127.0.0.1:8080/rpt_raw/?ver=1&tm=1647070125&caller=aa&callee=bb&duration=100&retcode=0&sign=bcde
http://host:port/rpt_raw??ver=1&tm=1&caller=aa&callee=bb&duration=100&retcode=0&sign=bcde
http://127.0.0.1:8080/rpt_sts/?ver=1&tm=1647070125&caller=aa&callee=bb&max_duration=100&avg_duration=100&min_duration=100&retcode=0&sign=bcde&total_count=100&count_of_retcode_0=90&count_of_retcode_1=10
http://host:por/rpt_sts/?ver=1&tm=1&caller=aa&callee=bb&max_duration=100&avg_duration=100&min_duration=100&retcode=0&sign=bcde&total_count=100&count_of_retcode_0=90&count_of_retcode_1=10
本地上报:local-report
本地上报实际就是输出一个AOF日志文件,与nginx配置生成的日志一样,其形式如下:
明细日志样例格式如下:
{"ver":"1","tm":"1647070125","caller":"aa","callee":"bb","duration":"100","retcode":"0","sign":"bcde"}
统计日志样例格式如下:
{"ver":"1","tm":"1647070125","caller":"aa","callee":"bb","avg_duration":"100","max_duration":"100","min_duration":"100","total_count":"100","count_of_retcode_0":"90","count_of_retcode_1":"10","sign":"bcde"}
日志采集 : filebeat
将生成的json格式日志文件,推送到消息队列,并将json的内容纳入平级,不要用message字段包装,以便于kylin分析。
filebeat也提供了几个处理器,可以使用script等做简单的校验。这里使用的配置如下:
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/release/backup/filebeat-8.0.1-linux-x86_64/log/fb*.log
#keys_under_root可以让字段位于根节点,默认为false
json.keys_under_root: true
##对于同名的key,覆盖原有key值
json.overwrite_keys: true
##message_key是用来合并多行json日志使用的,如果配置该项还需要配置multiline的设置,后面会讲
# json.message_key: message
##将解析错误的消息记录储存在error.message字段中
json.add_error_key: true
processors:
- drop_fields:
fields: ["@metadata","ecs","log_type", "input_type", "offset", "beat", "source","type","agent","host","input","log","version"]
output.kafka:
hosts: ["127.0.0.1:9092"]
topic: fb_log_collect
keep_alive: 10s
度量与统计 :kylin
增加流式数据源,增加模型,增加分析,启用并执行。如下图:
可以使用crontab创建定时任务来,确保持续构建,数据可持续同步到kylin。
可视化服务 :superset
select DAY_START,HOUR_START,MINUTE_START, caller,callee,retcode,count(1) as TOTAL,
max(duration) as MAXD,sum(duration)/count(1) as AVGD from stream_sc_min group by caller,callee,retcode,MINUTE_START,DAY_START,HOUR_START
猜你喜欢
- 2024-10-13 大前端教程之Dokcer,部署方式,CICD的解决方案
- 2024-10-13 使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用
- 2024-10-13 使用 Kubernetes Helm 安装 CI/CD 工具:Drone
- 2024-10-13 gitlab ci 维护记录(gitlab cicd)
- 2024-10-13 基于docker-compose的Gitlab CI/CD实践&排坑指南
- 2024-10-13 通过Nginx、Consul、Upsync实现动态负载均衡和服务平滑发布
- 2024-10-13 搭建全功能服务器(Nginx+Tomcat+PHP+SSL)
- 2024-10-13 还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲
- 2024-10-13 将Docker镜像安全扫描步骤添加到CI/CD管道
- 2024-10-13 微服务API网关NGINX、ZUUL、Spring Cloud Gateway与
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)