Docker 使用 Docker 快速搭建 ELK 质量监控环境

思寒_seveniruby · 2016年03月17日 · 最后由 MadSkillTester 回复于 2016年07月29日 · 1639 次阅读

质量监控

利用 ELK 技术栈来监控内测和线上的质量已经是很成熟的实践了
已经有越来越多的公司使用上了这一个强大的武器. 质量监控是个很大的话题, 我先做个简单的铺垫.
从狭义上讲. 他可以做到如下的目标

  • 知道研发自测, QA 测试和公测中多少人参与测试
  • 知道业务中哪些功能有没有被各个阶段测试到或者用到, 好让你知晓漏测风险
  • 知道每个研发和 QA 的到底测试了多少功能, 甚至包括用户到底有没有用到你关心的 feature

能做到这一切, 得益于数据分析相关技术的发展.

之所以决定现在发这个文章, 是看到之前有同学已经陆续分享了 ELK 的构建.
比如 @neven7 发布的 https://testerhome.com/topics/4280
当时很多人并没有明白这个技术栈给测试和业务带来的价值.
所以我今天就简单介绍下我的经验, 给这个优秀的技术栈加加热度. 也当是自己的日志记录.

架构

技术架构为:
埋点数据 + 接口数据 -> Kafka -> LogStash -> ElasticSearch -> Kibana -> 监控

核心数据:
用户 id + 业务埋点 + 接口 + 版本号标记 + 时间戳

logstash 数据源读取配置

logstash 的配置示例, 从 Kafka 读取数据

input {
        kafka {
                topic_id => 'topic_name'
                zk_connect => '${zookeeper的地址}:2181/kafka'
        }
}
filter {
   csv{
        separator => "|"
        columns => [ "host", "request", "http_user_agent"]
     }
  date {
        match => ["log_time", "yyyy-MM-dd HH:mm:ss"]
    }
}
output {
    elasticsearch {
    index => "logstash-topic-%{+YYYY.MM.dd}"
}
}

从 csv 中读取配置示例

input {
    file {
        path => "/data/ELK/data/*.csv"
        start_position => beginning
            }
}
filter {
   csv{
        columns =>[ "log_time", "real_ip", "status", "http_user_agent"]
   }
  date {
        match => ["log_time", "yyyy-MM-dd HH:mm:ss"]
    }
}
output {
    elasticsearch {}
    }

启动 LogStash

docker run -d —name logstash \
-v "$PWD":/config-dir \
logstash logstash -f /config-dir/logstash.conf

启动 ES

docker run -d --name elasticsearch \
-v "$PWD/data":/usr/share/elasticsearch/data \
-e ES_MAX_MEM=8g  \
-p 9200:9200 -p 9300:9300 elasticsearch

启动 Kibana

docker run -d --name kibana \
-e ELASTICSEARCH_URL=http://x.x.x.x:9200 \
-p 5601:5601  kibana

效果图

访问当前机器的http://x.x.x.x:5601/ 即可访问 kibana 来制作各种报表了
通过小版本号可以识别是那个测试阶段.
通过 uid 可以识别是哪些测试人员在测试
通过使用到的 api 和总的 api 数量来评估测试充分度

比如

建议

这个技术栈对技术的要求比较高. 大家可以先逐渐熟悉并接触这套技术栈. 也许你不一定能在半年内用上它, 但是知道他的用途会为你理解测试提供一个新的视野.

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 11 条回复 时间 点赞

#5 楼 @uncleleung es 本来就支持集群模式,es 的使用上比 solr 复杂一些,纯 restful 接口模式,但是引擎都是机遇 lucen 的

这个思路是有空间,不过首先还是得把意识建立起来,不仅仅是测试团队要考虑,既然借助日志分析来应用在测试场景当中,那么日志的规范就必须建立起来,虚拟化 + 大数据在未来的测试场景的支持上的确有空间。关于 logstash,我们还可以替换成 Flume 去做,如果需要提升分析能力,相信离线类的 hdfs 和实时类的 spark 或 storm 也可能加入进来,但是这个技术栈太庞大,完整的大数据生态系统,对测试团队要求很高。

ELK+Redis 是一个很好的实时监控架构,不错

这个赞啊

赞;日志分析可以做很多事;服务监控,A/B test,用户行为记录等等,这就是数据的价值。

对整个东西的原理还不是特别的了解,是指打点 +log 分析?用 ES 的话大概能支撑多少的并发 IO(写 log)? 从介绍的作用上来看非常有意义。先收藏了,找时间学习一下

#3 楼 @john1688 中间有个 redis 存储会更快. 不错的架构. 挖财也有一个文章接日志分析的 http://afoo.me/columns/tec/logging-platform-spec.html 这也算是数据分析在质量监控上的利用吧

我们公司做大数据也用到了 ELK

赞一个, 打算好好学学

这个的确很有用,监控的确能做到对自己的 app 做到更详细的了解

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册