ELK 是什么?java
2018年07月04月 09:37:46node
内容和简介python
• Sina、饿了么、携程、华为、美团、freewheel、畅捷通 、新浪微博、大讲台、魅族、IBM...... 这些公司都在使用 ELK!ELK!ELK!linux
• ELK居然重复了三遍,是个什么鬼?web
ELK 是什么?数据库
• ELK 其实并非一款软件,而是一整套解决方案,是三个软件产品的首字母缩写json
– Elasticsearch:负责日志检索和储存vim
– Logstash:负责日志的收集和分析、处理api
– Kibana:负责日志的可视化浏览器
– 这三款软件都是开源软件,一般是配合使用,并且又前后归于 Elastic.co 公司名下,故被简称为 ELK
l ELK 能作什么?
• ELK组件在海量日志系统的运维中,可用于解决:
– 分布式日志数据集中式查询和管理
– 系统监控,包含系统硬件和应用各个组件的监控
– 故障排查
– 安全信息和事件管理
– 报表功能
l Elasticsearch部分
• ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful API 的 web 接口。
• Elasticsearch是用Java开发的,并做为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,可以达到实时搜索,稳定,可靠,快速,安装使用方便
Elasticsearch部分
• 主要特色
– 实时分析
– 分布式实时文件存储,并将每个字段都编入索引
– 文档导向,全部的对象所有是文档
– 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
– 接口友好,支持 JSON
l Elasticsearch部分 《2续》
• ES 没有什么?
• Elasticsearch 没有典型意义的事务.
• Elasticsearch 是一种面向文档的数据库。
• Elasticsearch 没有提供受权和认证特性
l Elasticsearch部分 《3续》
• 相关概念:
– Node: 装有一个 ES 服务器的节点。
– Cluster: 有多个Node组成的集群
– Document: 一个可被搜素的基础信息单元
– Index: 拥有类似特征的文档的集合
– Type: 一个索引中能够定义一种或多种类型
– Filed: 是 ES 的最小单位,至关于数据的某一列
– Shards: 索引的分片,每个分片就是一个 Shard
– Replicas: 索引的拷贝
l 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
l 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
l 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
– }
l ES 集群验证
– 返回字段解析
– status“ : ”green“ 集群状态,绿色为正常,黄色表
ES插件的使用
• ES 经常使用插件
• head 插件:
– 它展示ES集群的拓扑结构,而且能够经过它来进行索引(Index)和节点(Node)级别的操做
– 它提供一组针对集群的查询API,并将结果以json和表格形式返回
– 它提供一些快捷菜单,用以展示集群的各类状态
http请求由三部分组成
– 分别是:请求行、消息报头、请求正文
– 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式以下:
Method Request-URI HTTP-Version CRLF
l 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
/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是什么
– 数据可视化平台工具
• 特色:
– 灵活的分析和可视化平台
– 实时总结和流数据的图表
– 为不一样的用户显示直观的界面
– 即时分享和嵌入的仪表板
l Kibana 安装
• kibana安装
– kibana 的安装很是简单,咱们使用 rpm 方式安装
rpm -ivh kibana-4.5.2-1.x86_64.rpm
– kibana 默认安装在 /opt/kibana 下面,配置文件在/opt/kibana/config/kibana.yml
– 咱们只须要修改少许的配置就能够启动
l 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
l Kibana 安装
• kibana.yml 的配置
– 除 elasticsearch.url 须要配置为咱们 ES 集群的地址以外,其余保持默认值就能够了
– 设置开机启动
systemctl enable kibana
– 启动服务
systemctl start kibana
– web 访问 kibana
l 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/课堂练习