通过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
posted @ 2020-10-12 20:58  肖德子裕  阅读(275)  评论(0编辑  收藏  举报