搭建ELK全纪实 elasticsearch logstash kibana
前言
随着业务的扩张,跑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测试工具 注意工具中预制的可能已经启用,请谨慎使用