ELK是Elasticsearch、Logstash、Kibana三个开源软件的组合。
本文记录了在windows上初步运行这三个软件的过程。
环境
Windows7 64bit
JDK1.7.0_72 64bit
logstash5.1.1
elasticsearch5.1.1
kibana5.1.1
配置logstash过滤
first-pipeline.conf
**input {**
**file {**
**path => "k:/ELK/logstash-tutorial-dataset"**
**start_position => beginning**
**ignore_older => 0**
**}**
**}**
**filter {**
**}**
**output {**
**file {**
**path => "k:/ELK/logstash-tutorial-output.txt"**
**}**
**}**
配置kibana
k:\ELK\kibana-4.5.0-windows\config\kibana.yml
elasticsearch.url: "http://localhost:9200"
启动ELK
同时打开3个DOS窗口,分别键入:
K:\ELK\logstash-5.1.1\bin
logstash -f ../../first-pipeline.conf****
K:\ELK\elasticsearch-5.1.1\bin>elasticsearch.bat
K:\ELK\kibana-5.1.1-windows-x86\bin
kibana .bat
浏览
http://localhost:5601
这便是最终成品kibana了,可以在这里一览日志。手工修改logstash-tutorial-dataset,在结尾增加几行数据,然后刷新kibana的页面(Discover标签),可以看到实时的数据。
head插件安装
修改es
git clone
git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm install -g grunt
npm install -g grunt-cli
npm****的node_path****和path****需要设置才可以找到命令
-g命令:设置到全局,建立cmd
从项目的根位置递归搜寻node_modules目录,直到文件系统根目录的node_modules,如果还没有查找到指定模块的话,就会去NODE_PATH中注册的路径中查找。
head工具,注意“/”
bigdesk
集群拓扑
ElasticSearch
3台机器:
集群名:HES
es节点名=> ip地址
h1 => 192.168.0.2
h2 => 192.168.0.3(master)
h3 => 192.168.0.4
修改配置文件
vim/etc/elasticsearch/elasticsearch.yml
cluster.name:HES
node.name:H1
#path.logs:/data/log/
network.host:192.168.0.2
http.port:9200
discovery.zen.ping.unicast.hosts:["192.168.0.3","192.168.0.4"]
Logstash
核心部分分为client和server
Kibana
192.168.0.2
修改kibana配置文件
vim /etc/kibana/kibana.yml
#****修改为下面3****个参数
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.0.2:9200"
可视化的监控工具都可以指定某一个服务器,查看运行状态
redis
Redis服务器是logstash官方推荐的broker选择。Broker角色也就意味着会同时存在输入和输出俩个插件。
LogStash::Inputs::Redis支持三种data_type(实际上是redis_type),不同的数据类型会导致实际采用不同的Redis命令操作:
list=> BLPOP
channel=> SUBSCRIBE
pattern_channel=> PSUBSCRIBE
Redis服务器通常都是用作NoSQL数据库,不过logstash只是用来做消息队列。所以不要担心logstash里的Redis会撑爆你的内存和磁盘。
****
input {
redis {
data_type => "list"
key => "logstash"
host => "127.0.0.1"
port => 6379
threads => 5
codec => "json"
}
}
filter {
}
output {
elasticsearch {
hosts =>["192.168.0.2:9200","192.168.0.2:9200","192.168.0.4:9200"]
index =>"logstash-%{type}-%{+YYYY.MM.dd}"
document_type => "%{type}"
workers => 1
flush_size => 20
idle_flush_time => 1
template_overwrite => true
}
stdout{}
}