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

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

质量监控

利用 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 条回复 时间 点赞

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

赞一个, 打算好好学学

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

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

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

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

这个赞啊

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

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

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

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