一.简介
ELK是Elasticsearch、Logstash、Kibana的简称。
-
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
-
Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
-
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
-
Filebeat是Beats中的一员。Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。
二.搭建工作
jdk版本推荐1.8以上,ELK各版本推荐一致,下载可搜索官网。
1. JDK
设当前服务器目录为 /root
jdk-8u171-linux-x64.tar.gz 已上传到 /root 目录下
### pwd ,返回 /root
tar -zxvf jdk-8u171-linux-x64.tar.gz
mkdir /usr/java
mv jdk1.8.0_171 /usr/java
vim /etc/profile
#### 将以下内容 shift + insert 到 /etc/profile 的末尾
export JAVA_HOME=/usr/java/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source /etc/profile
### 测试jdk安装
java -version
2. Elasticsearch
#### elasticsearch 默认不能以root身份启动,创建用户,并指定密码
useradd admin
passwd admin
su admin
cd /home/admin
### pwd 返回 /home/admin 设 tar.gz 已上传至 /home/admin
tar -zxvf elasticsearch-6.2.4.tar.gz
mv elasticsearch-6.2.4 /usr/local
cd /usr/local/elasticsearch-6.2.4
vim config/elasticsearch.yml
#### 修改以下配置,cluster.name 根据业务需要自定义
cluster.name: my-cluster
network.host: 0.0.0.0
http.port: 9200
#允许跨域
http.cors.enabled: true
http.cors.allow-origin: /.*/
### 修改 /etc/security/limits.conf 修改配置 * hard nofile 65536
vim /etc/security/limits.conf
### 修改 /etc/sysctl.conf 添加配置 vm.max_map_count=262144
vim /etc/sysctl.conf
### 重新加载一次系统参数
sysctl -p
### 修改 /etc/profile,注释配置 ulimit -n 65535
vim /etc/profile
### 启动 elasticsearch
./bin/elasticsearch -d -p pid
### 查看启动是否成功
curl "http://127.0.0.1:9200"
3. Logstash
设当前服务器目录为 /root
logstash-6.2.4.tar.gz 已上传到 /root 目录下
tar -zxvf logstash-6.2.4.tar.gz
mv logstash-6.2.4 /usr/local
cd /usr/local/logstash-6.2.4
### 配置 logstash config文件
vim config/daily.config
input{
beats {
port => 10515
}
}
filter {
dissect {
mapping => { "message" => "%{timestamp} [%{thread}] %{log-level} %{class} - %{message}" }
}
kv {
source => "message"
field_split => "`"
value_split => "="
}
}
output{
stdout{
}
elasticsearch{
hosts=>["this is your ES server IP:9200"]
index => "demo:daily-index,this is your ES index "
}
}
### 启动脚本,指定配置文件,指定data目录(tips:同一个logstash可配置多个项目,指定不同的config,path.data
nohup sh ./bin/logstash -f /usr/local/logstash-6.2.4/config/daily.config --path.data=/usr/local/logstash-6.2.4/data > nohup.log &
4. Kibana
设当前服务器目录为 /root
logstash-6.2.4.tar.gz 已上传到 /root 目录下
tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz
mv kibana-6.2.4-linux-x86_64 /usr/local
cd /usr/local/kibana-6.2.4-linux-x86_64
### 配置 kibana config文件,增加配置
vim config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://this is your ES server IP:9200"
kibana.index: ".kibana6"
### 启动
nohup ./bin/kibana &
5. FileBeat
Filebeat安装
下载:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.0-linux-x86_64.tar.gz
解压:tar -zxvf filebeat-6.2.1-linux-x86_64.tar.gz
修改 filebeat.yml 配置文件
enabled: true
paths: - /root/et-industry-knowledge-graph/logs/smartqa.log 日志收集路径
注释掉 es
logstash 配置
output.logstash:
# The Logstash hosts
hosts: ["localhost:10515"] logstash地址
启动
nohup ./filebeat -e -c filebeat.yml > filebeat.log &
查看启动 ps -ef|grep filebeat