ELK 是什么?

2018年07月04月  09:37:46

内容和简介

• Sina、饿了么、携程、华为、美团、freewheel、畅捷通 、新浪微博、大讲台、魅族、IBM...... 这些公司都在使用 ELK!ELK!ELK!

• ELK竟然重复了三遍,是个什么鬼?

ELK 是什么?

• ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写

– Elasticsearch:负责日志检索和储存

– Logstash:负责日志的收集和分析、处理

– Kibana:负责日志的可视化

– 这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK

ELK 能做什么?

• ELK组件在海量日志系统的运维中,可用于解决:

– 分布式日志数据集中式查询和管理

– 系统监控,包含系统硬件和应用各个组件的监控

– 故障排查

– 安全信息和事件管理

– 报表功能

Elasticsearch部分

• ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful API 的 web 接口。

• Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

Elasticsearch部分

• 主要特点

– 实时分析

– 分布式实时文件存储,并将每一个字段都编入索引

– 文档导向,所有的对象全部是文档

– 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)

– 接口友好,支持 JSON

Elasticsearch部分 《2续》

• ES 没有什么?

• Elasticsearch 没有典型意义的事务.

• Elasticsearch 是一种面向文档的数据库。

• Elasticsearch 没有提供授权和认证特性

Elasticsearch部分 《3续》

• 相关概念:

– Node: 装有一个 ES 服务器的节点。

– Cluster: 有多个Node组成的集群

– Document: 一个可被搜素的基础信息单元

– Index: 拥有相似特征的文档的集合

– Type: 一个索引中可以定义一种或多种类型

– Filed: 是 ES 的最小单位,相当于数据的某一列

– Shards: 索引的分片,每一个分片就是一个 Shard

– Replicas: 索引的拷贝

SQL 与 NOSQL

• ES 与关系型数据库的对比

Elasticsearch架构图

ES集群安装

• 安装第一台 ES 服务器

– 设置主机名称和 ip 对应关系

– 解决依赖关系

– 安装软件包

– 修改配置文件

– 启动服务

步骤 1

设置 ip 与主机名称对应关系

– 配置 /etc/hosts

192.168.4.11 node1

步骤 2

1.安装 JDK

– Elasticsearch 要求至少 Java 7

– 一般推荐使用 OpenJDK 1.8

– 配置好安装源以后,我们先解决依赖关系

yum install -y java-1.8.0-openjdk

2.验证

[root@esk01 ~]# java -version

openjdk version "1.8.0_131"

步骤 3

– 安装 ES

rpm –ivh elasticsearch-2.3.4-1.noarch

步骤 4

– 修改配置文件

– elasticsearch.yml

[root@esk01 ~]# vim /etc/elasticsearch/elasticsearch.yml

network.host: 0.0.0.0

步骤 5

1.修改本地解析hosts文件

192.168.1.11  esk01

192.168.1.32  esk02

192.168.1.33  esk03

192.168.1.34  esk04

192.168.1.35  esk05

拷贝

[root@esk01 ~]# scp /etc/hosts  192.168.1.35:/etc/hosts

2.启动服务,设置自启动

systemctl enable elasticsearch

systemctl start elasticsearch

– 验证:

[root@esk01 ~]# netstat -lnput | grep :9[2..3]00

– 能够看到 9200,9300 被监听

步骤 6

• 通过浏览器或 curl 访问 9200 端口

curl http://192.168.4.11:9200/

{

"name" : "node1",

"cluster_name" : "my-es",

"version" : {

"number" : "2.3.4",

...... ...... ......

"build_snapshot" : false,

"lucene_version" : "5.5.0"

},

"tagline" : "You Know, for Search“

}

步骤7

ES 集群配置

– ES 集群配置也很简单,只需要对配置文件做少量的修

改即可,其他步骤和单机完全一致

– ES 集群配置文件

1.修改配置文件

[root@esk01 ~]# vim /etc/elasticsearch/elasticsearch.yml

cluster.name: my-es   //随便命名主机名

node.name: node1    //更改自已主机ip

network.host: 0.0.0.0  //所有ip匹配

discovery.zen.ping.unicast.hosts: ["node1", "node2",

"node3"]

2.拷贝配置文件模板到其他主机上

[root@esk01 ~]# scp /etc/elasticsearch/elasticsearch.yml

192.168.1.35:/etc/elasticsearch/elasticsearch.yml

3.重启服务

[root@esk01 ~]# systemctl start elasticsearch

[root@esk01 ~]# systemctl enable  elasticsearch  //先启动esk01/02/03

4.测试

http://192.168.1.33:9200/

http://192.168.1.35:9200/_cluster/health?pretty

ES集群安装

• ES 集群配置

– 验证集群,使用 ES 内置字段 _cluster/health

curl http://192.168.4.11:9200/_cluster/health?pretty

{

"cluster_name" : "my-es",

"status" : "green",

...... ...... ......

"number_of_nodes" : 5,

"number_of_data_nodes" : 5,

...... ...... ......

"task_max_waiting_in_queue_millis" : 0,

"active_shards_percent_as_number" : 100.0

}ES集群安装

• ES 集群验证

– 返回字段解析

– status“ : ”green“ 集群状态,绿色为正常,黄色表

示有问题但不是很严重,红色表示严重故障

– “number_of_nodes” : 5, 表示集群中节点的数量

– "number_of_data_nodes" : 5,

– ...... ...... ......

– "task_max_waiting_in_queue_millis" : 0,

– "active_shards_percent_as_number" : 100.0

– }

ES 集群验证

– 返回字段解析

– status“ : ”green“ 集群状态,绿色为正常,黄色表

ES插件的使用

• ES 常用插件

• head 插件:

– 它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作

– 它提供一组针对集群的查询API,并将结果以json和表格形式返回

– 它提供一些快捷菜单,用以展现集群的各种状态

 http请求由三部分组成

– 分别是:请求行、消息报头、请求正文

– 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:

Method Request-URI HTTP-Version CRLF

HTTP 协议简介

• http请求方法

– 常用方法 GET, POST, HEAD

– 其他方法 OPTIONS, PUT, DELETE, TRACE 和

CONNECT

• ES 常用

– PUT

--- 增

– DELETE --- 删

– POST --- 改

– GET --- 查

                  

 系统命令 curl

• 在linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持多种请求模式,自定义请求 头等强大功能,是一款综合工具

• curl 常用参数介绍

– -A 修改请求 agent

– -X 设置请求方法

– -i 显示返回头信息

ES插件的使用

• ES 常用插件

• head 插件:

– 它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作

– 它提供一组针对集群的查询API,并将结果以json和表格形式返回

– 它提供一些快捷菜单,用以展现集群的各种状态ES插件的使用

• ES 常用插件

• kopf 插件

– 是一个ElasticSearch的管理工具

– 它提供了对ES集群操作的API

• bigdesk 插件

– 是elasticsearch的一个集群监控工具

– 可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,htt连接数等ES插件的使用

 ES 插件安装、查看

1.查看安装的插件

/usr/share/elasticsearch/bin/plugin list

2.安装插件

/usr/share/elasticsearch/bin/plugin install

ftp://192.168.4.254/

/usr/share/elasticsearch/bin/plugin install

file:///tmp/kopf.zip

/usr/share/elasticsearch/bin/plugin install

ftp://192.168.1.254/share/bigdesk-master.zip

– 这里必须使用 url 的方式进行安装,如果文件在本地,我们也需要使用 file:// 的方式指定路径,例如文件在/tmp/xxx 下面,我们要写成 file:///tmp/xxx 删除使用 remove 指令

3.访问

http://192.168.1.11:9200/_plugin/head/

http://192.168.1.11:9200/_plugin/kopf/

http://192.168.1.11:9200/_plugin/bigdesk/

4.查看集群api查询地址

curl http://192.168.1.11:9200/_cat

curl http://192.168.1.11:9200/_cat/nodes?v

curl http://192.168.1.11:9200/_cat/nodes?help

RESTful API 调用

 Elasticsearch提供了一系列RESTful的API

– 检查集群、节点、索引的健康度、状态和统计

– 管理集群、节点、索引的数据及元数据

– 对索引进行CRUD操作及查询操作

– 执行其他高级操作如分页、排序、过滤等

• POST 或 PUT 数据使用 json 格式RESTful API 调用

• json

– JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。

– json 传输的就是一个字符串

– python 中对应的 字符串,列表,字典都可以转换成对应的 json 格式RESTful API 调用

• Rest API 的简单使用

– _cat API 查询集群状态,节点信息

– v 参数显示详细信息

http://192.168.4.15:9200/_cat/health?v

– help 显示帮助信息

http://192.168.4.15:9200/_cat/health?helpRESTful API 调用

• Rest API 的简单使用

– nodes 查询节点状态信息

http://192.168.4.15:9200/_cat/nodes?v

– 索引信息

http://192.168.4.15:9200/_cat/indices?v

RESTful API 调用

• RESTful API 增加

– 创建一个索引,并设置分片数量与副本数量

[root@esk01 ~]# curl -X "PUT" 'http://192.168.1.11:9200/tedu' -d '{

"settings":{

"index":{

"number_of_shards": 5,

"number_of_replicas":1

}

}

}'

• RESTful API 插入数据

curl -X "PUT"  'http://192.168.1.11:9200/tedu/teacher/1' -d '{

"title": "阶段1",

"name":{"first": "小逗比", "last": "牛犇"},

"age": 25

}'

curl -X "PUT" 'http://192.168.1.11:9200/tedu/teacher/2' -d '{

"title": "阶段2",

"name":{"first": "老逗比", "last": "丁丁"},

"age": 52

}'

RESTful API 调用

• 静静达内一枝花,今年20明年18

curl -X "POST" 'http://192.168.1.11:9200/tedu/teacher/3/_update' -d '{

"doc":{

"age": 18

}

}'

Kibana 安装

• kibana是什么

– 数据可视化平台工具

• 特点:

– 灵活的分析和可视化平台

– 实时总结和流数据的图表

– 为不同的用户显示直观的界面

– 即时分享和嵌入的仪表板

Kibana 安装

• kibana安装

– kibana 的安装非常简单,我们使用 rpm 方式安装

rpm -ivh  kibana-4.5.2-1.x86_64.rpm

– kibana 默认安装在 /opt/kibana 下面,配置文件在/opt/kibana/config/kibana.yml

– 我们只需要修改少量的配置就可以启动

Kibana 安装

• kibana.yml 的配置

– server.port: 5601

– server.host: "0.0.0.0"

– elasticsearch.url: "http://192.168.4.13:9200"

– kibana.index: ".kibana"

– kibana.defaultAppId: "discover"

– elasticsearch.pingTimeout: 1500

– elasticsearch.requestTimeout: 30000

– elasticsearch.startupTimeout: 5000

Kibana 安装

• kibana.yml 的配置

– 除 elasticsearch.url 需要配置为我们 ES 集群的地址之外,其他保持默认值就可以了

– 设置开机启动

systemctl enable kibana

– 启动服务

systemctl start kibana

– web 访问 kibana

http://192.168.4.20:5601/

Kibana 安装

• kibana是什么

– 数据可视化平台工具

• 特点:

– 灵活的分析和可视化平台

– 实时总结和流数据的图表

– 为不同的用户显示直观的界面

– 即时分享和嵌入的仪表板Kibana 安装

• kibana安装

– kibana 的安装非常简单,我们使用 rpm 方式安装

rpm –ivh kibana-4.5.2-1.x86_64.rpm

– kibana 默认安装在 /opt/kibana 下面,配置文件在/opt/kibana/config/kibana.yml

– 我们只需要修改少量的配置就可以启动Kibana 安装

• kibana.yml 的配置

– server.port: 5601

– server.host: "0.0.0.0"

– elasticsearch.url: "http://192.168.4.13:9200"

– kibana.index: ".kibana"

– kibana.defaultAppId: "discover"

– elasticsearch.pingTimeout: 1500

– elasticsearch.requestTimeout: 30000

– elasticsearch.startupTimeout: 5000Kibana 安装

• kibana.yml 的配置

– 除 elasticsearch.url 需要配置为我们 ES 集群的地址之外,其他保持默认值就可以了

– 设置开机启动

systemctl enable kibana

– 启动服务

systemctl start kibana

– web 访问 kibana

http://192.168.4.20:5601/课堂练习

ELK 是什么?的更多相关文章

  1. ELK日志系统:Filebeat使用及Kibana如何设置登录认证

    根据elastic上的说法: Filebeat is a lightweight, open source shipper for log file data. As the next-generat ...

  2. 5分钟部署ELK+filebeat5.1.1

    标题有点噱头,不过网络环境好的情况下也差不多了^_^   1. 首先保证安装了jdk.   elasticsearch, logstash, kibana,filebeat都可以通过yum安装,这里前 ...

  3. 大数据平台架构(flume+kafka+hbase+ELK+storm+redis+mysql)

    上次实现了flume+kafka+hbase+ELK:http://www.cnblogs.com/super-d2/p/5486739.html 这次我们可以加上storm: storm-0.9.5 ...

  4. ELK+Kafka集群日志分析系统

    ELK+Kafka集群分析系统部署 因为是自己本地写好的word文档复制进来的.格式有些出入还望体谅.如有错误请回复.谢谢! 一. 系统介绍 2 二. 版本说明 3 三. 服务部署 3 1) JDK部 ...

  5. 第三十章 elk(1) - 第一种架构(最简架构)

    软件版本: es:2.4.0 logstash:2.4.0 kibana:4.6.1 一.logstash安装(收集.过滤日志.构建索引) 1.下载:https://www.elastic.co/do ...

  6. #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  7. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台发表于 2015-08-19   |   分类于 Linux/Unix   |  ELK简介ELKStack即Elasticsearch + Logstas ...

  8. ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程

    环境:OS X 10.10.5 + JDK 1.8 步骤: 一.下载ELK的三大组件 Elasticsearch下载地址: https://www.elastic.co/downloads/elast ...

  9. elk系列4之kibana图形化操作

    preface 我们都搭建了ELK系统,且日志也能够正常收集的时候,那么就配置下kibana.我们可以通过kibana配置柱状图,趋势图,统计图,圆饼图等等各类图.下面就拿配置统计图和柱状图为例,结合 ...

  10. elk平台搭建

    很多时候我们需要对日志做一个集中式的处理,但是通常情况下这些日志都分布到n台机器上面,导致一个结果就是效率比较低,而ELK平台可以帮助我们解决这么一件事情: ELK下载:https://www.ela ...

随机推荐

  1. py2.7 批量转换文件为 utf8 编码

    source insight 不支持 utf8 ,但是在 linux 上查看的时候是 utf8 编码,就会显示不正常,所以写了个 python 小脚本,可以批量转换 py2.7 #coding:utf ...

  2. OpenGL 实现视频编辑中的转场效果

    转场介绍 转场效果是什么? 转场效果,简单来说就是两段视频之间的衔接过渡效果. 现在拍摄 vlog 的玩家越来越多,要是视频没有一两个炫酷的转场效果,都不好意思拿出来炫酷了. 那么如何在视频编辑软件中 ...

  3. 如何使用Kibana

    目录 前言 一.安装 二.加载自定义索引 三.如何搜索数据 四.如何切换中文 五.如何使用控制台 六.可视化图表 七.使用仪表盘 前言 Kibana 是为 Elasticsearch设计的开源分析和可 ...

  4. python网络协议

    一 互联网的本质 咱们先不说互联网是如何通信的(发送数据,文件等),先用一个经典的例子,给大家说明什么是互联网通信. 现在追溯到八九十年代,当时电话刚刚兴起,还没有手机的概念,只是有线电话,那么此时你 ...

  5. go 广度搜索案例(迷宫)

    package main import ( "fmt" "os" ) /* *将文档结构读入到切片中(二维数组) *row, col 行数 列数 (文档第一行数 ...

  6. 学习ConcurrentHashMap1.7分段锁原理

    1. 概述 接上一篇 学习 ConcurrentHashMap1.8 并发写机制, 本文主要学习 Segment分段锁 的实现原理. 虽然 JDK1.7 在生产环境已逐渐被 JDK1.8 替代,然而一 ...

  7. juery 弹出框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Java基础(五):数组

    数组,一种应用非常广泛的数据结构,简单地来说就是一组类型相同且无序的元素的存储在固定长度且有序的内存空间. 创建一个数组 在Java中,我们可以通过[]去声明一个指定类型的数组 int[] a; // ...

  9. typescript package.json vscode 终端 运行任务 Ctrl shift B

    { "dependencies": { "typescript": "^3.6.4" } }

  10. hGame2020第二周第一题题解

    Description: Cosmos通过两个小时速成了PHP+HTML,他信心满满的写了一个博客,他说要从博客后台开始......(flag在根目录, 禁止使用任何扫描器) Challenge Ad ...