安装。 —— [ 官网下载 ]
去官网下载相关的包,,例如:
1) 使用root用户创建一个elk用户
[root@centos ~]# useradd –d /usr/elk -m elk
2) 下载相关的安装包:
[root@centos ~]# wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz"
[root@centos ~]# wget "https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz"
[root@centos ~]# wget "https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz"
[root@centos ~]# wget "https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz"
3) 解压所有的相关的安装包:这里我就不写解压的命令了
[root@host elk]# tar -zxvf elasticsearch-6.2.4.tar.gz
[root@host elk]# cd elasticsearch-6.2.4/config
[root@host config]# vi elasticsearch.yml
修改elasticsearch中配置文件elasticsearch.yml的一些参数:
cluster.name: my-application
path.data: /usr/elk/logs
network.host: "0.0.0.0"
http.port: 9200
配置好以上参数
注意由于elk6.0过后,加入了一下安全机制,所有我们在启动的时候不可以使用root用户启动,否则启动会报错,
在上面 我们之前创建过一个elk的用户,现在正好用的,接下来,我们要给elk的用户做授权:
使用root用户给elk用户授权
chown -R elk.elk /usr/elk/
注意,我这里是直接授权了整个elk,是为了方便后续操作
切换用户
[root@host elasticsearch-6.2.4]# su elk
[elk@host elasticsearch-6.2.4]$
注意看,现在就切换上elk的用户,现在我们就可以去启动elasticsearch了
[elk@host elasticsearch-6.2.4]$ ./bin/elasticsearch
错误:
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:
切换到root用户修改配置sysctl.conf
[root@host]# sudo vi /etc/sysctl.conf
修改下面配置:
vm.max_map_count=655360
并执行命令:
$ sudo sysctl -p
解决之后再次切换elk用户重新启动elasticsearch
启动之后,打开浏览器 反问 http://192.168.10.191:9200
{
"name" : "z7IHRSv",
"cluster_name" : "my-application",
"cluster_uuid" : "KWoZUNfjTEiEeVAL3qdNRg",
"version" : {
"number" : "6.2.4",
"build_hash" : "ccec39f",
"build_date" : "2018-04-12T20:37:28.497551Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
当出现了这个的时候,就证明启动成功了,elasticsearch就安装完成了
安装elasticsearch-head前需先安装nodejs,主要安装步骤如下
node.js的安装
命令行:wget https://nodejs.org/dist/v8.9.1/node-v8.9.1-linux-x64.tar.xz
命令行:xz -d node-v8.9.1-linux-x64.tar.xz(这样解压后还会有tar的文件)
解 压: tar -zxvf node-v8.9.1-linux-x64.tar
切换到目录下的bin目录
命令行:cd node-v8.9.1-linux-x64/bin/ (可以看到node和npm)
执行目录查看node版本: ./node -v
添加环境变量(/etc/profile)
命令行:vi /etc/profile (执行这条数据前必须是root用户才可以)
加入:
#set node
export NODE_HOME=/usr/elk/node-v4.4.7
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/bin/node_modules
保存之后再执行一条命令:source /etc/profile 环境变量就修改好了
安装完成node.js之后,我们的elasticsearch-head是用grunt命令来执行,所有还需要安装grunt
安装grunt所需插件
$ npm install -g grunt-cli
$ npm install grunt-contrib-clean
$ npm install grunt-contrib-concat
$ npm install grunt-contrib-watch
$ npm install grunt-contrib-connect
$ npm install grunt-contrib-copy
$ npm install grunt-contrib-jasmine
安装grunt
$ npm install grunt --save-dev
$ npm install
查看grunt是否安装成功
$ grunt -version
这些插件全部安装完成之后,现在我们就可以真真的开始elastic-head的安装了
首先我们去wget https://github.com/mobz/elasticsearch-head/archive/master.zip
注意这里下载的是zip的包,因为官方提供的就是zip的,zip就zip反正不影响,
#解压zip的包
$ unzip elasticsearch-head-master.zip
#进入elasticsearch-head-master目录,修改Gruntfile.js文件
$ cd elasticsearch-head-master
$ vim Gruntfile.js
#找到下面的 connect 属性,新增hostname:‘*’:
connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}
}
#修改_site/app.js 文件,修改head的连接地址
app.App = ui.AbstractWidget.extend({
defaults: {
base_uri: null
},
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.10.129: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 += "/";
}
.....
}
})
这个找起来比较花时间,在文件的最下面,可能需要花点时间去找,如果你早点怎么收索,那就快很多了
启动ElasticSerach-head
nohup grunt server &
启动之后,现在我们去就浏览器里反问head–> http://192.168.10.191:8100
效果就是这样的,告诉大家一下,为什么健康值为黄色,是因为我们没有部署集群,所有为黄色
之前我们已经下载了相关的包,现在我们就可以直接去看是安装了,以为logstash中也是可以集群的,
我们这里为了节约时间,就暂时只安装一台,
logstash安装的过程中,我们需要对他进行一些配置文件的修改,但是其中我们的收集日志的工具其实是filebeat,
所有这里我就直接结合filebeat和logstash两个一起来安装
在结合kibana的可视化做一下说明
事先告诉大家,我用的日志收集器是filebeat,logstash是用来做连接ElasticSerach输入输出的中间枢纽
接下来我们就来安装logstash和filebeat
安装logstash
[root@host elk]# tar -zxvf logstash-6.2.4.tar.gz
[root@host elk]# cd logstash-6.2.4/config
注意:我们队logstash.yml文件不需要做任何的修改,默认配置就ok了
[root@host elk]# cd logstash-6.2.4/config
[root@host elk]# touch ./config/logstash.conf #创建一个logstash.conf文件
[root@host elk]# vi ./config/logstash.conf
在logstash.conf文件中加入下面的环境,这里我用的是redis,有些人用的kafka,我用redis是应为安装简单,方便
这里根据个人情况选择
input {
redis {
data_type => "list" #logstash redis插件工作方式
host => "192.168.10.191" #redis地址
port => "6379" #redis端口
key => "shopweb" #监听的键值
}
}
output {
elasticsearch {
hosts => ["192.168.10.191:9200"] #ElasticSerach地址
index => "shopweb-%{+YYYY.MM.dd}" #这个是索引值
}
}
配置好这些之后,我们就可以启动logstash了
记得切换用户
[root@host elk]# su elk
[elk@host elk]#
[elk@host elk]# ./bin/logstash -f ./config/logstash.conf
这样启动之后就可以看到日志,但是不可以关闭窗口,一旦关闭创建,logstash就停了
所有之前为什么需要安装nohup呢,现在就可以用nohup面板来后台启动了
如果你启动了记得查杀一下进程
[elk@host elk]# ps -ef | grep logstash
[elk@host elk]# kill -9 6548
[elk@host elk]# nohup ./bin/logstash -f ./config/logstash.conf &
启动之后 我们先不管,接下来我们再来安装filebeat,安装完filebeat之后,我们回来结合ElasticSerach
做进一步的配置
tar -zxvf filebeat-6.0.1-linux-x86_64.tar.gz
[root@host elk]# tar -zxvf filebeat-6.0.1-linux-x86_64.tar.gz
[root@host elk]# cd filebeat-6.0.1-linux-x86_64
[root@host elk]# vi filebeat.yml
修改的配置文件如下
- type: log
# Change to true to enable this prospector configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
#指定要监控的日志,可以指定具体得文件或者目录
paths:
- /usr/local/nlp/logs/shopweb/*.log
#- c:\programdata\elasticsearch\logs\*
tags: ["shopweb"]
document_type: "shopweb"
#================================ redis output ======================
#收集日志输出到redis集群
output.redis:
enabled: true
hosts: ["192.168.10.191:6500"]
#hosts: ["192.168.10.191:6500","192.168.10.192:7600","192.168.10.191:7601"] #redis集群配置
key: "shopweb"
db: 0
timeout: 5
#----------------------------- Logstash output --------------------------------
filebeath还指出同事监控多个配置文件,下面是一个filebeath监控两个的配置
#=========================== Filebeat prospectors =============================
filebeat.prospectors:
# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.
- type: log
# Change to true to enable this prospector configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /usr/local/src/development/logs/*.log
tags: ["demo1"]
- type: log
enabled: true
paths:
- /usr/local/src/development/logs/demo/*.log
tags: ["demo2"]
#================================ redis output ======================
#output.file: #输出到文件
# path: "/usr/elk/date/logs"
# filename: "filebeat.txt"
output.redis:
hosts: ["192.168.10.191"]
# db: "1"
port: "6379"
# password: "123456"
key: "shopweb"
两种配置选择一个就OK了
配置完成之后,我们就开始启动filebeat吧
在启动的时候我们可以查看一下filebeat中的配置文件
[elk@host filebeat]# grep -v "#" /usr/elk/filebeat-6.0.1/filebeat.yml |grep -v "^$"
=============查看到的结果=====================
filebeat.prospectors:
- type: log
enabled: true
paths:
- /usr/local/src/development/logs/*.log
tags: ["demo1"]
- type: log
enabled: true
paths:
- /usr/local/src/development/logs/demo/*.log
tags: ["demo2"]
exclude_lines: ['^DBG',"^$"]
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
setup.kibana:
output.redis:
hosts: ["192.168.10.191"]
port: "6379"
key: "shopweb"
=======================
启动测试
[elk@host filebeat]# ./filebeat -e -c filebeat.yml -d "Publish"
后台启动
[elk@host filebeat]# nohup ./filebeat -e -c filebeat.yml &
查看进程
[elk@host filebeat]# ps aux | grep filebeat
好了,最后我们就来安装一下Kibana的服务
Kibana安装就比较简单了
[root@host kibana]# tar -zxvf kibana-6.2.4.tar.gz
[root@host kibana]# cd kibana-6.2.4/config
[root@host config]# vi kibana.yml
kibana.yml配置
server.port: 5601
server.host: "0.0.0.0"
server.name: "your-hostname"
elasticsearch.url: "http://192.168.10.191:9200"
elasticsearch.preserveHost: true
kibana.index: ".kibana"
下面我们就来启动kibana,我们还是以后台启动的方式来启动kibana,一样的要注意切换elk用户哦
[elk@host elk]# nohup bin/kibana & #kibana 启动的非常慢,我们可能要等待一段时间
[elk@host elk]# tail -f nohup.out #查看日志
启动完成之后,接下来我们就来反问一下kibana–》http://192.168.10.191:5601/app/kibana
由于图片上传不了,所有我只能暂时到这里了
下面我们就直接来转一下x-pack插件吧
1) Elasticsearchk中安装x-pack插件
手动下载X-Pack zip文件:https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-6.2.4.zip
自动下载#: bin/elasticsearch-plugin install x-pack
建议自动下载,可以自动匹配版本型号
A. 安装:# bin/elasticsearch-plugin install x-pack
…….
Continue with installation? [y/N] # y
Continue with installation? [y/N] # y
参数说明:
xpack.graph.enabled 设置为false禁用X-Pack图形功能。
xpack.ml.enabled 设置为false禁用X-Pack机器学习功能。
xpack.monitoring.enabled 设置为false禁用X-Pack监视功能。
xpack.reporting.enabled 设置为false禁用X-Pack报告功能。
xpack.security.enabled 设置为false禁用X-Pack安全功能。
xpack.watcher.enabled 设置false为禁用Watcher。
启动报错时
Exception in thread “main” org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /usr/elk/elasticsearch-6.2.4/config/elasticsearch.keystore
报错需要从新授权
chown -R elk.elk /usr/local/elasticsearch/
在从新启动elasticsearch
B. 给elasticsearch设置密码 注意:设置密码的时候需要保持elasticsearch是启动状态
$ bin/x-pack/setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,kibana,logstash_system.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
passwords must be at least [6] characters long
Try again.
Enter password for [elastic]:
passwords must be at least [6] characters long
Try again.
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [elastic]
安装成功之后 修改 elasticsearch.yml配置文件
加入:
[elk@host elk]# vi elasticsearch.yml
加入下面的参数
#xpack.security.enabled: true
#xpack.graph.enabled: true
xpack.ml.enabled: false
#xpack.reporting.enabled: true
#xpack.monitoring.enabled: true
xpack.watcher.enabled: false
在x-pack配置文件中,默认属性是为true的,所有配置时为可以只设置为false的属性
打开浏览器查询所有用户:http://localhost:9200/_xpack/security/user?pretty
查询所有Roles:http://localhost:9200/_xpack/security/role
监控方便部署了X-Pack之后,因为验证的问题,head无法正确连接
使用这个链接 http://localhost:9100/?auth_user=elastic&auth_password=admins-1
下面是elasticsearch的配置
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
#特别注意:有些版本和安装http.cors.allow-headers的东西不一样
#在我的机器中需要配置的是http.cors.allow-headers: Authorization,Content-Type
#不然head是连接不上,head无法正常连接时
#在elasticsearch.yml中需要加上
#http.cors.enabled: true
#http.cors.allow-origin: "*"
#http.cors.allow-headers: Authorization,Content-Typ
在浏览器中打开时加入两个参数:auth_user=elastic&auth_password=admins-1
head输入url时:也就是http://localhost:9100/?auth_user=elastic&auth_password=admins-1
这样就可以直接连接上elastic了
查询用户组的角色:http://10.168.12.138:8200/_xpack/security/role
2) Kibana 安装 x-pack
你可能会等待不知道多久才成功kibana-plugin安装中时间会比较长
安装命令:bin/kibana-plugin install x-pack
如果安装失败‘Plugin x-pack already exists, please remove before installing a new version’
删除命令bin/kibana-plugin remove x-pack
删除完之后再从新安装
安装成功的样子
Found previous install attempt. Deleting...
Attempting to transfer from x-pack
Attempting to transfer from https://xxx.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.5.2.zip
Transferring 119363535 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
安装完成之后,在kibana.yml中配置上用户密码
elasticsearch.username: "elastic"
elasticsearch.password: "admins-1"
配置属性:
xpack.security.enabled: true
xpack.graph.enabled: true
xpack.ml.enabled: false
xpack.reporting.enabled: true
xpack.monitoring.enabled: true
xpack.watcher.enabled: false
配置完成之后 启动kibana
3)Logstash 安装 x-pack
安装命令:#:bin/logstash-plugin install x-pack
logstash配置:
input { stdin { } }
output {
elasticsearch {
hosts => ["ip:9200"]
user => elastic #加入
password => admins-1 #加入
}
}
和elasticsearch一样,这里也需要配置对应的logstash.yml文件:
xpack.monitoring.elasticsearch.username: logstash_system/
xpack.monitoring.elasticsearch.password: logstash_password #对应用户的密码
注意:在logstash中logstash.yml的配置用户为logstash_system或elastic
当logstash连接elasticsearch连接不上或者连接失败时需要配置指定elastic路径
xpack.monitoring.elasticsearch.url: http://X.X.X.X:9200
然后在启动就可以了
X-pack是收费的,只能使用一个月,所有我们需要破解
1: 破解并安装
下载x-pack-6.0.0.zip,
解压并找到x-pack-6.0.0.jar。这里使用JD-GUI是无法反编译的,
我使用的是Luyten(下载地址:https://github.com/deathmarine/Luyten/releases/tag/v0.5.0)进行反编译。
将org.elasticsearch/license/LicenseVerifier.class反编译并保存出来。这个类是检查license完整性的类,我们使其始终返回true,就可以任意修改license并导入。将其改为:
package org.elasticsearch.license;
import java.nio.*;
import java.util.*;
import java.security.*;
import org.elasticsearch.common.xcontent.*;
import org.apache.lucene.util.*;
import org.elasticsearch.common.io.*;
import java.io.*;
public class LicenseVerifier
{
public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {
return true;
}
public static boolean verifyLicense(final License license) {
return true;
}
}
注:红色的部分可以都不要
然后需要重新编译class文件。注意这里我们无需编译整个工程,将原来的x-pack-5.2.0.jar和依赖包加入CLASSPATH,即可完成单个文件的编译。实际上只用到了3个依赖包,如果是用RPM或DEB安装的,直接运行:
javac -cp "e:/tools/linux/elasticsearch/5.0/elasticsearch-5.0.0.jar;e:/tools/linux/elasticsearch/5.0/lucene-core-6.2.0.jar;E:/tools/linux/elasticsearch/5.0/x-pack-5.0.0/elasticsearch/x-pack-5.0.0.jar" LicenseVerifier.java
注:javac执行时的参数cp 表示classpath 路径,如果多个在windows环境中用 ; 隔开,linux中用 : 隔开;
把x-pack-5.2.0.jar用压缩文件管理器打开,将里面的LicenseVerifier.class替换掉。再把破解了的jar包部署到各节点上,
将破解的.zip文件安装到服务器,启动 elasticsearch,kibana,并重启集群。安装新的之前要现将已经安装的删除。
申请一个免费license(https://license.elastic.co/registration) 注册后可以下载文件,下载后修改,例如:
主要修改:type改为platinum表示可以使用所有功能 ; expiry_date_in_millis 我这里改了10年 ^_^
{"license":{"uid":"10cf8263-4d23-4e81-b10b-95abfb14b599","type":"platinum","issue_date_in_millis":1490832000000,"expiry_date_in_millis":1806237751991,"max_nodes":100,"issued_to":"www bbb (baiye)","issuer":"Web Form","signature":"AAAAAwAAAA33g9abHznVovDNSXRpAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQBj3vZvK4B2T0MWE3hZSxnMEFANBR5g1bNGDrWUqADXLFVAvtkNqPqsOblFnAtr1o/LLkxe/pDxUFS0zPNDIu3FkQct4OP9jTpxhvB7ukMNSK4SGVv2QfDFEkUkGgVIQoZ4mOaL3JPr3WYhX68uuKgzBSwem7oG0k+dbllbDmEFmo1+yd8uxBSFTiSAaLoA2YedFON5x1tzsBZU6miwrnaFpC7KC2ezTl/0BlRPb7tKsS6cUuj8s2Xrn+yu7h6929L9QU1q3fTqk38EySIPkn+LjJKi7d8NwnbbhNdkj4f3uykBmEE1MtCaHsrZFM2Ry1tdDymWuyaGkz0h+2yc0QcB","start_date_in_millis":1490832000000}}
问题1:启动elasticsearch是出现: elasticsearch[21253]: which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
解决方法:在 /etc/sysconfig/elasticsearch文件中加入以下配置
JAVA_HOME=/usr/local/jdk1.8
问题2:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
修改为
* soft nproc 2048
问题3(这个只是一个warn而已,在elasticsearch的日志中看到的):
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
修改: vim /etc/sysctl.conf
添加下面配置: vm.max_map_count=655360
并执行命令:sysctl -p
【安装license】
查看当前的license
[root@localhost Downloads]# curl -XGET -u elastic:changeme ‘http://192.168.100.50:9200/_license’
将编辑好的license.json文件放到服务器,在文件目录下执行:
[root@localhost Downloads]#curl -XPUT -u elastic:changeme ‘http://192.168.100.50:9200/_xpack/license’ -d @license.json
或者下面:
[root@localhost Downloads]#curl -XPUT -u elastic:changeme ‘http://192.168.100.50:9200/_xpack/license?acknowledge=true’ -d @license.json
重启elasticsearch和kibana .
打开:http://192.168.100.50:5601/login 可正常登录。