Day76
ELK日志分析平台
ELK概述
ELK是什么
ELK分别代表
Elasticsearch:负责日志检索和存储
Logstash:日志收集和分析、处理
Kibana:负责日志可视化
ELK是一整套的解决的方案,是上面三个软件的组成的,三款都是开源软件,互相配合。
ELK是做什么的?
ELK组件在海量日志系统的运维中可以用于解决
分布式日志数据集中式的查询和管理
系统监控,包含系统硬件和应用各个组件的监控
故障排查
安全信息和事件管理
报表功能
Elasticsearch概述
Elasticsearch是什么
ElasticSearch是基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文索索引擎,基于RESTfulAPI的Web接口
Elasticsearch 是用于Java开发的,使用Apache许可条款的开源软件,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到试试搜索,稳定可靠快速安装使用方便
Elasticsearch特点
主要特点
实时分析
分布式实施文件存储,并将每一个字段都编入索引
文档导向,所有的对象全部都是文档
高可用,易扩展,并支持集群,分片和复制
接口友好,支持JSON
Elastcsearch缺点
Elasticsearch没有典型意义的事务
Elasticsearch是一种面向文档的数据库
Elasticsarch没有提供授权和认证特性
相关概念
Node: 装有一个ES服务器的节点
Cluster: 有Node组成的集群
Document: 一个被搜索的基础信息单元
index: 拥有相似特征的文档集合
Type: 一个索引中可以定义一种或多种类型
Filed: 是ES的最小单位,相当于数据的某一列
Shards; 索引的分片,每一个分片就是一个Shard
Replicas: 索引的拷贝
Elasticsearch 安装
在跳板机上配置 yum 仓库
拷贝云盘 rpm-package/elk 目录到跳板机
[root@ecs-proxy ~]# cp -a elk /var/ftp/localrepo/elk
[root@ecs-proxy elk]# cd /var/ftp/localrepo/
[root@ecs-proxy localrepo]# createrepo --update .
购买云主机
主机 | IP地址 | 配置 |
---|---|---|
es-0001 | 192.168.1.41 | 最低配置1核1G |
es-0002 | 192.168.1.42 | 最低配置1核1G |
es-0003 | 192.168.1.43 | 最低配置1核1G |
es-0004 | 192.168.1.44 | 最低配置1核1G |
es-0005 | 192.168.1.45 | 最低配置1核1G |
单机安装
[root@es-0001 ~]# vim /etc/hosts
192.168.1.41 es-0001
[root@es-0001 ~]# yum install -y java-1.8.0-openjdk elasticsearch
[root@es-0001 ~]# vim /etc/elasticsearch/elasticsearch.yml
54: network.host: 0.0.0.0
[root@es-0001 ~]# systemctl enable --now elasticsearch
[root@es-0001 ~]# curl http://192.168.1.41:9200/
{
"name" : "War Eagle",
"cluster_name" : "elasticsearch",
"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"
}
集群安装
es-0001 … es-0005 所有主机,都要执行以下操作
[root@es-0001 ~]# vim /etc/hosts
192.168.1.41 es-0001
192.168.1.42 es-0002
192.168.1.43 es-0003
192.168.1.44 es-0004
192.168.1.45 es-0005
[root@es-0001 ~]# yum install -y java-1.8.0-openjdk elasticsearch
[root@es-0001 ~]# vim /etc/elasticsearch/elasticsearch.yml
17: cluster.name: my-es
23: node.name: es-0001 # 本机主机名
54: network.host: 0.0.0.0
68: discovery.zen.ping.unicast.hosts: ["es-0001", "es-0002", "es-0003"]
[root@es-0001 ~]# systemctl enable --now elasticsearch
[root@es-0001 ~]# curl http://192.168.1.41:9200/_cluster/health?pretty
{
"cluster_name" : "my-es",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 5,
"number_of_data_nodes" : 5,
... ...
}
Elasticsearch插件
插件介绍
kopf插件
是一个ElasticSearch的管理工具
它提供了对ES集群操作的API
bigdesk插件
是elastticsearch的一个集群监控工具、
可以通过它来查看es集群的各种状态,如cpu、内存使用情况,索引数据、搜索情况,http;连接数等。
head插件
它展现了ES集群的拓扑结构,并且可以通过它来进行索引和节点级别的操作。
它提供一组针对集群的查询API,并将结果以json和表格形式返回,它提供一些快捷菜单,用以展现集群的各种状态。
插件安装
拷贝云盘 public/elk 目录到跳板机
# 本地安装,拷贝 bigdesk 插件文件到 es-0005
[root@es-0005 ~]# /usr/share/elasticsearch/bin/plugin install file:///root/bigdesk-master.zip
[root@es-0005 ~]# /usr/share/elasticsearch/bin/plugin list
Installed plugins in /usr/share/elasticsearch/plugins:
- bigdesk
# 远程安装,把插件拷贝到跳板机的ftp目录下
[root@es-0005 ~]# /usr/share/elasticsearch/bin/plugin install ftp://192.168.1.252/public/elk/elasticsearch-kopf-master.zip
[root@es-0005 ~]# /usr/share/elasticsearch/bin/plugin install ftp://192.168.1.252/public/elk/elasticsearch-head-master.zip
[root@es-0005 ~]# /usr/share/elasticsearch/bin/plugin list
Installed plugins in /usr/share/elasticsearch/plugins:
- head
- bigdesk
- kopf
访问插件:
1、华为云绑定弹性公网IP给 es-0005 节点
2、http://弹性公网IP:9200/_plugin/插件名称 [bigdesk|head|kopf]
http://公网IP:9200/_plugin/bigdesk
Elasticsearch基本操作
HTTP协议
Elasticsearch时用http协议访问
http请求由三部分组成
分别是:请求行、消息报头、请求正文
请求行:Method Request-URL HTTP-Version CRLF
http请求方法
常用方法: GET,POST,HEAD
其他方法:OPTIONS,PUT,DELETE,和 CONNECT
Elasticsearch操作方法
PUT(增) DELETE(删) 改(POST) 查(GET)
curl命令
在linux中curl是一个利用URL规则在命令行下工作的文件传输工具,是一款很强大的http命令行工具。它支持多种请求模式,自定义请求头等强大的功能,是一个强大的综合工具
API查询
查询_cat方法
# 查询支持的关键字
[root@es-0001 ~]# curl -XGET http://es-0001:9200/_cat/
# 查具体的信息
[root@es-0001 ~]# curl -XGET http://es-0001:9200/_cat/master
# 显示详细信息 ?v
[root@es-0001 ~]# curl -XGET http://es-0001:9200/_cat/master?v
# 显示帮助信息 ?help
[root@es-0001 ~]# curl -XGET http://es-0001:9200/_cat/master?help
创建索引
指定索引的名称,指定分片数量,指定副本数量
创建索引使用 PUT 方法,创建完成以后通过 head 插件验证
[root@es-0001 ~]# curl -XPUT http://es-0001:9200/tedu -d \
'{
"settings":{
"index":{
"number_of_shards": 5,
"number_of_replicas": 1
}
}
}'
增加数据
[root@es-0001 ~]# curl -XPUT http://es-0001:9200/tedu/teacher/1 -d \
'{
"职业": "诗人",
"名字": "李白",
"称号": "诗仙",
"年代": "唐"
}'
查询数据
[root@es-0001 ~]# curl -XGET http://es-0001:9200/tedu/teacher/1?pretty
修改数据
[root@es-0001 ~]# curl -XPOST http://es-0001:9200/tedu/teacher/1/_update -d \
'{
"doc": {
"年代": "公元701"
}
}'
删除数据
# 删除一条
[root@es-0001 ~]# curl -XDELETE http://es-0001:9200/tedu/teacher/1
# 删除索引
[root@es-0001 ~]# curl -XDELETE http://es-0001:9200/tedu
kibana介绍
kibana是数据化可视平台工具
特点:
灵活的分析和可视化平台
实时总结流量和数据的图表
为不同用户显示直观的界面
即时分享和嵌入的仪表板
kibana安装
购买云主机
主机 | IP地址 | 配置 |
---|---|---|
kibana | 192.168.1.46 | 最低配置1核1G |
安装kibana
[root@kibana ~]# vim /etc/hosts
192.168.1.41 es-0001
192.168.1.42 es-0002
192.168.1.43 es-0003
192.168.1.44 es-0004
192.168.1.45 es-0005
192.168.1.46 kibana
[root@kibana ~]# yum install -y kibana
[root@kibana ~]# vim /opt/kibana/config/kibana.yml
02 server.port: 5601
05 server.host: "0.0.0.0"
15 elasticsearch.url: "http://es-0001:9200"
23 kibana.index: ".kibana"
26 kibana.defaultAppId: "discover"
[root@kibana ~]# systemctl enable --now kibana
绑定弹性公网IP,通过 WEB 浏览器验证
导入日志数据
拷贝云盘 public/elk/logs.jsonl.gz 到跳板机
[root@ecs-proxy ~]# gunzip logs.jsonl.gz
[root@ecs-proxy ~]# curl -XPOST http://192.168.1.41:9200/_bulk --data-binary @logs.jsonl
kibana绘制图表
logs.jsonl
### kibana绘制图表
[外链图片转存中...(img-kwnClvlj-1608602331854)]
[外链图片转存中...(img-e8Gd4L04-1608602331855)]
[外链图片转存中...(img-PRyUVM3p-1608602331855)]
[外链图片转存中...(img-mzMKQ1Ze-1608602331856)]
[外链图片转存中...(img-EHvSvDoz-1608602331856)]
[外链图片转存中...(img-RwmE4xXn-1608602331857)]
[外链图片转存中...(img-gvSF3udg-1608602331857)]
[外链图片转存中...(img-FlHq60jY-1608602331858)]
![img](https://img-blog.csdnimg.cn/img_convert/3bfc92609260dda0783b1c13faaba9a2.png)