1.简介
ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件。
(1)Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
(2)Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
(3)Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
2.使用docker-compose,一键搭建ELK环境
(1)电脑上安装docker
windows端:https://www.runoob.com/docker/windows-docker-install.html
linux端:https://www.jianshu.com/p/66575c930cf1
因为网上有很多文章讲述,这边就直接跳过了
(2)安装docker-compose
linux运行命令:
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给docker-compose执行权限,运行命令:
chmod +x /usr/local/bin/docker-compose
执行后,运行docker-compose --version,可以看到docker-compose的版本和docker的版本,这个时候,docker-compose安装成功。
(3)新建一个docker-compose.yml文件
在 /home/用户名/ 下新建一个docker-compose.yml文件
cd /home/用户名
touch docker-compose.yml
打开 docker-compose.yml
vi docker-compose.yml
将下面的代码粘贴进去(注意缩进,缩进不对会报错)
version: ‘2’
services:
elasticsearch:
image: elasticsearch
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
- /volume/elasticsearch/data:/usr/share/elasticsearch/data
hostname: elasticsearch
restart: always
ports:
- "9200:9200"
- "9300:9300"
kibana:
image: kibana
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200 #elasticsearch查询接口地址
hostname: kibana
depends_on:
- elasticsearch #后于elasticsearch启动
restart: always
ports: - "5601:5601"
logstash:
image: logstash
command: logstash -f /etc/logstash/conf.d/logstash.conf #logstash 启动时使用的配置文件
volumes:
- /volume/logstash/conf.d:/etc/logstash/conf.d #logstash 配文件位置
- /volume/logst:/tmp
- /volume/logs:/logs
hostname: logstash
restart: always
depends_on:
- elasticsearch #后于elasticsearch启动
ports:
- "7001-7005:7001-7005"
- "4560:4560"
- "9600:9600"
保存并退出
按一下Esc,
再输入“:wq”命令
(4)编写 logstash 的配置文件
进入logstash映射出来的目录
cd /volume/logstash/conf.d
打开logstash.conf(若没有则“touch logstash.conf”创建一个)
vi logstash.conf
复制下面的代码,并保存退出
input {
file { //若是抓取日志文件则使用这个
path => "/logs/*.log" //日志文件的路径
type => "service-log" //存入es时的一个type字段,随便一个标识就行
start_position => "beginning"
stat_interval => "2"
codec => json { //若希望json格式的日志信息中的字段可以被解读,就加上这个
charset => "UTF-8"
}
}
tcp { //若程序直接发送消息,使用这个
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output{
elasticsearch {
hosts => ["elasticsearch:9200"]
action => "index"
index => "logstash-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}
(5)创建并启动ELK的相关容器
这步很简单,只要在docker-compose.yml的当前目录。
执行docker-compose up -d就行了。若报错提示找不到文件目录,就把提示的文件自己创建一下。
(6)登录kabana查看日志信息
浏览器输入 linux的ip:5601进入kabana的可视化界面,
创建一个pattern就可以看日志啦