当前位置: 欧洲杯竞猜 > 计算机知识 > 正文

ELK日志深入分析单机系统详解,安装配置及示范

时间:2019-08-01 15:29来源:计算机知识
/**  * 系统环境:VMware Workstation12下的CentOS 7.2  * 当前安装版本: elasticsearch-2.4.0.tar.gz  */ 日志分析ELK平台,由ElasticSearch、Logstash和Kiabana三个开源工具组成。 简介 安装和学习可参照官方文

/**
 * 系统环境:VMware Workstation 12下的CentOS 7.2
 * 当前安装版本: elasticsearch-2.4.0.tar.gz
 */

日志分析ELK平台,由ElasticSearch、Logstash和Kiabana三个开源工具组成。

简介

安装和学习可参照官方文档: 

官方网站:

开始学ElasticSearch,我习惯边学边记,总结出现的问题和解决方法。本文是在两台Linux虚拟机下,安装了三个节点。本次搭建es同时实践了两种模式——单机模式和分布式模式。条件允许的话,可以在多台机器上配置es节点,如果你机器性能有限,那么可以在一台虚拟机上完成多节点的配置。

1, 安装

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

如图,是本次3个节点的分布。

# 下载, 获取不成功可直接从官网下载
curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.0/elasticsearch-2.4.0.tar.gz
# 解压
sudo tar -xvf elasticsearch-2.4.0.tar.gz
# 进入目录
cd elasticsearch-2.4.4/bin

Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

虚拟机主机名 IP es节点
master 192.168.137.100 node1、node3
slave 192.168.137.101 node2

启动: 

Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

一、下载及配置

./bin/elasticsearch

ELK原理图:
欧洲杯竞猜 1

1.几个基本名词

index: es里的index相当于一个数据库。
type: 相当于数据库里的一个表。
id: 唯一,相当于主键。
node:节点是es实例,一台机器可以运行多个实例,但是同一台机器上的实例在配置文件中要确保http和tcp端口不同(下面有讲)。
cluster:代表一个集群,集群中有多个节点,其中有一个会被选为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

启动成功的界面为: 

如图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

2.下载

名称 版本 下载地址
elasticsearch 1.7.3 elasticsearch-1.7.3.tar.gz

下载后,放到你的目录下并解压. 因为我们要配置包含三个节点的集群,可以先将其重命名为elasticsearch-node1。比如我的是 /home/zkpk/elasticsearch-node1。

欧洲杯竞猜 2

ELK平台搭建
系统环境
System: CentOS release 6.7(Final)
ElasticSearch: elasticsearch-5.3.1.tar.gz
Logstash: logstash-5.3.1.tar.gz
Kibana: kibana-5.3.1-linux-x86_64.tar.gz
Java: openjdk version  ”1.8.0_131″

3.修改配置文件

(1) 初步修改
打开/home/zkpk/elasticsearch-node1/config目录下的elasticsearch.yml 文件 ,修改以下属性值并取消该行的注释:

cluster.name:  elasticsearch
#这是集群名字,我们 起名为 elasticsearch。es启动后会将具有相同集群名字的节点放到一个集群下。

node.name: "es-node1"
#节点名字。

covery.zen.minimum_master_nodes: 2
#指定集群中的节点中有几个有master资格的节点。对于大集群可以写3个以上。

discovery.zen.ping.timeout: 40s

#默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间,为避免因为网络差而导致启动报错,我设成了40s。

discovery.zen.ping.multicast.enabled: false
#设置是否打开多播发现节点,默认是true。

network.bind_host: 192.168.137.100
#设置绑定的ip地址,这是我的master虚拟机的IP。

network.publish_host: 192.168.137.100
#设置其它节点和该节点交互的ip地址。

network.host: 192.168.137.100
#同时设置bind_host和publish_host上面两个参数。

discovery.zen.ping.unicast.hosts: ["192.168.137.100",  "192.168.137.101","192.168.137.100:9301"]
#discovery.zen.ping.unicast.hosts:["节点1的 ip","节点2 的ip","节点3的ip"]
指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。第一对引号里是node1,默认端口是9300。第二个是 node2 ,在另外一台机器上。第三个引号里是node3,因为它和node1在一台机器上,所以指定了9301端口。

(2) 进一步修改
拷贝 elasticsearch-node1 整个文件夹,两份,一份elasticsearch-node2,一份elasticsearch-node3.
将elasticsearch-node2 文件夹copy到另外一台IP为192.168.137.101的机器上。而在 192.168.137.100 机器上有 node1和node3.

对于node3: node3和node1在一台机器上,node1的配置文件里端口默认分别是9300和9200,所以要改一下node3配置文件里的端口,elasticsearch.yml 文件修改如下:

node.name: "es-node3"
transport.tcp.port: 9301
http.port: 9201

对于node2:elasticsearch.yml 修改如下

node.name: "es-node2"
network.bind_host: 192.168.137.101
network.publish_host: 192.168.137.101
network.host: 192.168.137.101

注意:
1.对于单机多节点的es集群,一定要注意修改 transport.tcp.porthttp.port 的默认值保证节点间不冲突。

  1. 出现找不到同一集群中的其他节点的情况,检查下 discovery.zen.ping.unicast.hosts 是否已设置。

此时可以使用浏览器访问:

ELK官网下载:

二、运行 & 关闭 elasticsearch

 欧洲杯竞猜 3

欧洲杯竞猜 4

1.运行elasticsearch :

编辑 /home/zkpk/elasticsearch-1.7.3/bin/elasticsearch.in.sh, 设置 ES_MIN_MEM和ES_MAX_MEM,确保二者数值一致,或者可以在启动es时指定,

[zkpk@master ~]$ cd ~/elasticsearch-node1/bin
[zkpk@master bin]$ ./elasticsearch -Xms512m -Xmx512m

若想让es后台运行,则

[zkpk@master bin]$ ./elasticsearch -d -Xms512m -Xmx512m

注: 由于没有更改yml文件, 只能在本机访问

JAVA环境配置

2.关闭elasticsearch:

前台运行:可以通过”CTRL C”组合键来停止运行
后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:

curl -XPOST http://主机IP:9200/_cluster/nodes/_shutdown

来关闭整个集群,通过:

curl -XPOST http://主机IP:9200/_cluster/nodes/节点标示符(如es-node1)/_shutdown

来关闭单个节点.

修改elasticsearch.yml 使得其他机器可访问

下载最新版本1.8.0_131

三、插件及其安装

BigDesk Plugin : 对集群中es状态进行监控。
Elasticsearch Head Plugin: 对ES进行各种操作,如查询、删除、浏览索引等。

sudo vim ./config/elasticsearch.yml

cd /tmp/

1.安装head插件

进入到节点elasticsearch-node1/bin路径,并安装插件。

[zkpk@master bin]$ ./plugin -install mobz/elasticsearch-head

欧洲杯竞猜 5

wget

2. 安装bigdesk

[zkpk@master bin]$ ./plugin -install lukas-vlcek/bigdesk

欧洲杯竞猜 6

tar zxf jdk-8u131-linux-x64.tar.gz -C /usr/local/
vim /etc/profile
添加如下内容
JAVA_HOME=/usr/local/jdk1.8.0_131

让我们看下es页面吧~~

打开head浏览,浏览器输入 ,如图,

欧洲杯竞猜 7

每个小方块就是索引分片,可以看到每个索引被分成几个分片,每个分片还有它的备份分片,然后存储在三个节点上。粗框的是主分片,细框的是备份分片。

2, 安装head,

PATH=$JAVA_HOME/bin:$PATH

四、添加索引

现在我们来添加一个索引记录吧~

elasticsearch-head是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。你可以通过插件把它集成到es(首选方式),也可以安装成一个独立webapp。

es-head主要有三个方面的操作:

显示集群的拓扑,并且能够执行索引和节点级别操作
搜索接口能够查询集群中原始json或表格格式的检索数据
能够快速访问并显示集群的状态
有一个输入窗口,允许任意调用RESTful API。这个接口包含几个选项,可以组合在一起以产生有趣的结果; 
请求方法(get、put、post、delete),查询json数据,节点和路径
支持JSON验证器
支持重复请求计时器
支持使用javascript表达式变换结果
收集结果的能力随着时间的推移(使用定时器),或比较的结果
能力图表转换后的结果在一个简单的条形图(包括时间序列)

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1.可以在命令窗口通过命令来添加

curl -XPUT 'http://主机IP:9200/dept/employee/32' -d '{ "empname": "emp32"}'

 1), 直接安装

export JAVA_HOME PATH CLASSPATH

2.我们可以在页面上通过JSON添加

(1)点击 复合查询[ ] ,我们可以在 megacorp 索引 (相当于数据库名)的 employee 类型(相当于表名)下新增一个id为2的人的信息。

欧洲杯竞猜 8

点击下方的 提交请求 按钮,页面右方有回馈信息,“created”代表是否为新建。添加成功。

欧洲杯竞猜 9

点击 浏览数据 ,在左侧 索引 下选择 megacorp,如图,

欧洲杯竞猜 10

可以看到,一条id为2的记录被添加了。

(2)下面我们修改id为2 的人的年龄为15,把about 信息去掉,并且加一项兴趣。

欧洲杯竞猜 11

提交后,右侧有反馈信息,“created”为 false,因为我们这次不是新建而是修改。

欧洲杯竞猜 12

返回浏览数据,id为2 的记录,年龄、兴趣等均已发生变化。

欧洲杯竞猜 13

参考:
http://www.linuxidc.com/Linux/2015-02/114243.htm

Elasticsearch 教程系列文章: 

Linux上安装部署ElasticSearch全程记录  http://www.linuxidc.com/Linux/2015-09/123241.htm

Elasticsearch安装使用教程 http://www.linuxidc.com/Linux/2015-02/113615.htm

ElasticSearch 配置文件译文解析 http://www.linuxidc.com/Linux/2015-02/114244.htm

ElasticSearch的工作机制  http://www.linuxidc.com/Linux/2014-11/109922.htm 

Elasticsearch的安装,运行和基本配置 http://www.linuxidc.com/Linux/2016-07/133057.htm

使用Elasticsearch Logstash Kibana搭建日志集中分析平台实践  http://www.linuxidc.com/Linux/2015-12/126587.htm

Ubuntu 14.04搭建ELK日志分析系统(Elasticsearch Logstash Kibana) http://www.linuxidc.com/Linux/2016-06/132618.htm

Elasticsearch1.7升级到2.3实践总结  http://www.linuxidc.com/Linux/2016-11/137282.htm

Ubuntu 14.04中Elasticsearch集群配置  http://www.linuxidc.com/Linux/2017-01/139460.htm

Elasticsearch-5.0.0移植到Ubuntu 16.04 http://www.linuxidc.com/Linux/2017-01/139505.htm

ElasticSearch 5.2.2 集群环境的搭建  http://www.linuxidc.com/Linux/2017-04/143136.htm

Linux下安装搜索引擎Elasticsearch  http://www.linuxidc.com/Linux/2017-05/144105.htm

CentOS上安装 ElasticSearch 详解  http://www.linuxidc.com/Linux/2017-05/143766.htm

ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/144113.htm

欧洲杯竞猜 14

./bin/plugin install mobz/elasticsearch-head

source /etc/profile

2) ,zip包安装

ElasticSearch配置
wget
  useradd elktest           

1. https://github.com/mobz/elasticsearch-head下载zip 解压
2. 建立elasticsearch-2.4.0pluginshead文件
3. 将解压后的elasticsearch-head-master文件夹下的文件copy到head
4. 运行es

tar -zxvf elasticsearch-5.3.1.tar.gz
cd elasticsearch-5.3.1
vi config/elasticsearch.yml

 安装验证: 

修改以下配置项:
(路径需要先自行创建,并且elktest用户可读写)
cluster.name: elk_cluster
node.name: node0
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
network.host: 192.168.1.5
http.port: 9200

欧洲杯竞猜 15

其他的选项保持默认,然后启动ES:
  su elktest            #ES不允许root启动服务 必须是普通用户
./bin/elasticsearch &

 3, 安装其他插件

配置Logstash
wget
tar -zxvf logstash-5.3.1.tar.gz
cd logstash-5.3.1

$ ${ES_HOME}/bin/plugin --install lukas-vlcek/bigdesk
# 安装完成访问:

vi config/test_es.conf

$ ${ES_HOME}/bin/plugin -install royrusso/elasticsearch-HQ
# 安装完成访问:

input {
        file {
        path => "/tmp/test.log"          #测试文件
    }
}
filter {

$ ${ES_HOME}/bin/plugin -install lmenezes/elasticsearch-kopf
# 安装完成访问:

}
output {
        stdout { codec => rubydebug }
        elasticsearch {
                index => "test_%{ YYYY.MM.dd}"        #索引信息
                hosts => [ "192.168.1.5:9200" ]
        }
}

官方的文档:

    ./bin/logstash -f config/test_es.conf  &            #启动服务

出现的错误: 

配置Kibana:
wget
tar -zxvf kibana-5.3.1-linux-x86.tar.gz
cd kibana-5.3.1-linux-x86
vi config/kibana.yml

错误1: 

server.port: 5601
server.host: "192.168.1.5"
elasticsearch.url:
kibana.index: ".kibana.yml"

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:94)
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:160)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)

./bin/kibana

解决: 不使用root账户登录

部署中的常见错误及解决方法

错误2:

1、启动 elasticsearch 如出现异常  can not run elasticsearch as root 
解决方法:创建ES 账户,修改文件夹 文件 所属用户 组

java.io.FileNotFoundException: /usr/docker/elasticsearch/elasticsearch-2.4.0/logs/elasticsearch_index_search_slowlog.log (权限不够)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:133)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)

2、启动异常:ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

原因: 文件所有者不是当前用户

解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

解决: 退回的解压目录, 更改整个文件夹的所有者为当前用户

3、启动后,如果只有本地可以访问,尝试修改配置文件 elasticsearch.yml
中network.host(注意配置文件格式不是以 # 开头的要空一格, : 后要空一格)
为 network.host: 0.0.0.0

chown -R wenbronk:wenbronk elasticsearch-2.4.0

默认端口是 9200
注意:关闭防火墙 或者开放9200端口

Elasticsearch 教程系列文章: 

4、ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

Linux上安装部署ElasticSearch全程记录  http://www.linuxidc.com/Linux/2015-09/123241.htm

解决方法:切换到root用户,编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

Elasticsearch安装使用教程 http://www.linuxidc.com/Linux/2015-02/113615.htm

5、max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

ElasticSearch 配置文件译文解析 http://www.linuxidc.com/Linux/2015-02/114244.htm

解决方法:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048

ElasticSearch集群搭建实例  http://www.linuxidc.com/Linux/2015-02/114243.htm

6、max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

分布式搜索ElasticSearch单机与服务器环境搭建  http://www.linuxidc.com/Linux/2012-05/60787.htm

解决方法:切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
然后,重新启动elasticsearch,即可启动成功。

ElasticSearch的工作机制  http://www.linuxidc.com/Linux/2014-11/109922.htm 

Linux上安装部署ElasticSearch全程记录  http://www.linuxidc.com/Linux/2015-09/123241.htm

Elasticsearch的安装,运行和基本配置 http://www.linuxidc.com/Linux/2016-07/133057.htm

Elasticsearch安装使用教程 http://www.linuxidc.com/Linux/2015-02/113615.htm

欧洲杯竞猜,使用Elasticsearch Logstash Kibana搭建日志集中分析平台实践  http://www.linuxidc.com/Linux/2015-12/126587.htm

ElasticSearch 配置文件译文解析 http://www.linuxidc.com/Linux/2015-02/114244.htm

Ubuntu 14.04搭建ELK日志分析系统(Elasticsearch Logstash Kibana) http://www.linuxidc.com/Linux/2016-06/132618.htm

ElasticSearch集群搭建实例  http://www.linuxidc.com/Linux/2015-02/114243.htm

Elasticsearch1.7升级到2.3实践总结  http://www.linuxidc.com/Linux/2016-11/137282.htm

分布式搜索ElasticSearch单机与服务器环境搭建  http://www.linuxidc.com/Linux/2012-05/60787.htm

Ubuntu 14.04中Elasticsearch集群配置  http://www.linuxidc.com/Linux/2017-01/139460.htm

ElasticSearch的工作机制  http://www.linuxidc.com/Linux/2014-11/109922.htm 

Elasticsearch-5.0.0移植到Ubuntu 16.04 http://www.linuxidc.com/Linux/2017-01/139505.htm

Elasticsearch的安装,运行和基本配置 http://www.linuxidc.com/Linux/2016-07/133057.htm

ElasticSearch 5.2.2 集群环境的搭建  http://www.linuxidc.com/Linux/2017-04/143136.htm

使用Elasticsearch Logstash Kibana搭建日志集中分析平台实践  http://www.linuxidc.com/Linux/2015-12/126587.htm

Linux下安装搜索引擎Elasticsearch  http://www.linuxidc.com/Linux/2017-05/144105.htm

Ubuntu 14.04搭建ELK日志分析系统(Elasticsearch Logstash Kibana) http://www.linuxidc.com/Linux/2016-06/132618.htm

CentOS上安装 ElasticSearch 详解  http://www.linuxidc.com/Linux/2017-05/143766.htm

Elasticsearch1.7升级到2.3实践总结  http://www.linuxidc.com/Linux/2016-11/137282.htm

ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里 

Ubuntu 14.04中Elasticsearch集群配置  http://www.linuxidc.com/Linux/2017-01/139460.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/144111.htm

Elasticsearch-5.0.0移植到Ubuntu 16.04 http://www.linuxidc.com/Linux/2017-01/139505.htm

欧洲杯竞猜 16

ElasticSearch 5.2.2 集群环境的搭建  http://www.linuxidc.com/Linux/2017-04/143136.htm

ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143625.htm

欧洲杯竞猜 17

编辑:计算机知识 本文来源:ELK日志深入分析单机系统详解,安装配置及示范

关键词: 欧洲杯竞猜