ELK方案 是三款软件产品的字母缩写: Elasticsearch Logstash Kibana
Elasticsearch | 负责日志检索和储存 |
Logstash | 负责日志的收集和分析,处理 |
Kibana | 负责日志的可视化 |
用处:分布式日志数据集中式查询和管理;系统监控、包含系统硬件和应用各个组件的监控;故障排查;安全信息和事件管理;报表功能
工作流程:
web服务器(安装filebeat beat) 日志文件 | | | 传递给Logstash 内部 input--filter--output ————> 传递给 Elasticsearch <————kibana从中获取数据,汇总————> 客户端client 读取 |
Elasticsearch
用java开发的,基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful API的Web接口
特点:实时分析;分布式实时文件存储,并每一个字段都编入索引;文档导向;高可用性,易扩展,支持集群、分片和复制;支持JSON
不过其没有典型意义的事务和授权以及认证特性
相关概念
Node 装有一个ES服务器的节点
Cluster 有多个Node组成的集群
Document 一个可以被搜索的基础信息单元
Index 拥有相似特征的文档的集合
Type 一个索引中可以定义一种或多种类型
Field 是ES最小的单位,相当于数据的某一列
Shards 索引的分片,每一个分片就是一个shard
Replicas 索引的拷贝
Relational database | Elasticsearch |
---|---|
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Schema | Mapping |
Index | Everything is indexed |
SQL | Query DSL |
SELECT* FROM table | GET http:// |
UPDATE table SET | PUT http:// |
HTTP协议
http请求方法 GET POST HEAD 其他方法 OPTIONS PUT DELETE TRACE CONNECT
ES常用 PUT 增 DELETE 删 POST 改 GET 查
系统命令 curl
linux中利用url规则在命令行下工作的文件传输工具,强大的http命令行工具 支持多种请求模式,自定义请求头等强大功能
常用参数 -A 修改请求的agent -X 设置请求方法 -i 显示返回头信息
[root@ecs-guo ~]# curl -X GET www.baidu.com
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title>......
es插件
head插件:展现了ES集群的拓扑结构,并且可以通过它来进行索引和节点级别的操作,提供针对集群的查询API,结果以json和表格形式返回,并且也提供一些快捷菜单来表现集群的各种状态
kopf插件:管理工具,提供了对ES集群操作的API
bigdesk插件:集群监控工具,可以监控各种状态
安装插件在192.168.1.15
elasticsearch-head-master.zip elasticsearch-kopf-master.zip bigdesk-master.zip
[root@es5 ~]# cd /usr/share/elasticsearch/bin/
[root@es5 bin]# ls
elasticsearch elasticsearch.in.sh elasticsearch-systemd-pre-exec plugin
[root@es5 bin]# ./plugin install file:///root/elasticsearch-head-master.zip //注意格式必须为file:///
[root@es5 bin]# ./plugin install file:///root/bigdesk-master.zip
[root@es5 bin]# ./plugin install file:///root/elasticsearch-kopf-master.zip
[root@es5 bin]# ./plugin list
Installed plugins in /usr/share/elasticsearch/plugins:
- head
- kopf
- bigdesk
打开插件
http://192.168.1.15:9200/_plugin/head
点击索引,可以创建索引 分布式存储规则 分片五片 源数据一份,副本一份(默认情况)
http://192.168.1.15:9200/_plugin/kopf
http://192.168.1.15:9200/_plugin/bigdesk
RESTful API 调用
1.提供了一系列的API,检查集群、节点、索引的健康度、状态和统计
管理集群、节点、缩影的数据和元数据
对索引进行CRUD操作及查询操作
执行其他高级操作如分页、排序、过滤等
2.POST或PUT数据使用json格式
3.Json(Javascript Object Notation) Javascript对象表示法,基于文本独立于语言的轻量级数据交换格式
传输的就是一个字符串,Python中对应的字符串、列表、字典都可以转成对应的JSON格式
4._cat API 查询集群状态,节点信息
v参数显示详细信息
help显示帮助信息
nodes查询节点状态信息
[root@es5 bin]# curl "http://192.168.1.15:9200/_cat/health?v" //查看集群健康信息,(?v详细信息 ?help 查看帮助)
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1547628559 16:49:19 nsd1809 green 5 5 10 5 0 0 0 0 - 100.0%
[root@es5 bin]# curl "http://192.168.1.15:9200/_cat/nodes?v" //查询节点
host ip heap.percent ram.percent load node.role master name
192.168.1.12 192.168.1.12 10 40 0.00 d m es2
192.168.1.14 192.168.1.14 11 41 0.18 d m es4
192.168.1.11 192.168.1.11 11 44 0.00 d * es1
192.168.1.15 192.168.1.15 11 42 0.00 d m es5
192.168.1.13 192.168.1.13 11 40 0.00 d m es3
[root@es5 bin]# curl "http://192.168.1.15:9200/_cat/master?v" //查询主库
id host ip node
141WVGOsRiyI99AKLFJNVg 192.168.1.11 192.168.1.11 es1
[root@es5 bin]# curl "http://192.168.1.15:9200/_cat/shards?v" //查询分片信息
index shard prirep state docs store ip node
abc 4 r STARTED 0 159b 192.168.1.15 es5
abc 4 p STARTED 0 159b 192.168.1.12 es2
abc 3 p STARTED 0 159b 192.168.1.13 es3
abc 3 r STARTED 0 159b 192.168.1.12 es2
abc 1 p STARTED 0 159b 192.168.1.14 es4
abc 1 r STARTED 0 159b 192.168.1.11 es1
abc 2 p STARTED 0 159b 192.168.1.11 es1
abc 2 r STARTED 0 159b 192.168.1.13 es3
abc 0 p STARTED 0 159b 192.168.1.15 es5
abc 0 r STARTED 0 159b 192.168.1.14 es4
[root@es5 bin]# curl "http://192.168.1.15:9200/_cat/indices?v" //查看索引
health status index pri rep docs.count docs.deleted store.size pri.store.size
green open abc 5 1 0 0 1.5kb 795b
RESTful API 增加
创建一个索引(人选一台主机均可),并设置分片数量与副本数量
[root@es5 bin]# curl -XPUT 'http://192.168.1.12:9200/tedu/' -d '{ //创建一个索引tedu
> "settings":{
> "index":{
> "number_of_shards":5, //分片数量
> "number_of_replicas":1 //副本个数
> }
> }
> }'
{"acknowledged":true}[root@es5 bin]#
插入数据,如果继续增加数据,后面的id需要不同
[root@es5 bin]# curl -XPUT '192.168.1.12:9200/tedu/hlm/1' -d '{
> "荣国府":"贾赦",
> "性别":"男",
> "年龄":"未知",
> "爱好":"修道"
> }'
{"_index":"tedu","_type":"hlm","_id":"1","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}[root@es5 bin]#
修改数据 XPOST _update更新哪条 关键字是“doc”
[root@es5 bin]# curl -XPOST '192.168.1.12:9200/tedu/hlm/1/_update' -d '{
> "doc":{"爱好":"炼丹"}
> }'
{"_index":"tedu","_type":"hlm","_id":"1","_version":2,"_shards":{"total":2,"successful":2,"failed":0}}[root@es5 bin]#
查询数据
[root@es5 bin]# curl -XGET '192.168.1.12:9200/tedu/hlm/1?pretty' //?pretty 竖排显示
{
"_index" : "tedu",
"_type" : "hlm",
"_id" : "1",
"_version" : 2,
"found" : true,
"_source" : {
"荣国府" : "贾赦",
"性别" : "男",
"年龄" : "未知",
"爱好" : "炼丹"
}
}
删除数据
[root@es5 bin]# curl -XDELETE 192.168.1.12:9200/* //删除全部数据
{"acknowledged":true}[root@es5 bin]#