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. Java多线程并发01——线程的创建与终止,你会几种方式

    本文开始将开始介绍 Java 多线程与并发相关的知识,多谢各位一直以来的关注与支持.关注我的公众号「Java面典」了解更多 Java 相关知识点. 线程的创建方式 在 Java 中,用户常用的主动创建 ...

  2. 数据结构 - List 接口

    简介 List接口继承自Collection接口,是Collection三大延伸接口之一.List中的元素都是有序的,并且都支持用索引访问.同时List中的元素允许重复. public interfa ...

  3. .NET 5 Preview 1发布

    去年年底,我们发布了.NET Core 3.0和3.1.这些版本添加了对桌面应用程序模型:Windows Forms(Winforms).WPF,用于构建单页应用程序的ASP.NET Blazor和基 ...

  4. vue基础----组件通信($parent,$children)

    1.按照dom的父子级关系,在子组件中可以通过$parent 直接调用父组件的方法,也可得到父组件的属性. 2.在父组件中通过$childrens可以得到一个子组件数组,能够在父组件中调用子组件的方法 ...

  5. Top命令你最少要了解到这个程度

    top命令几乎是每个程序员都会用到的Linux命令.这个命令用来查看Linux系统的综合性能,比如CPU使用情况,内存使用情况.这个命令能帮助我快速定位程序的性能问题. 虽然这个命令很重要,但是之前对 ...

  6. 小白的docker极简入门(二)、5分钟教你玩转docker安装

    0-前言 上一篇中,我们已经安装后Linux了,我们需要在Linux下安装docker,然后才能在docker中安装和部署各种应用 同样,5分钟教你完成docker正确安装和使用, 不是纸上谈兵,不是 ...

  7. Cobaltstrike指令大全/beacon命令

    BeaconCommands=============== Command Description ------- ----------- browserpivot 注入受害者浏览器进程 bypass ...

  8. 带修主席树 洛谷2617 支持单点更新以及区间kth大查询

    题目链接:https://www.luogu.com.cn/problem/P2617 参考博客:https://blog.csdn.net/dreaming__ldx/article/details ...

  9. Verbal Arithmetic Puzzle

    2020-01-02 12:09:09 问题描述: 问题求解: 这个问题不就是小学奥数题么?都知道要暴力枚举,但是如何巧妙的枚举才是问题的关键.在打比赛的时候,我用了全排列算法,TLE了. 借鉴了别人 ...

  10. [gcd]Codeforces Common Divisors

    Common Divisors time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...