一、简介
ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
官网权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
安装指南:https://www.elastic.co/guide/en/elasticsearch/reference/7.x/rpm.html
二、环境准备
jdk1.8.0_201(自行百度安装)
链接: https://pan.baidu.com/s/1XFAeaQp2WTCAYcfJznSKCw 提取码: n8gq
elasticsearch-7.9.3
kibana-7.9.3
logstash-7.9.3
链接: https://pan.baidu.com/s/1i54lIGVyNSFAj6XIclFraw 提取码: k4sk
主机三台
10.0.128.207
10.0.128.208
10.0.128.210(主)
每台主机创建目录elk
mkdir /opt/elk
mkdir /var/log/elk/es7
mkdir /data/es7
创建elk用户
useradd elk
解压相关文件
#三个节点都需要
tar -zxf elasticsearch-7.9.3-linux-x86_64.tar.gz -C /opt/elk/
#主节点
tar -zxf kibana-7.9.3-linux-x86_64.tar.gz -C /opt/elk/
tar -zxf logstash-7.9.3.tar.gz -C /opt/elk/
tar -zxf elasticsearch-head-master.tar.gz -C /opt/elk/
修改目录权限
chown -R elk:elk /opt/elk
chown -R elk:elk /var/log/elk
chown -R elk:elk /data/es7
三、开始安装配置
3.1 安装elasticsearch
#1、修改elasticsearch.yml配置文件
vim /opt/elk/elasticsearch-7.9.3/config/elasticsearch.yml
# ---------------------------------- Cluster -----------------------------------
cluster.name: bigdata-elk
# ------------------------------------ Node ------------------------------------
node.name: bigdata210
# ----------------------------------- Paths ------------------------------------
path.data: /data/es7
path.logs: /var/log/elk/es7
# ---------------------------------- Network -----------------------------------
network.host: 0.0.0.0
transport.host: 0.0.0.0
network.publish_host: 10.0.128.210
http.port: 9200
# --------------------------------- Discovery ----------------------------------
discovery.seed_hosts: ["10.0.128.210", "10.0.128.208","10.0.128.207"]
cluster.initial_master_nodes: ["bigdata210", "bigdata208", "bigdata207"]
# ---------------------------------- Various -----------------------------------
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#2、修改系统参数,不修改可能达到系统瓶颈,导致软件崩溃
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
sysctl -p
报错:sysctl: cannot stat /proc/sys/–p: No such file or directory
执行以下命令:
1、 modprobe br_netfilter
2、 ls /proc/sys/net/bridge
3、 sysctl -p
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
echo "elk soft nproc 65536" >> /etc/security/limits.d/20-nproc.conf
#3、切换用户elk来运行elasticsearch
su elk
/opt/elk/elasticsearch-7.9.3/bin/elasticsearch -d
#4、检查elasticsearch状态,如下则表示正常运行
[elk@bigdata210 config]$ curl http://10.0.128.210:9200
{
"name" : "bigdata210",
"cluster_name" : "bigdata-elk",
"cluster_uuid" : "_na_",
"version" : {
"number" : "7.9.3",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
"build_date" : "2020-10-16T10:36:16.141335Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
#5、告警:Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone.
#在文件elasticsearch.yml中加入下面的配置
xpack.security.enabled: false
3.2 安装 Logstash
logstash pipeline 包含两个必须的元素:input和output,和一个可选元素:filter。
从input读取事件源,(经过filter解析和处理之后),从output输出到目标存储库(elasticsearch或其他)。
官网:https://www.elastic.co/guide/en/logstash/7.9/index.html
运行一个最基本的logstash测试一下
bin/logstash -e 'input {stdin {}} output {stdout {}}'
配置读取日志
vim config/test_file.conf
input {
file {
path => ["/var/log/elk/es7/bigdata-elk.log"]
type => "bigdata-elk"
}
}
output {
elasticsearch {
hosts => ["10.0.128.210:9200"]
index => "sbigdata-elk-log-%{+YYY.MM.dd}"
}
}
指定配置文件运行logstash
bin/logstash -f config/test_file.conf &
netstat -tulnp |grep 9600
3.3 安装ES插件:elasticsearch-head
第一种:
通过chrome安装插件的方式提供一个可操作es的图形化界面
谷歌浏览器访问http://extb.cqttech.com/search/elasticsearch%2520head
第二种:
1.安装node.js
官网地址:https://nodejs.org/en/download/
下载解压
wget https://nodejs.org/dist/v14.15.0/node-v14.15.0-linux-x64.tar.xz
xz -d node-v14.15.0-linux-x64.tar.xz
tar -xf node-v14.15.0-linux-x64.tar
#或者使用
tar -xJf node-v14.15.0-linux-x64.tar
#phantomjs 官网 https://phantomjs.org/download.html
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
#以下两个如果已经装过可忽略
yum -y install bzip2
yum -y install fontconfig-devel
tar -xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2
#创建软连接
ln -s /opt/elk/node-v14.15.0-linux-x64/bin/node /usr/local/bin/node
ln -s /opt/elk/node-v14.15.0-linux-x64/bin/npm /usr/local/bin/npm
ln -s /opt/elk/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
#查看版本
node -v
npm -v
phantomjs --version
2.安装head插件
cd /opt/elk/elasticsearch-head
npm install
npm run start
npm run start &
#使用grunt方式启动
npm install -g grunt-cli
grunt server &
netstat -tulnp| grep 9100
3.4 安装kibana
#修改配置文件
vim /opt/elk/kibana-7.9.3-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "10.0.128.210"
server.name: "bigdata-kibana"
elasticsearch.hosts: ["http://10.0.128.210:9200"]
logging.dest: /var/log/elk/kibana/kibana.log
i18n.locale: "zh-CN"
#创建日志目录
mkdir /var/log/elk/kibana
chown -R elk:elk /var/log/elk/kibana
#启动kibana
bin/kibana &
访问 http://10.0.128.210:5601/