1.ELK是什么?


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


Elasticsearch:负责日志检索和储存


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


Kibana:负责日志的可视化


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


2.ELK能做什么?


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


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


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


故障排查


安全信息和事件管理


报表功能




3.简要概述Elasticsearch?


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


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


Elasticsearch的特点?


4.elasticsearch主要特点


1.实时分析


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


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


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


接口友好,支持 JSON


5.ES 没有什么?


Elasticsearch 没有典型意义的事务.


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


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


6.ES相关概念


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


Cluster: 有多个Node组成的集群


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


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


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


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


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


Replicas: 索引的拷贝




7.ES与关系数据库对比


ES 与关系型数据库的对比


在 ES 中,文档归属于一种 类型 (type) ,而这些类型存在于索引 (index) 中,类比传统关系型数据库


DB -> Databases -> Tables -> Rows -> Columns


关系型      数据库          表            行              列  




ES -> Indices   -> Types  -> Documents -> Fields


ES       索引            类型            文档           域(字段)




8.搭建ES流程安装第一台 ES 服务器


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

192.168.4.11 node1


2.解决依赖关系

openjdk1.8


3.安装软件包

elasticsearch


4.修改配置文件

elasticsearch.yml


5.启动服务



6.检查服务

netstat -lutunp (9200 9300)


curl:htttp://192.168.4.1:9200/


9.ES集群配置


只需要对配置文件做少量修改,其他配置一样


ES 集群配置


集群中的所有节点要相互能够 ping 通,要在所有集群机器上配置 /etc/hosts 中的主机名与 ip 对应关系


集群中所有机器都要安装 java 环境


cluster.name 集群名称配置要求完全一致


node.name 为当前节点标识,应配置本机的主机名


discovery 为集群节点机器,不需要全部配置


配置完成以后启动所有节点服务(有可能会有一定的延时,需要等待几十秒)




10.ES集群配置验证


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


11.ES 常用插件


head 插件:


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


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


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


ES 常用插件


kopf 插件


是一个ElasticSearch的管理工具


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


bigdesk 插件


是elasticsearch的一个集群监控工具


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




11.


Elasticsearch提供了一系列RESTful的API


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


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


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


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


POST 或 PUT 数据使用 json 格式


json


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


json 传输的就是一个字符串


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


Rest API 的简单使用


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


v 参数显示详细信息


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


help 显示帮助                       信息


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


Rest API 的简单使用




nodes 查询节点状态信息


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




索引信息


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






HTTP Methods 和 RESTful API 设计


HTTP Methods 也叫 HTTP Verbs, 它们是 HTTP 协议的一部分, 主要规定了 HTTP 如何请求和操作服务器上的资源,常见的有GET, POST等


HTTP Methods 一共有九个,分别是 GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,CONNECT,PATCH


HTTP Methods


在RESTful API 设计中,常用的有POST,GET,PUT,PATCH 和 DELETE。分别对应对资源的创建,获取,修改,部分修改和删除操作。


我们默认访问 ES API 的方法是 GET,如果要对数据库增加、删除、修改数据我们还要使用对应的方法


GET       查询


POST     增加


PUT       更改


DELETE  删除








12.kibana是什么


数据可视化平台工具




特点:


灵活的分析和可视化平台


实时总结和流数据的图表


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


即时分享和嵌入的仪表板






13.


elk-(elasticsearch---kibana----logstash)


kibanna(批量导入数据---批量查询--在kibana里展示)


logstash(input模块file---tcp&udp----syslog)


 (output模块rubydebug---elasticsearch)


        (filter模块grok)


        (codec)


 (filebeat)




15logstash 是什么


logstash是一个数据采集、加工处理以及传输的工具




16.logstash 特点:


所有类型的数据集中处理


不同模式和格式数据的正常化


自定义日志格式的迅速扩展


为自定义数据源轻松添加插件


17.logstash  工作结构




{ 数据源 } ==>


             input {   } ==>


                              filter {   } ==>


                                             output {   } ==>


                                                                { ES }


17.logstash 里面的类型


布尔值类型:  ssl_enable => true


字节类型:     bytes => "1MiB"


字符串类型:  name => "xkops"


数值类型:     port => 22


数组:            match => ["datetime","UNIX"]


哈希:            options => {k => "v",k2 => "v2"}


编码解码:     codec => "json"


路径:            file_path => "/tmp/filename"


注释:            #




18.logstash 条件判断


等于:         ==


不等于:      !=


小于:          <


大于:          >


小于等于:   <=


大于等于:   >=


匹配正则:   =~


不匹配正则: !~


logstash 条件判断


包含:         in


不包含:     not in 


与:   and


或:     or


非与:        nand


非或:   xor


复合表达式:   ()


取反符合:      !()