日常测试中,有些测试提案需要查看日志进行校验,日志往往在开发部署的机器上,而测试人员没有开发机器的登入权限,经常是要求开发给 token 登上开发的机器去查看日志,如果测试时间较长,中途通道机断了,经常要开发重新给 token;效率较低,从而有了远程日志查看工具 watchlog。
watchlog 是基于 Elastic Stack 中三个组件: Filebeat、Elasticsearch、Kibana;1 年之前曾介绍过 ELK 2.0 基本使用:http://blog.csdn.net/neven7/article/details/49998215,现在 Elastic 版本由之前 2.0 升级到了 5.0,功能更细化和强大,新增了三个组件:Beats、XPack、Cloud。
Elastic Stack 现在有六个组件组成:
Elasticsearch 是 Elastic Stack 中最核心的组件,它是分布式、支持 RESTful 搜索和分析的引擎;并集中存储了你的数据。详情:https://www.elastic.co/products/elasticsearch
1.下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.0.zip
2.更改服务端口
./config/elasticsearch.yml
network.host: ${ip}
http.port: ${port}
3.启动服务(非root用户)
./elasticsearch -d
查看日志,服务是否启成功:
问题1:
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [26214]
解决办法:
https://github.com/docker-library/elasticsearch/issues/98
sysctl -w vm.max_map_count=262144
问题2:
无权限,写日志
解决办法:
先用root账号,改文件属性777;再切回非root用户,启动脚本
查看服务:
curl -u "elastic:changeme" http://${ip}:${port}
Kibana 可视化你的 Elasticsearch 数据。详情:https://www.elastic.co/products/kibana
1.下载安装包
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.0.0-linux-x86_64.tar.gz
2.改配置文件
vim kibana.yml
#server.port: 5601
server.host: "${ip}"
elasticsearch.url: "http://${1-1配置的ip:port}"
3.启动服务
./kibana &
4.访问前端服务
http://${ip}:5601
Username: elastic Password: changeme
X-Pack 对 Elastic Stack 提供了安全、警报、监控、报表、图表于一身的扩展包。详情:https://www.elastic.co/products/x-pack
1.在Elasticserach中安装
bin/elasticsearch-plugin install x-pack
启动
bin/elasticsearch &
2.在Kibana中安装
bin/kibana-plugin install x-pack
启动
bin/kibana &
Beats 是传输数据的平台,作为一个轻量级代理从成千上万台机器上发送数据给 Logstash 或 Elasticsearch。
Beats 按照类型细化成四类:FILEBEAT(Log Files)、METRICBEAT(Metrics)、PACKETBEAT(Network Data)、WINLOGBEAT(Windows Event Logs)。
详情:https://www.elastic.co/products/beats
本文使用 FILEBEAT 传输日志文件:
1.安装
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.0.1-linux-x86_64.tar.gz
2.更改配置
vim filebeat.yml
配置Elasticsearch服务地址
修改日志路径:
默认为/var/log/*.log,改成自己的需监控的日志路径
3.启动服务
sudo ./filebeat -e -c filebeat.yml
具体参数:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-command-line.html
Logstash 是数据处理的 pipeline(INPUTS->FILTERS->OUTPUTS)。
本次未用到该组件;
详情:https://www.elastic.co/products/logstash
Elastic CLOUD 是将 Elasticsearch & kibana 部署到 AWS 的服务;
详情:https://www.elastic.co/cloud
watchlog 利用了 FILEBEAT、Elasticsearch 和 Kibana 三个组件,通过在远程主机安装 FILEBEAT,通过 Elasticsearch,在前端 Kibana 查看日志内容。
在远程机器上新建个目录,执行如下命令:
curl -sSO http://${ip:port}/watchlog.sh
执行脚本 watchlog.sh, -f:标识是谁查看日志 (自定义), -p:查看日志的绝对路径。
sh watchlog.sh -f hugang_test1 -p /root/.ngrinder/logs/ngrinder.log
http://${Kibana 服务地址}/
测试完成后,需要将 watchlog 进程 kill 掉,在 2-2 步,会将后台进程号写到 watchlog.pid 中,执行如下命名终止传送日志。
kill -9 `cat watchlog.pid`