0. 背景

日常测试中,有些测试提案需要查看日志进行校验,日志往往在开发部署的机器上,而测试人员没有开发机器的登入权限,经常是要求开发给 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 现在有六个组件组成:

1. 组件安装

1-1. Elasticsearch

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}

1-2. kibana

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

1-3. X-Pack

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 &

1-4. Beats

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

1-5. Logstash 和 CLOUD

Logstash 是数据处理的 pipeline(INPUTS->FILTERS->OUTPUTS)。
本次未用到该组件;

详情:https://www.elastic.co/products/logstash

Elastic CLOUD 是将 Elasticsearch & kibana 部署到 AWS 的服务;

详情:https://www.elastic.co/cloud

2.watchlog 使用

watchlog 利用了 FILEBEAT、Elasticsearch 和 Kibana 三个组件,通过在远程主机安装 FILEBEAT,通过 Elasticsearch,在前端 Kibana 查看日志内容。

2-1.获取脚本

在远程机器上新建个目录,执行如下命令:

curl -sSO http://${ip:port}/watchlog.sh

2-2.执行脚本

执行脚本 watchlog.sh, -f:标识是谁查看日志 (自定义), -p:查看日志的绝对路径。

sh watchlog.sh -f hugang_test1 -p /root/.ngrinder/logs/ngrinder.log 

2-3.前端查看

http://${Kibana 服务地址}/

2-4.终止 watchlog 进程

测试完成后,需要将 watchlog 进程 kill 掉,在 2-2 步,会将后台进程号写到 watchlog.pid 中,执行如下命名终止传送日志。

kill -9 `cat watchlog.pid`


↙↙↙阅读原文可查看相关链接,并与作者交流