一、ELK介绍(ElasticSearch、Logstash、kibana)
1. ElasticSearch介绍
在整个ELK中,ElasticSearch居于核心地位。Elasticsearch是一个基于Lucene构建
的开源、分布式、RESTful接口的全文搜索引擎。Elasticsearch还是一个分布式文档
数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,ES能够横向扩
展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和
分析大量的数据。
2. Logstash介绍
Logstash主要用于数据的导入,也有一部分功能可以用脚本语言来对数据做一些处理工作,然后把处理过的数据log到ElasticSearch上面或是用其他的输出方式,它支持很多的输入输出方式。
3. kibana介绍
kibana是提供数据可视化界面的一个工具,进行数据可视化操作。他是一个基于浏览器的界面,从这个界面里面可以build各种图表。
采集分析log的目的
- Trouble Shooting
- Security lssue Identification
- Performance Optimization
- Usage Analysis
二、ES简介
- ES是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎。
- 特点是:高可用,高扩展,是一种NOSQL的数据存储工具
三、ES安装前的准备(ELK安装包版本要求一致)
下载:
- elasticsearch-6.2.2.tar.gz
- elasticsearch-head-master.zip
- kibana-6.2.2-linux-x86_64.tar.gz
- logstash-6.2.2.tar.gz
- node-v8.9.1-linux-x64.tar.gz
注释:下载好将这些安装包拖入Linux指定目录中。
下载链接:
链接:https://pan.baidu.com/s/12jD1AWPIpgIR_KrvDfYmCQ 提取码:ll5h
四、ELK安装
- 把下载好的安装包,拖拽到/software目录中
[root@promote ~]# mkdir software/
[root@promote ~]# cd software/
注释:图里面有JDK安装包,
在博客: 中有介绍linux系统安装与配置,和JDK安装。
- 输入:yum install -y unzip 下载解压缩工具
- 注释:最后出现Complete!就成功下载了
- 输入:cd /software 进入安装包目录,输入ll可以查看目录中的文件
- 输入:tar -zxvf elasticsearch-6.2.2.tar.gz -C /opt
- 注释:这个解压完安装在opt文件夹下可以去opt文件夹下找,最后没有complete提醒安装完成。
- 输入:tar -zxvf kibana-6.2.2-linux-x86_64.tar.gz -C /opt
- 注释:这个解压比较长,不要慌。
- 输入:tar -zxvf logstash-6.2.2.tar.gz -C /opt
- 输入:tar -zxvf node-v8.9.1-linux-x64.tar.gz -C /opt
- 输入:unzip elasticsearch-head-master.zip
- 注释:这里unzip就用到了前面yum install -y unzip 安装的工具。
- 输入 mv elasticsearch-head-master /opt/eshm 把解压的文件夹移动并改名
- 注释:这样就已经操作成功了。
- 输入:cd /opt(进入opt文件夹)
- 注释:这里可以查看到刚才elasticsearch-head-master已经移到了opt文件夹中。
- 输入:mv kibana-6.2.2-linux-x86_64/ kibana622
- 注释:结果是这样一般就是正确了
- 输入:mv logstash-6.2.2/ logstash622
- 输入:mv node-v8.9.1-linux-x64/ node8
五、ES的配置
- 输入:vi /etc/hostname 修改主机名
- 注释:此步可以没有,改了名字一定要记住,我这里改成了test01.
- 输入:vi /etc/hosts 修改主机列表
- 注释:名字可以随便起,地址要是对的,最好是三个连续的地址。
- 配置es的参数
- 输入:vi /opt/es622/config/elasticsearch.yml,按shift+g,快速定位到尾行,按o在下一行插入以下内容:
cluster.name: bigdata
node.name: master
node.master: true
network.host: 192.168.56.108
discovery.zen.ping.unicast.hosts: [“192.168.56.108”]
http.cors.enabled: true
http.cors.allow-origin: “*”
- 配置系统参数
- 输入:vi /etc/sysctl.conf
插入内容:vm.max_map_count=655360 - 注释:最好首次也要使用以下命令刷新
sysctl -w vm.max_map_count=655360 - 输入:vi /etc/security/limits.conf(配置完成之后可能需要重启虚拟机) 插入内容:
- 修改es622目录的属组(es不能使用root启动)
chown -R es:es es622 - 创建普通用户,并进入普通用户
- 在/opt目录下输入:./es622/bin/elasticsearch
- 注释:最后出现started即是启动成功
- 在windows界面打开网页,输入http://192.168.56.110:9200/,可以正常出页面,切有节点的信息,即是启动成功 。
六、Head-master及node的配置
- 输入:vi /etc/profile 按shift+g定位到底部,然后按o在下一行插入以下内容:
export NODE_HOME=/opt/node8
export PATH=NODE_HOME/bin (如之前在java配置过PATH变量则在原先的尾部增加: :$NODE_HOME/bin) - 输入:source /etc/profile 激活配置文件,输入node -v 可以查看是否配置成功
- 注释:node-v 查看版本号的意思,如果能查到,则配置成功。
- 输入:cd /opt/eshead
- 输入:npm install -g grunt-cli --等待的时间比较长,要有点耐心
- 输入:npm install 出错时需要输入:
npm install phantomjs-prebuilt@2.1.14 --ignore-scripts
注释1:如果还不行可以
npm config set registry https://registry.npm.taobao.org
再进行npm install
注释2:4、5两步需要在eshead目录下进行 - 输入:vi Gruntfile.js,在以下位置高亮位置增加一行代码:hostname: ‘*’
connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true }
}
- 输入:vi _site/app.js,找到如下代码,并进行修改:
this.base_uri =this.config.base_uri ||this.prefs.get("app-base_uri") || "http://localhost:9200";
修改成为:
this.base_uri =this.config.base_uri ||this.prefs.get("app-base_uri") || "http://192.168.56.108:9200";
- 输入:npm run start 启动head-master
- 在windows界面,打开网页,输入:http://192.168.56.108:9100/
- 如果启动不了出现如下图所示错误,说明第5步没有下载好,要进行重新下载。
七、使用Head-master对ES进行测试
1.点击索引页签,点击新建索引
2.点击总览页签,即可查看索引的情况
八、kibana安装,配置和实例
- 输入:cd /opt/kibana622
- 输入:vi config/kibana.yml
- 改变url值,在配置文件中找到图中相应位置,进行修改
- 按shift+g跳转到行末,按o增加以下内容:
server.host: “192.168.56.108”
elasticsearch.url: “http://192.168.56.108:9200” - 输入:./bin/kibana ---->运行kibana
- 在windows界面打开网页,输入http://192.168.56.108:5601/
- 实例:
PUT demo --增加
GET demo --查询
#删除 index
DELETE demo
#提交数据
PUT /demo/user/1
{
"firstName":"luo","lastName":"xin","age":36,"hobby":"I like gongfu","interests":["games"]
}
#查询数据
GET demo/user/1
GET demo/user/_search
GET demo/user/1?_source=age,lastName,hobby
#删除指定数据
DELETE /demo/user/A_KKx3ABEZ3jJD3MqVuu
#修改
POST /demo/user/1/_update{ "doc":{ "age":30 } }
POST /demo/user/
{ "firstName":"wang","lastName":"feng","age":51,"hobby":"I like changge","interests":["toutiao"] }
GET /_mget
GET /demo/user/_mget
GET /demo/user/_mget{ "ids":[1,"BPKUx3ABEZ3jJD3MSlvF"] }
POST _analyze{
"analyzer": "standard",
"text": ["我是回家"]
}
POST _analyze{
"analyzer": "whitespace",
"text": ["我 要 回家"]
}
POST demo2/books/_bulk
{"index":{"_id":1}}{"title":"JAVA","price":35}
{"index":{"_id":2}}{"title":"HTML","price":45}
{"index":{"_id":3}}{"title":"MYSQL","price":55}
GET demo2/books/_mget
POST demo2/books/_bulk
{"delete":{"_index":"demo2","_type":"books","_id":3}}
{"update":{"_index":"demo2","_type":"books","_id":2}}
{"doc":{"price":59}}
DELETE demo2/books/3
GET demo2/books/_search?q=title:JAVA
GET demo2/books/_search?q=title:JAVA&q=price:35