简介
ELK 套装包括 ElasticSearch、LogStash 和 Kibana。 其中,ElasticSearch 是一个数据搜索引擎(基于 Apache Lucene)+分布式 NoSQL 数据库;LogStash 是一个消息采集转换器,类似 Syslog,可以接收包括日志消息在内的多种数据格式,然后进行格式转换,发送给后端继续处理;Kibana 是一个 Web 前段,带有强大的数据分析、整理和可视化功能。
是不是听起来就觉得十分强大!
一般情况下,ELK 套装的工作流程为 原始数据 -> LogStash -> ElasticSearch -> Kibana
。
网络流量信息采集协议常见包括 sFlow 和 NetFlow,两种协议都支持采集需要的网络信息,发送到指定的采集器(例如 netflow-analyzer、sFlowTrend 和 softflowd)。其中,sFlow 一般基于采样,NetFlow 则可以基于所有网包信息获取更为精确的信息。
这里展示如何使用 ELK 套装 + NetFlow 来实时可视化网络流量,基于 sFlow 的操作是类似的,也给出了关键步骤。
安装 ELK 套装
快速体验
觉得下面的本地安装过程太复杂的,可以直接从 https://github.com/yeasy/docker-compose-files/tree/master/elk_netflow 下载 docker-compose 模板,一键部署并启动。
$ sudo mkdir -p /opt/data/elasticsearch/ $ git clone https://github.com/yeasy/docker-compose-files.git && cd elk_netflow $ docker-compose up
启动后,logstash 将监听本地 2055 端口过来的 netflow 消息;kibana 监听在 5601 端口;elasticsearch 监听在 9200 端口。
安装 ElasticSearch
步骤参考 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-repositories.html。可以选择源码编译或安装包安装。
安装和启动服务
以 CentOS 下使用安装包为例,首先添加证书。
$ rpm --import https://packages.elasticsearch.org/GPG-KEY-elasticsearch
添加源文件 /etc/yum.repos.d/elasticsearch.repo,内容为
[elasticsearch-1.4] name=Elasticsearch repository for 1.4.x packages baseurl=http://packages.elasticsearch.org/elasticsearch/1.4/centos gpgcheck=1 gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch enabled=1
执行安装命令
$ yum update; yum install -y elasticsearch
如果开启了 iptables,需要打开相关的端口。
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 9200:9400 -j ACCEPT -A INPUT -m pkttype --pkt-type multicast -j ACCEPT
启动 elasticsearch 服务,默认监听在 9200 端口。
$ /etc/init.d/elasticsearch restart
配置 elasticsearch 服务随系统自动启动
$ chkconfig --add elasticsearch
此时,查询本地 9200 端口,会获取类似下面的反馈信息,表示服务启动成功。
$ curl -XGet localhost:9200 { "status" : 200, "name" : "Thunderball", "cluster_name" : "elasticsearch", "version" : { "number" : "1.4.4", "build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588bd512", "build_timestamp" : "2015-02-19T13:05:36Z", "build_snapshot" : false, "lucene_version" : "4.10.3" }, "tagline" : "You Know, for Search" }
配置文件在 /etc/elasticsearch/elasticsearch.yml
,选项不是特别多,有详细的注释说明。