大型架构ELK

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

• ELK竟然重复了三遍,是个什么鬼?
ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写
– Elasticsearch:负责日志检索和储存
– Logstash:负责日志的收集和分析、处理
– Kibana:负责日志的可视化
– 这三款软件都是开源软件,通常是配合使用,而且又
先后归于 Elastic.co 公司名下,故被简称为 ELK

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

Elasticsearch部分
• ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful API 的 web 接口。
• Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

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

• ES 没有什么?
• 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 索引 类型 文档 域(字段)

ELK 搭建

Elasticsearch 重点,存储空间 分布式集群
Logstash 根据压力负载情况,多节点
Kibana 单节点

Elasticsearch 组建
1 禁用 selinux, 卸载 firewalld (所有主机都要做)
[root@room9pc19 doc]# cat /etc/selinux/config
SELINUX=disabled

禁用防火墙 (所有主机都要做)
systemctl stop firewalld
systemctl mask firewalld

2 配置 /etc/hosts (所有主机都要做)
192.168.1.10 klog
192.168.1.11 es1
192.168.1.12 es2
192.168.1.13 es3
192.168.1.14 es4
192.168.1.15 es5

3 安装 java 运行环境 java-1.8.0-openjdk (所有主机都要做)
yum install java-1.8.0-openjdk -y

4 安装 elasticsearch (所有主机都要做yum install elasticsearch-2.3.4.rpm

5 修改配置文件 /etc/elasticsearch/elasticsearch.yml (所有主机都要做)
cluster.name: nsd1711
node.name: 当前主机名称
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["es1", "es2", "es3"]

启动并验证 (所有主机都要做)
systemctl start elasticsearch

浏览器访问
http://192.168.1.ip:9200/
http://192.168.1.ip:9200/_cluster/health?pretty

集群插件
/usr/share/elasticsearch/bin
下载插件文件到本地,必须使用 file:// 绝对路径安装
./plugin install file:///usr/share/elasticsearch/bin/bigdesk-master.zip
使用远程 uri 路径可以直接安装
./plugin install ftp://192.168.1.254/elk/elasticsearch-head-master.zip
./plugin install ftp://192.168.1.254/elk/elasticsearch-kopf-master.zip

安装完成以后使用 ./plugin list 查看

http://192.168.1.15:9200/_plugin/插件名字

集群 api 查询地址
http://192.168.1.15:9200/_cat
http://192.168.1.15:9200/_cat/nodes?v 显示详细信息
http://192.168.1.15:9200/_cat/nodes?help 显示帮助信息

ES 数据库基本操作,使用 curl 命令
创建索引
curl -XPUT 'http://192.168.1.13:9200/tarena/' -d '{
"settings":{
"index":{
"number_of_shards": 5,
"number_of_replicas": 1
}
}
}'


curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/1' -d '{
"title": "阶段1",
"name":{"first": "小逗比", "last": "牛犇"},
"age": 25
}'
curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/2' -d '{
"title": "阶段2",
"name":{"first": "老逗比", "last": "丁丁"},
"age": 52
}'
curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/3' -d '{
"title": "阶段3",
"name":{"first": "漂亮姐", "last": "静静"},
"age": 20
}'
curl -XPUT 'http://192.168.1.11:9200/tarena/teacher/4' -d '{
"title": "阶段4",
"name":{"first": "老司机", "last": "欣欣"},
"age": 35
}'


curl -XPOST 'http://192.168.1.11:9200/tarena/teacher/3/_update' -d '{
"doc":{
"age": 18
}
}'


curl -XGET 'http://192.168.1.14:9200/tarena/teacher/1'


curl -XDELETE 'http://192.168.1.14:9200/tarena/teacher/1'

kibana 安装配置
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.1.11:9200"
kibana.index: ".kibana"
kibana.defaultAppId: "discover"
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
elasticsearch.startupTimeout: 5000

猜你喜欢

转载自blog.51cto.com/13841846/2136070