zoukankan      html  css  js  c++  java
  • ELK 是什么?

                                                                         ELK 是什么?

    20180704月  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

    • 在linuxcurl是一个利用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提供了一系列RESTfulAPI

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

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

    – 对索引进行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/课堂练习

  • 相关阅读:
    Widget Factory
    233 Matrix
    青蛙的约会
    Longge's problem
    密码解锁
    SQFREE
    GCD
    [WC2011]最大XOR和路径
    [HNOI2011]XOR和路径
    [ZJOI2010]排列计数
  • 原文地址:https://www.cnblogs.com/qingbai/p/11957564.html
Copyright © 2011-2022 走看看