搭建ELK全纪实 elasticsearch logstash
前言
随着业务的扩张,跑web机器越来越多,传统方式如果想看网站的分析报告,需要从各个web机器获取日志,然后通过awk
等命令行进行输出。
而目前的主流方式是使用elk
的方式对日志集中获取并展示
- elasticsearch 一个
Nosql
数据库,专门存储日志信息,暂时可以理解成Mysql
。对比资料 - logstash 一个可以通过各种方式获取日志的开源软件
- kibana 将数据从数据库中查询出来并通过图表展示
数据流向
数据流向图- 安装在各个web服务器的
logstash
收集日志数据 -
logstash
将日志数据发送给elasticsearch
数据库 -
kibana
查询elasticsearch
数据库并展示数据
大致的系统性认知
这个视频有5集,全程可以2倍速度观看,大致可以了解各个软件是干什么的,怎么运行的。以及学习python
使用logstash
传送数据
手把手搭建一个elk
# 简直不要太简单
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
docker-compose up -d
等docker拉取镜像并启动之后。。。
[kui.xiong@xm11-112 docker-elk]$ dc ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------------------------
homekuixiongdockerelk_elasticsearch_1 /usr/local/bin/docker-entr ... Up 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp
homekuixiongdockerelk_kibana_1 /usr/local/bin/kibana-docker Up 0.0.0.0:5601->5601/tcp
homekuixiongdockerelk_logstash_1 /usr/local/bin/docker-entr ... Up 0.0.0.0:5000->5000/tcp, 5044/tcp, 0.0.0.0:9600->9600/tcp
稍微等kibana
加载完,进入http://localhost:5601
即可看到kibana
界面
如果碰到需要输入账户密码的情况,可参照readme的修改密码教程修改密码
搭建完成后,可以试着进入搭建的kibana
看看如何使用的,顺便推几个数据上去练练手。
到目前为止,可以对elk
有个稍微清晰的认知。但是如果要自己搭建一个真正的elk
,肯定要学会logstash是如何使用的,以下介绍logstash
是如何使用的
安装logstash
由于刚刚logstash
的镜像操作有些不方便,所以我在另一个虚拟机安装一个logstash
,然后发送数据到本地的elasticsearch
端口上
安装步骤
使用logstash
非常详细的logstash中文使用说明(有些配置新版的logstash
不兼容,请以官方文档为准)
使用心得
使用logstash
一般只需配置两个文件
-
logstash.yml
是全局的logstash
配置文件,启动logstash时加载的 -
test.conf
单个logstash监听配置,放在任何地方口可以
配置任何logstash
任务只需跟这两个文件有关
参考示例
将控制台输入的数据推送到远端elasticsearch
中,我们将全部配置只放在单个配置中
/tmp/config/test.conf
input {
stdin {
add_field => {"key" => "value"}
codec => "plain"
tags => ["add"]
type => "std"
}
}
output {
elasticsearch {
hosts => "eshost:9200"
user => "elastic"
password => "password"
}
}
运行命令
logstash -f /tmp/config/test.conf
接着在键盘上随便敲,就会将数据发给elasticsearch
,接着在kibana
上呈现
单个传入的json数据
{
"_index": "logstash-2019.07.30-000001",
"_type": "_doc",
"_id": "kSI0RmwBEDGCNjTu4LWH",
"_version": 1,
"_score": null,
"_source": {
"message": "example\n",
"@version": "1",
"@timestamp": "2019-07-31T04:06:06.091Z",
"host": "hostname",
"key": "value",
"type": "std",
"tags": [
"add"
]
},
"fields": {
"@timestamp": [
"2019-07-31T04:06:06.091Z"
]
},
"sort": [
1564545966091
]
}
grok介绍
你可以用grok插件将日志的数据提取出来插入进elasticsearch
中,主要使用了正则表达式
grok测试工具 注意工具中预制的可能已经启用,请谨慎使用