1.按照顺序安装elasticsearch、logstash与kibana,要求版本号相同。
2.elasticsearch安装后的配置:添加一个elasticsearch-head插件[1],方便查看日志与添加索引。
3.logstash安装后的配置:在logstash的目录config文件夹下,新建一个logstash.config文件,写入[2]:
# Logstash configuration for creating a simple
# Logstash -> Elasticsearch pipeline.
input{
file{
path => "D:/CODE/logGenerator/logFile.txt"
start_position => "beginning"
}
}
filter
{
grok{
match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log-level}-%{GREEDYDATA:message}"}
}
date{
match => ["timestamp", "ISO8601"]
}
}
output{
elasticsearch{
hosts => ["http://localhost:9200"]
index => "my_log_index"
}
stdout{codec => rubydebug}
}
注:这里面有个大BUG,input中file路径,在windows下一定不要写成反斜杠“\”[3],惨痛教训!!!
4.kibana安装后的配置:打开config/kibnana.yml中以下三条注释,便于kibana找到elasticsearch中的内容。
server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["http://localhost:9200"]
5.logstash从文件中采集的日志信息如何输入到elasticsearch中?
我们已经在logstash.config中指定了输出到elasticsearch中"my_log_index"的索引里面,因此剩下的就是使用elasticsearch-head新建一个"my_log_index"索引:
6.模拟日志生成Python代码[2]:
import logging
import random
logging.basicConfig(filename="logFile.txt",
filemode='a',
format='%(asctime)s %(levelname)s-%(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
for i in range(0, 100):
x = random.randint(0, 2)
if (x == 0):
logging.warning('Log Message')
elif (x == 1):
logging.critical('Log Message')
else:
logging.error('Log Message')
7.启动各项服务:
PS D:\ELK\elasticsearch-7.17.0> .\bin\elasticsearch.bat
PS D:\ELK\elasticsearch-head> npm run start
PS D:\ELK\logstash-7.17.0> ./bin/logstash -f ./config/logstash.conf
PS D:\ELK\kibana-7.17.0-windows-x86_64\bin> .\kibana.bat
从上到下依次是elasticsearch、es-head、logstash和kibana,其中kibana启动很慢,多等会儿就好了。
8.运行上文脚本,不断模拟日志生成。
9.kibana使用[4]:
打开浏览器进入http://localhost:5601/
直接点左下角Stack Managment,再Kibana栏目下选择Index Patterns
然后右上角Creat index pattern
都设置好后Analytics->Discover可以看结果啦:
reference:
[1] Elasticsearch Windows版安装配置 - liaozk - 博客园
[2] 干货 | ELK 日志实时分析实战_铭毅天下的博客-优快云博客