ELK(Elasticsearch)安装部署应用_2018_lcf

ELK 是什么?

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

– Elasticsearch:负责日志检索和储存
– Logstash:负责日志的收集和分析、处理
– Kibana:负责日志的可视化

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

//现在像携程、华为、美团、freewheel、畅捷通 、新浪微博、大讲台、魅族、IBM等大公司都在使用 ELK!

携程、华为、美团、freewheel、畅捷通 、新浪微博、大讲台、魅族、IBM...... 这些公司都在使用 ELK!

ELK 能做什么?

• ELK组件在海量日志系统的运维中,可用于解决:
– 分布式日志数据集中式查询和管理
– 系统监控,包含系统硬件和应用各个组件的监控
– 故障排查
– 安全信息和事件管理

– 报表功能

Elasticsearch部分

• ElasticSearch 是一个基于 Lucene 的搜索服务器。

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

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

 可靠,快速,安装使用方便

• 主要特点

– 实时分析
– 分布式实时文件存储,并将每一个字段都编入索引
– 文档导向,所有的对象全部是文档
– 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)

– 接口友好,支持 JSON

• ES 没有什么?

• Elasticsearch 没有典型意义的事务.
• Elasticsearch 是一种面向文档的数据库。

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

• 安装Elasticsearch集群

• 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 为集群节点机器,不需要全部配置

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

[root@es03 /]# yum install -y java-1.8.0-openjdk  //要装1.8.0版本的

[root@es03 /]# yum install -y elasticsearch-2.3.4.rpm  //网上下载

[root@es03 /]# vi /etc/elasticsearch/elasticsearch.yml    //修改配置文件

network.host: 0.0.0.0   //主机地址

cluster.name: es01    //集群名字

node.name: node-es01   //节点名字

discovery.zen.ping.unicast.hosts: ["es01", "es02", "es03"] 

[root@es03 ~]# systemctl restart elasticsearch.service  //重启服务

[root@es03 /]# systemctl enable elasticsearch.service 

[root@es03 /]# ss -anplut | grep ::

udp    UNCONN     0      0       ::1:323                  :::*                   users:(("chronyd",pid=485,fd=2))
tcp    LISTEN     0      50       :::9200                 :::*                   users:(("java",pid=12161,fd=93))
tcp    LISTEN     0      50       :::9300                 :::*                   users:(("java",pid=12161,fd=81))
tcp    LISTEN     0      128      :::22                   :::*                   users:(("sshd",pid=849,fd=4))
tcp    LISTEN     0      100     ::1:25                   :::*                   users:(("master",pid=1146,fd=14))

//能够看到 9200,9300 被监听就正常启动了

[root@es01 /]# curl http://192.168.1.200:9200/   //单机状态
{
  "name" : "node-es01",
  "cluster_name" : "es01",
  "version" : {
    "number" : "2.3.4",
    "build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
    "build_timestamp" : "2016-06-30T11:24:31Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.0"
  },
  "tagline" : "You Know, for Search"

}

[root@es01 /]# curl http://192.168.1.203:9200/_cluster/health?pretty  //集群状态
{
  "cluster_name" : "es01",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 5,
  "number_of_data_nodes" : 5,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0

}

• 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 插件安装、查看

– 查看安装的插件
/usr/share/elasticsearch/bin/plugin list
– 安装插件

/usr/share/elasticsearch/bin/plugin install ftp://192.168.1.254/elasticsearch-head-master.zip

/usr/share/elasticsearch/bin/plugin install file:///tmp/elasticsearch-kopf-master.zip

/usr/share/elasticsearch/bin/plugin install  ftp://192.168.1.254/bigdesk-master.zip

– 这里必须使用 url 的方式进行安装,如果文件在本地,我们也需要使用 file:// 的方式指定路径,例如文件在

/tmp/xxx 下面,我们要写成 file:///tmp/xxx 删除使用 remove 指令

ES HEAD插件


ES KOPF插件


ES bigdesk 插件


RESTful API 调用

• Elasticsearch提供了一系列RESTful的API

– 检查集群、节点、索引的健康度、状态和统计
– 管理集群、节点、索引的数据及元数据
– 对索引进行CRUD操作及查询操作

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

• POST 或 PUT 数据使用 json 格式

– JSON的全称是”JavaScript Object Notation”,

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

– json 传输的就是一个字符串

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

• Rest API 的简单使用
– _cat API 查询集群状态,节点信息
– v 参数显示详细信息

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

[root@es02 /]# curl http://192.168.1.200:9200/_cat/health?v
epoch      timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 
1530705009 19:50:09  es01    green           5         5     22  11    0    0        0             0                  -                100.0% 

– 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

• RESTful API 增加
– 创建一个索引,并设置分片数量与副本数量 Json文件模式
curl -XPUT 'http://192.168.1.200:9200/tarena/' -d '{
"settings":{      //库名
"index":{        //表名
"number_of_shards": 5,    //节点机数量,要实际存在并可用的。
"number_of_replicas": 1    //切分数量  不能大于节点机数量
}
}

}'

• RESTful API 插入数据

[root@es01 bin]# curl -XPUT 'http://192.168.1.200:9200/ttt/abc/1' -d '
{
   "title":"www.ald8.cn",

   "time":"2018-11-11"

 "name":{"first": "11", "last": "22"},
 "age": 52

 }'

{"_index":"ttt","_type":"abc","_id":"1","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true} 

-这时网上看可以浏览到结果了


• RESTful API 修改数据

[root@es01 bin]# curl -XPOST 'http://192.168.1.202:9200/ttt/abc/1/_update' -d '

> {
>  "doc":{   //固定格式
>    "title":"lcf.top"
> }
> }'

{"_index":"ttt","_type":"abc","_id":"1","_version":2,"_shards":{"total":2,"successful":2,"failed":0}}

• 查询与删除
curl -XGET 'http://192.168.1.200:9200/tarena/abc/1'
curl -XDELETE 'http://192.168.1.200:9200/tarena/abc/1‘

curl -XDELETE 'http://192.168.1.200:9200/abc'

curl -XDELETE 'http://192.168.1.200:9200/*           //删除所有数据

– curl 命令连接使用 ES 数据库
– PUT 方法增加数据
– POST 修改数据
–  GET 查询数据

–  DELETE 删除数据

 使用 _bulk 批量导入数据

– 批量导入数据使用 POST 方式,数据格式为 json,url编码使用 data-binary
– 导入含有 index 配置的 json 文件

[root@db2 /]# ls shakespeare.json 
shakespeare.json

[root@db2 /]# curl -X "POST" "http://192.168.1.200:9200/_bulk" --data-binary @shakespeare.json

[root@db2 /]# curl -XPOST "http://192.168.1.200:9200/aaa/iii/_bulk" --data-binary @logs.jsonl  

//建库aaa表iii (库表名可以随时创建,存在时追加,不存在时创建)


猜你喜欢

转载自blog.csdn.net/cbuy888/article/details/80907309
今日推荐