2020-07-27
ELK+filebeat部署过程(Windows版本)
author:perin_qin
date:2020.7.23
ELK是基于java的开源项目,所以需要先安装jdk和配置环境变量
安装配置jdk参考:https://blog.csdn.net/weixin_37601546/article/details/88623530 (Windows7)
1.安装配置 jdk1.8.0_221
安装目录:C:\Java\jdk1.8.0_221
配置环境变量:计算机---属性---高级系统设置---高级---环境变量---administrator的用户变量---新建---变量名:JAVA_HOME,变量值:C:\Java\jdk1.8.0_221---新建---变量名:PATH,变量值:%JAVA_HOME%\bin;---系统变量---新建---变量名:CLASSPATH,变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar---确定---确定
测试:cmd---java -version,出现1.8.0_221说明成功,或者输入java,有中文输出
2.安装配置ElasticSearch(ES)
官网下载地址:https://www.elastic.co/downloads (贼慢)
推荐下载地址:https://mirrors.huaweicloud.com/elasticsearch/ (华为云的仓库)
版本:elasticsearch-7.8.0
解压路径:D:\Linux\data\ELK-Windows\elk\elasticsearch-7.8.0 (最好不要有中文或空格)
修改es配置文件(notepad++编辑)
D:\Linux\data\ELK-Windows\elk\elasticsearch-7.8.0\config\elasticsearch.yml
cluster.name: my-application #集群的名称,所有节点统一集群名称
node.name: node1 #节点名称,必须是唯一的
path.data: D:\Linux\data\ELK-Windows\elk\elasticsearch-7.8.0\data #数据存储路径(源文件夹里没有data目录,自己建一个)
path.logs: D:\Linux\data\ELK-Windows\elk\elasticsearch-7.8.0\logs #日志存储路径
bootstrap.memory_lock: true #锁住内存,不被使用到交换分区去
network.host: 0.0.0.0 #监听的地址
http.port: 9200 #监听的端口
#跨越配置,(新增这四行是为了后面安装elasticsearch用到)
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
双击D:\Linux\data\ELK-Windows\elk\elasticsearch-7.8.0\bin\下的elasticsearch.bat,重启es
(启动服务所打开的powershell窗口不能关闭,否则服务停止)
浏览器:http://172.10.0.108:9200/
3.安装Elasticsearch-head插件
elasticsearch-head是用于浏览Elasticsearch集群并与其进行交互的Web前端,即用于显示集群节点和数据信息
Elasticsearch 5及以上版本均无法通过elasticsearch-plugin 进行安装,可以下载node(npm下载head)和grunt(运行head)来安装head插件
1.安装nodejs
下载地址:https://nodejs.org/en/download/
选择相应版本的.msi,双击安装(路径:C:\Program Files\nodejs\,注意配置环境变量)
安装完成可在cmd输入node -v 查看到版本
cmd输入npm install -g grunt-cli安装grunt
安装完成cmd输入grunt -version查到版本信息(如果查不到也没关系,只要在安装结束后出现grunt的版本就算安装成功了)
2.安装elasticsearch-head
下载地址:https://github.com/mobz/elasticsearch-head
修改配置文件D:\Linux\data\ELK-Windows\elk\elasticsearch-head-master\Gruntfile.js
在如下位置添加hostname: '*',
修改配置文件D:\Linux\data\ELK-Windows\elk\elasticsearch-head-master_site\app.js
在图中这个位置把es服务器的ip和端口写上去
3.启动elasticsearch-head服务
powershell进入D:\Linux\data\ELK-Windows\elk\elasticsearch-head-master目录
npm install #初始化依赖
npm run start #启动服务
浏览器:http://172.10.0.108:9100/
看到这个画面说明启动成功,目前集群中只有一个节点
4.安装logstash
下载地址:https://mirrors.huaweicloud.com/logstash/
版本:logstash-7.8.0
解压路径:D:\Linux\data\ELK-Windows\elk\logstash-7.8.0
新建配置文件:D:\Linux\data\ELK-Windows\elk\logstash-7.8.0\config\logstash.conf
input {
beats {
port => 5044
}
}
output {
stdout{ codec => rubydebug { metadata => true }}
elasticsearch {
hosts => ["http://172.10.0.108:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
#正式的配置文件中不能注释和多余空格,否则logstash启动失败
input {
#使用 Filebeat 收集日志
beats {
port => 5044 #提供给 Filebeat 传入日志的端口,即 logstash 的服务务端口
}
}
output {
#输出到控制台方便调试
stdout{ codec => rubydebug { metadata => true }}
#输出到 elasticsearch
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
启动logstash
powershell进入logstash的bin目录:D:\Linux\data\ELK-Windows\elk\logstash-7.8.0\bin
.\logstash.bat -f ../config/logstash.conf #启动logstash
5.安装Kibana
下载地址:https://mirrors.huaweicloud.com/kibana/
版本:kibana-7.8.0
解压路径:D:\Linux\data\ELK-Windows\elk\kibana-7.8.0-windows-x86_64
修改配置文件:D:\Linux\data\ELK-Windows\elk\kibana-7.8.0-windows-x86_64\config\kibana.yml
server.port: 5601 #本机(kibana)端口
server.host: "172.10.0.108" #本机(kibana)的ip
elasticsearch.hosts: ["http://172.10.0.108:9200"] #es的ip+端口
i18n.locale: "zh-CN" #i18n.locale: "zh-CN" #中文版(看个人习惯选用语言)
启动kibana
powershell进入kibana的bin目录:D:\Linux\data\ELK-Windows\elk\kibana-7.8.0-windows-x86_64\bin
.\kibana.bat
启动成功可看到ip+端口
6.测试
浏览器:http://172.10.0.108:5601/
第一次登录,点击Explore on my own(使用的我的样例数据)
7.安装Filebeat
下载地址:https://mirrors.huaweicloud.com/filebeat/7.8.0/
版本:7.8.0
解压路径:D:\Linux\data\ELK-Windows\elk\filebeat-7.8.0-windows-x86_64
修改配置文件:
D:\Linux\data\ELK-Windows\elk\filebeat-7.8.0-windows-x86_64\filebeat.yml
filebeat.inputs:
- type: log #指定文件的输入类型log(默认)或者stdin
enabled: true
paths:
- D:\Linux\data\ELK-Windows\elk\elasticsearch-7.8.0\logs\* #收集指定文件夹下所有(后缀为.log)的日志文件
fields:
log_tag: erp #自己增加到fields里的字段(这行和上一行可加可不加)
multiline: #用于日志中每一条日志占据多行的情况,比如各种语言的报错信息调用栈
pattern: '^\d{4}-\d{1,2}-\d{1,2}' #匹配以日期格式(yyyy-MM-dd) 开头为另起一行
negate: true
match: after #匹配pattern后与后面(前面:before)的内容合并为一条日志
output.logstash: #发送数据到logstash
# Logstash 主机地址
hosts: ["172.10.0.108:5044"]
#如果数据要求从filebeat-->logstash-->es-->kibana,需要将output.elasticsearch:这部书注释掉,根据实际情况配置
启动Filebeat
powershell进入Filebeat的目录:D:\Linux\data\ELK-Windows\elk\filebeat-7.8.0-windows-x86_64
.\filebeat.exe -e -c .\filebeat.yml
8.kibana建索引查数据
这一步输入索引后若“下一步”这个按钮没有变蓝,有可能所以已经存在或者ELK数据传输不通
创建完索引后,点击左侧栏Discover能看到默认索引的数据
选择新建的索引
添加选定字段后,查到的数据将按照字段要求显示