ELK简介

ELK简介
ELK简介
什么是ELK
• ELK是一整套解决方案,是三个软件产品的首字母缩写,很多公司都在使用,如:Sina、携程、华为、美团等
• ELK分别代表
– Elasticsearch:负责日志检索和储存 -----> 数据库
– Logstash:负责日志的收集和分析、处理 ----> 对日志处理的工具
– Kibana:负责日志的可视化 -----> web页面
• 这三款软件都是开源软件,通常是配合使用,而且又先后归于Elastic.co公司名下,故被简称为ELKELK能做什么
• ELK组件在海量日志系统的运维中,可用于解决
– 分布式日志数据集中式查询和管理
– 系统监控,包含系统硬件和应用各个组件的监控
– 故障排查
– 安全信息和事件管理
– 报表功能

Elasticsearch

• ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful API的Web接口
• Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
• 主要特点
– 实时分析
– 分布式实时文件存储,并将每一个字段都编入索引
– 文档导向,所有的对象全部是文档
– 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
– 接口友好,支持JSON
– Elasticsearch没有典型意义的事务
– Elasticsearch是一种面向文档的数据库
– Elasticsearch没有提供授权和认证特性

• 相关概念
– Node: 装有一个ES服务器的节点
– Cluster: 有多个Node组成的集群
– Document: 一个可被搜索的基础信息单元
– Index: 拥有相似特征的文档的集合
– Type: 一个索引中可以定义一种或多种类型
– Filed: 是ES的最小单位,相当于数据的某一列
– Shards: 索引的分片,每一个分片就是一个Shard
– Replicas: 索引的拷贝

SQL与NoSQL
• ES与关系型数据库的对比
– 在ES中,文档归属于一种 类型(type),而这些类型存在于索引(index)中,类比传统关系型数据库
– DB -> Databases -> Tables -> Rows -> Columns
– 关系型 数据库 表 行 列
– ES -> Indices -> Types -> Documents -> Fields
– ES 索引 类型 文档 域(字段)

ES集群安装
• 安装第一台ES服务器
– 设置主机名称和ip对应关系
[root@se1 ~]# vim /etc/hosts
192.168.1.41 se1
192.168.1.42 se2
192.168.1.43 se3
192.168.1.44 se4
192.168.1.45 se5
– 解决依赖关系
[root@se1 ~]# yum -y install java-1.8.0-openjdk.x86_64
[root@se1 ~]# java -version
openjdk version “1.8.0_131”
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
– 安装软件包
[root@se1 ~]# yum -y install elasticsearch
– 修改配置文件
[root@se1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: myelk //配置集群名字
23 node.name: se1 //当前主机名称
54 network.host: 0.0.0.0 // 0.0.0.0(监听所有地址)
68 discovery.zen.ping.unicast.hosts: [“se1”, “se2”,“se3”] //声明集群里的主机成员有谁,不需要全部写进去
– 启动服务
[root@se1 ~]# systemctl restart elasticsearch
– 检查服务
[root@se1 ~]# ss -antup | grep 9200
tcp LISTEN 0 50 :::9200 ::? users:((“java”,pid=23231,fd=110))
[root@se1 ~]# curl http://192.168.1.41:9200/ //访问9200端口

ES集群配置
• ES集群配置
– ES集群配置也很简单,只需要对配置文件做少量的修改即可,其他步骤和单机完全一致
– ES集群配置文件
cluster.name: my-es
node.name: node1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: [“node1”, “node2”,
“node3”]

• ES集群配置
– 集群中的所有节点要相互能够ping通,要在所有集群机器上配置/etc/hosts中的主机名与ip对应关系
– 集群中所有机器都要安装Java环境
– cluster.name集群名称配置要求完全一致
– node.name为当前节点标识,应配置本机的主机名
– discovery为集群节点机器,不需要全部配置,如果没在集群节点里的机器先启动,会自己制造一个集群,不会加入上面指定的集群。可以先把服务停掉,把集群节点里的机器启动后再启动该主机。
– 配置完成以后启动所有节点服务
– 验证集群,使用ES内置字段 _cluster/health
[root@se1 ~]# 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
}

HTTP 协议简介
• http请求由三部分组成
– 分别是:请求行、消息报头、请求正文
– 请求行以一个方法符号开头,以空格分开,后面跟着
请求的URI和协议版本,格式如下:
Method Request-URI HTTP-Version CRLF
• 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和表格形式返回
– 它提供一些快捷菜单,用以展现集群的各种状态
• kopf插件
– 是一个ElasticSearch的管理工具
– 它提供了对ES集群操作的API
• bigdesk插件
– 是elasticsearch的一个集群监控工具
– 可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等

• ES插件安装、查看
– 查看安装的插件
[root@se1 ~]# /usr/share/elasticsearch/bin/plugin list
– 安装插件
[root@se1 ~]# /usr/share/elasticsearch/bin/plugin install ftp://192.168.4.254/head.zip
[root@se1 ~]# /usr/share/elasticsearch/bin/plugin install file:///tmp/kopf.zip
– 这里必须使用 url 的方式进行安装,如果文件在本地,我们也需要使用 file:// 的方式指定路径,例如文件在
/tmp/xxx下面,我们要写成 file:///tmp/xxx , 删除使用remove 指令

扩展插件
RESTful API 调用
• Elasticsearch提供了一系列RESTful的API
– 检查集群、节点、索引的健康度、状态和统计
– 管理集群、节点、索引的数据及元数据
– 对索引进行CRUD操作及查询操作
– 执行其他高级操作如分页、排序、过滤等
• POST或PUT数据使用json格式

RESTful API 调用
• JSON
– JSON(JavaScript Object Notation),意思是JavaScript对象表示法,它是一种基于文本独立于语言的轻量级数据交换格式。
– JSON传输的就是一个字符串
– Python中对应的字符串,列表,字典都可以转换成对应的JSON格式
• RESTful API的简单使用
– _cat API查询集群状态,节点信息
– v参数显示详细信息
http://192.168.4.15:9200/_cat/health?v
– help显示帮助信息
http://192.168.4.15:9200/_cat/health?help
http://192.168.1.41:9200/_cat
=.=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes //查询节点状态信息
/_cat/indices //索引信息

• RESTful API增加
– 创建一个索引,并设置分片数量与副本数量
curl -XPUT ‘http://192.168.4.13:9200/tarena/’ -d ‘{
“settings”:{
“index”:{
“number_of_shards”: 5,
“number_of_replicas”: 1
}
}
}’

• RESTful API插入数据 索引 / 类型
curl -XPUT ‘http://192.168.4.11:9200/tarena/teacher/1’ -d ‘{ //插入第一条数据
“职业”: “诗人”,
“名字”: “李白”,
“称号”: “诗仙”,
“年代”: “唐”
}’
curl -XPUT ‘http://192.168.4.11:9200/tarena/teacher/2’ -d ‘{ //插入第二条数据
“职业”: “诗人”,
“名字”: “杜甫”,
“称号”: “诗圣”,
“年代”: “唐”
}’
• RESTful POST修改数据 (如果不写update,会删掉其他列的值,只保存更新的值)
curl -XPOST ‘http://192.168.4.11:9200/tarena/teacher/3/_update’ -d ‘{
“doc”:{
“年代”: “唐代”
}
}’
• 查询与删除
curl -XGET ‘http://192.168.4.14:9200/tarena/teacher/1’ //查询第一条数据
curl -XDELETE ‘http://192.168.4.14:9200/tarena/teacher/1’ //删掉第一条数据
curl -XDELETE ‘http://192.168.4.14:9200/tarena’ //删掉整个tarena索引

Kibana安装
• kibana是什么
– 数据可视化平台工具

• 特点:
– 灵活的分析和可视化平台
– 实时总结流量和数据的图表
– 为不同的用户显示直观的界面
– 即时分享和嵌入的仪表板

• kibana安装
[root@es1 config]# yum -y install kibana
– kibana 默认安装在 /opt/kibana 下面,配置文件在 /opt/kibana/config/kibana.yml

– 修改配置文件kibana.yml (除了elasticsearch.url,其他去掉注释即可)
– server.port: 5601
– server.host: “0.0.0.0”
– elasticsearch.url: “http://192.168.1.41:9200
– kibana.index: “.kibana”
– kibana.defaultAppId: “discover”
– elasticsearch.pingTimeout: 1500
– elasticsearch.requestTimeout: 30000
– elasticsearch.startupTimeout: 5000

– 启动服务(服务端口5601)
systemctl start kibana
– web访问kibana
http://192.168.1.41:5601/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值