ELK 官网:
https://www.elastic.co/cn/what-is/elk-stack
ElasticSearch
ElasticSearch 是一个高可用开源全文检索和分析组件。提供存储服务,搜索服务,大数据准实时分析等。一般用于提供一些提供复杂搜索的应用
基本概念:
Index
定义:类似于mysql中的database。索引只是一个逻辑上的空间,物理上是分为多个文件来管理的。
命名:必须全小写
描述:在实践过程中每个index都会有一个相应的副 本。主要用来在硬件出现问题时,用来回滚数据的。这也某种程序上,加剧了ES对于内存高要求。
Type
定义:类似于mysql中的table,根据用户需求每个index中可以新建任意数量的type。
Document
定义:对应mysql中的row。有点类似于MongoDB中的文档结构,每个Document是一个json格式的文本
Mapping
更像是一个用来定义每个字段类型的语义规范。在mysql中类似sql语句,在ES中经过包装后,都被封装为友好的Restful风格的接口进行操作。
这一点也是为什么开发人员更愿意使用ES的原因。
Shards & Replicas
定义:能够为每个索引提供水平的扩展以及备份操作。保证了数据的完整性和安全性
描述:
Shards:在单个节点中,index的存储始终是有限制,并且随着存储的增大会带来性能的问题。为了解决这个问题,ElasticSearch提供一个能够分割单个index到集群各个节点的功能。你可以在新建这个索引时,手动的定义每个索引分片的数量。
Replicas:在每个node出现宕机或者下线的情况,Replicas能够在该节点下线的同时将副本同时自动分配到其他仍然可用的节点。而且在提供搜索的同时,允许进行扩展节点的数量,在这个期间并不会出现服务终止的情况。
默认情况下,每个索引会分配5个分片,并且对应5个分片副本,同时会出现一个完整的副本【包括5个分配的副本数据】。
监听端口:
9200作为Http协议,主要用于外部通讯
9300作为Tcp协议,ES集群之间是通过9300进行通讯
配置文件路径:
日志文件路径:
elasticsearch 配置详解:
cluster部分:==========
cluster.name: elasticsearch
配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,
如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
node部分:===========
node.name: node-1
定义节点名称
node.attr.rack: r1
向节点添加自定义属性
Paths部分:==========
path.data:
/var/lib/elasticsearch
设置索引数据的存储路径
path.logs:
/var/log/elasticsearch
设置日志文件的存储路径
Memory部分:=======
bootstrap.memory_lock:
true
启动时锁定内存,为了保证es正常运行
Network部分:========
network.host: 192.168.0.1
设置绑定的ip地址,可以是ipv4或ipv6的
http.port: 9200
设置对外服务的http端口,默认为9200。
Discovery部分:=======
discovery.zen.
ping
.unicast.hosts: [
"host1"
,
"host2"
]
设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.minimum_master_nodes:
设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。
默认为1,对于大的集群来说,可以设置大一点的值(2-4)
Gateway部分:========
gateway.recover_after_nodes: 3
设置集群中N个节点启动时进行数据恢复,默认为1
Various部分: [ˈveriəs]=======各种各样====
action.destructive_requires_name:
true
删除索引时需要显式名称
常用命令:
验证服务
curl -X GET http://127.0.0.1:9200
elasticsearch 查看集群统计信息
curl -XGET 'http://localhost:9200/_cluster/stats?pretty'
查看集群状态
curl -X GET 'localhost:9200/_cat/health?v'
创建索引:test_index
curl -X PUT HTTP://localhost:9200/test_index?pretty
elasticsearch 查看所有索引
curl -X GET HTTP://localhost:9200/_cat/indices?v
curl -s http://192.168.1.9:9200/_cat/indices|grep "msg"|awk '{print $3}'|sort
删除索引:test_index
curl -XDELETE 'localhost:9200/test_index?pretty'
*******************************************************************************************************************************************************
logstash工作原理:
Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具。
支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。
它的主要作用就是将文本格式的字符串,转换成为具体的结构化的数据,配合正则表达式使用。内置120多个解析语法。
配置文件路径:
日志文件路径:
logstash是用来收集日志,并对日志做过滤处理的,我们下面要分析的是系统日志,所以要编写一个收集日志的配置文件
vim /etc/logstash/conf.d/system.conf
input日志输入模块:日志的获取方式和路径input {
file
{
path =>
"/var/log/messages"
type
=>
"system-log"
start_position =>
"beginning"
}
}
output日志的输出模块:导出你的数据
output {
elasticsearch {
hosts =>
"192.168.10.129:9200"
index =>
"system_log-%{+YYYY.MM.dd}"
}
}
如果conf.d 下有多个配置文件需要修改pipelines.yml(管道)文件
**************************************************************************************************************************************************
1)关闭防火墙和selinux ,拉ELK安装包,安装jdk
2)安装配置elasticsearch
给权限
chmod -R 777 /var/log/
查看日志
tailf /var/log/elasticsearch/wg007.log
elasticsearch命令
curl -X GET http://192.168.16.184:9200
curl -X GET http://192.168.16.184:9200/_cluster/stats?pretty
3)安装配置logstash
查看:
tailf /var/log/logstash/logstash-plain.log
另起一个终端查看:
netstat -ntl |grep 9600
4)安装配置kinbana
5)浏览器验证 。创建索引查看日志信息
选择仪表盘