一,测试右移介绍
1.1 测试右移的价值
- 测试环境不能完全模拟线上环境
- 线上质量不仅取决于已发布代码,还取决于数据变更与配置变更
- 线上测试可以获得更多质量数据辅助产 品更新
1.2 测试右移实践
(1)质量监控
- apm 应用性能监控
- 全链路监控 zipkin skywalking
- 崩溃率监控 bugly
- 线上用户体验特征监控与分析
(2)测试监控
- 测试的深度 更好
- 测试的速度 更快
- 测试的广度 更全
- 测试的进度 管理
(3)精准测试
- 降低测试成本,根据代码变更定位用例 范围
- 提高测试覆盖率,更准确覆盖被测业务
- 提高测试用例有效性,反推有效测试用例
(4)故障注入混沌工程
(5)线上巡检与测试
二,数据采集与处理引擎 - logstash
2.1 logstash 简介
Logstash是一个收集与处理数据的引擎,就像ElasticSearch是专门用来检索的引擎一样,Logstash用于收集、处理和转换各种数据源(文件、数据库、网站等)的数据,并将其转换为统一的格式。
Logstash支持多种插件,进行数据过滤、转换和输出,可以方便地与 ES 和 Kibana 集成使用。
还支持多线程处理和事件模型,可以在大规模数据处理场景下提供高性能、高可用的服务。
2.2 logstash 处理流程
2.3 pipeline 机制
2.4 logstash 安装
(1)Linux安装方式
(2)docker安装部署
- docker 方式:需要挂载本地数据路径与配置文件路径
查找镜像:docker search logstash
拉取镜像:docker pull logstash
启动容器:
# 把1ogstash.conf配置文件放到pipeline目录中,注意数据路径要为docker内的路径
# 把logstash.yam1挂载进去覆盖已有的默认域名,解决警告提示
# 把数据目录挂载进去
docker run it --rm \
-v $PWD/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v $PWD/pipeline:/usr/share/logstash/pipeline \
-v /home/demi/www/:/data/ \
docker.elastic.co/logstash/logstash:5.6.12 \
--config.reload.automatic
(3) input 常用配置
stdin{ }
file {
path =>"/data/*.csv"
}
file {
path =>"/data/*.json"
codec:json
}
kafka {
topic_id =>'topic name'
zk_connect =>'${zookeeper的地址}:2181/kafka'
}
(4) filter 常见配置
csv{
columns =>[ "log_time", "real_ip", "status", "http_user_agent"]
}
json {
source => "message"
}
(5)output 常见配置
elasticsearch{
hosts=>["x.x.x.x"]
}
stdout {}
(6)场景读取csv文件
docker run -it --rm logstash -e '
input { stdin { } }
filter {
csv { columns=>["a","b","c","d"] }
}
output { stdout {} }
'
(7)场景读取json数据
docker run -it --rm logstash -e '
input { stdin { } }
filter {
json { source=>"message" }
}
output { stdout {} }
'
(8) 自动推送 CSV 数据到 ES
docker run -it --rm logstash -e '
input {
file {
path=>["/data/*.csv"]
}
}
filter {
csv {
columns=>["a","b","c","d"] }
}
output {
elasticsearch {
hosts=>["http://172.17.0.1:9200"]
}
}
'
(9) 读取 nginx 日志
- 在pipeline目录下新建nginx.conf文件,写入下记管道配置
input {
file{
path =>[ "/data/access.log"]
}
}
filter {
grok{ match =>{ "message" =>"%{COMBINEDAPACHELOG}"}}
geoip{ source =>"clientip"}
}
output{
stdout{}
elasticsearch {
hosts =>[ "http://h2.stug.ceshiren.com:9200"]
index => "logstash-nginx-%{+YYYY.MM.dd}"
}
}
- 运行管道:
docker run it --rm -v $PWD/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v $PWD/pipeline:/usr/share/logstash/pipeline -v /home/demi/www/access.log:/data/access.log logstash --config.reload.automatic
- 管道配置文件用法
- 字段引用:
[][]“apache.${[response][status]}”
- 格式控制:
%{}“/var/log/%{type}.%{+yyyy.MM.dd.HH}”
- 逻辑控制:
filter{if[action]==“login”{mutate{ remove_field =>“secret”}}}
- 字段修改:
plugins
- 字段引用: