通过xshell在linux上安装ELK6.6.1
通过xshell在linux上安装ELK6.6.1
Elasticsearch:是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
Logstash:是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
Kibana:是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
1)环境准备
CentOS7、JDK8、Elasticsearch-6.6.1、Logstash-6.6.1、Kibana-6.6.1
jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
elk下载地址:https://www.elastic.co/downloads
2)安装Elasticsearch
上传到服务器并且解压拷贝到指定文件夹
tar -zxvf elasticsearch-6.6.1.tar.gz #解压
mv elasticsearch-6.6.1 /usr/local/src/elasticsearch #拷贝
创建用户和用户组,ES不能使用root用户直接运行,必须使用普通用户运行
groupadd elasticsearch #创建用户组
useradd elasticsearch -g elasticsearch #创建用户
chown -R elasticsearch:elasticsearch /usr/local/src/elasticsearch #分配权限
chown -R elasticsearch:elasticsearch /usr/local/src/elasticsearch/config/elasticsearch.keystore
创建数据文件和日志文件
mkdir /data/es/{data,logs,work} -p #创建文件夹
chown -R elasticsearch:elasticsearch /data/es #设置可读取权限
修改elasticsearch配置文件
# 设置集群名称
cluster.name: es-cluster
# 节点名称,每个节点不一样
node.name: node-1
# 监听的网络地址
network.host: 192.168.227.130
# 开启监听的端口
http.port: 9200
transport.tcp.port: 9300
# 数据存储类型
node.master: true
node.data: true
# 文件存储位置
#path.conf: /usr/local/src/elasticsearch/conf
path.data: /data/es/data
#path.work: /data/es/work
path.logs: /data/es/logs
# 集群
discovery.zen.ping.unicast.hosts: ["192.168.227.130:9300", "192.168.227.131:9300", "192.168.227.132:9300"]
discovery.zen.minimum_master_nodes: 1
# 跨域设置
http.cors.enabled: true
http.cors.allow-origin: "*"
启动
su elasticsearch #切换用户
cd /usr/local/src/elasticsearch/bin #进入安装目录下的bin文件夹
./elasticsearch #启动ES(方式一,可看见启动日志)
./elasticsearch -d #后台启动ES(方式二,无日志输出)
查看是否启动成功
curl http://192.168.20.223:9200
返回如下,则成功
{
"name" : "node-1",
"cluster_name" : "es-cluster",
"cluster_uuid" : "HrDKOIubQjCE7Fbp5ig6QA",
"version" : {
"number" : "6.6.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "1fd8f69",
"build_date" : "2019-02-13T17:10:04.160291Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
启动问题
1)启动报错,运行elasticsearch需要vm.max_map_count至少需要262144内存
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:切换到root用户修改配置sysctl.conf
su root
vi /etc/sysctl.conf
添加下面配置
vm.max_map_count=655360
并执行命令
sysctl -p
然后,esc+(shift+z+z)退出,重新启动elasticsearch
2)进程不够用
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决办法:切换到root用户修改配置/etc/security/limits.conf
su root
vi /etc/security/limits.conf
在最后添加参数
* soft nofile 65536
* hard nofile 131072
3)安装Head插件
前期准备,由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包;如果未安装git,则先安装git工具。下载安装:
git clone https://github.com/mobz/elasticsearch-head.git #github上下载
安装grunt
cd elasticsearch-head
npm install -g grunt --registry=https://registry.npm.taobao.org
查看grunt版本
grunt -version
安装插件
npm install
在elasticsearch-head目录下node_modules/grunt下如果没有grunt二进制程序,需要执行:
npm install grunt --save
修改配置,添加hostname,打开elasticsearch-head下Gruntfile.js文件:
connect: {
server: {
options: {
hostname:'192.168.20.223',
port: 9100,
base: '.',
keepalive: true
}
}
}
设置默认连接IP为192.168.20.223(本机IP),打开_site下的app.js:
init: function(parent) {
this._super();
this.prefs = services.Preferences.instance();
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.20.223:9200";
if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) {
// XHR request fails if the URL is not ending with a "/"
this.base_uri += "/";
}
ES设置允许跨域,修改elasticsearch.yml文件加入以下内容:
# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"
启动可视化界面,启动head
cd elasticsearch-head
grunt server
grunt server & #加&设置为后台启动,不加ctrl+c退出时则关闭
另一种启动方式
cd elasticsearch-head
npm run start
查看是否部署成功
http://192.168.20.223:9100/
4)安装Logstash
上传到服务器并且解压拷贝到指定文件夹
tar -zxvf logstash-6.6.1.tar.gz
mv logstash-6.6.1 /usr/local/src/logstash
修改配置文件
cd /usr/local/src/logstash/config
cp logstash-sample.conf logstash.conf
vi logstash.conf
配置文件
input {
# stdin{}
tcp {
# 这里其实把logstash作为服务,开启9250端口接收logback发出的消息
host => "192.168.227.130" port => 9250 mode => "server" tags => ["tags"] codec => json_lines
}
}
filter {
# mutate{
# add_field => {
# "@msg" => "%{msg}"
# }
# }
json{
source => "msg"
skip_on_invalid_json => true
# remove_field => ["msg"]
}
}
output {
elasticsearch {
hosts => ["http://192.168.227.130:9200"]
}
stdout { codec => rubydebug }
}
启动Logstash
/usr/local/src/logstash/bin/logstash -f /usr/local/src/logstash/config/logstash.conf
后台启动
nohup /usr/local/src/logstash/bin/logstash -f /usr/local/src/logstash/config/logstash.conf >/dev/null &
5)安装Kibana
上传到服务器并且解压拷贝到指定文件夹
tar -zxvf kibana-6.6.1-linux-x86_64.tar.gz
mv kibana-6.6.1-linux-x86_64 /usr/local/src/kibana
修改配置文件
vi /usr/local/src/kibana/config/kibana.yml
配置文件
# kibana端口号
server.port: 5601
# 绑定的主机IP
server.host: "192.168.20.223"
# ES地址
elasticsearch.hosts: ["http://192.168.20.223:9200"]
# 开启
kibana.index: ".kibana"
# 国际化配置,en:英文,zh-CN:中文,看个人习惯选择
i18n.locale: "en"
启动
/usr/local/src/kibana/bin/kibana
后台启动
nohup /usr/local/src/kibana/bin/kibana &
或
nohup /usr/local/src/kibana/bin/kibana >/dev/null &
停止
- 查看进程号 jps 或者 ps -ef|grep kibana 或者 ps -ef|grep 5601
- 杀死进程 kill -9 进程号
查看
http://192.168.20.223:5601