[目录] | 含义
---|---
ElasticSearch安装与介绍
Elastic Stack简介
如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。所以说,ELK是旧的称呼,Elastic Stack是新的名字。
Elasticsearch
Elasticsearch 基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash
Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。
Kibana
Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。
Beats
Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。Beats由如下组成:
- Packetbeat:是一个网络数据包分析器,用于监控、收集网络流量信息,Packetbeat嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理,其支 持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache等协议;
- Filebeat:用于监控、收集服务器日志文件,其已取代 logstash forwarder;
- Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、HAProxy、MongoDB MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服务;
Beats和Logstash其实都可以进行数据的采集,但是目前主流的是使用Beats进行数据采集,然后使用 Logstash进行数据的分割处理等,早期没有Beats的时候,使用的就是Logstash进行数据的采集。
ElasticSearch快速入门
简介
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。
ElasticSearch是Elastic Stack的核心,同时Elasticsearch 是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为Elastic Stack的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
前言
Elasticsearch的发展是非常快速的,所以在ES5.0之前,ELK的各个版本都不统一,出现了版本号混乱的状态,所以从5.0开始,所有Elastic Stack中的项目全部统一版本号。。
安装与下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz
Elasticsearch是使用java开发的,且7.8版本的ES需要JDK版本1.8以上,默认安装
包带有ja环境,如果系统配置.JAVA_HOME,那么使用系统默认的JDK,如果没有配置使用自带的JDK,一般建议使用系统配置的JDK。
yum install -y java
解压后的 Elasticsearch 的目录结构如下 :
目录 | 含义
---|---
bin | 可执行脚本目录
config | 配置目录
jdk | 内置 JDK 目录
lib | 类库
logs | 日志目录
modules | 模块目录
plugins | 插件目录
- 因为ElasticSearch不支持Root用户直接操作,因此我们需要创建一个elsearch用户
wget https://www.elastic.co/cn/downloads/past-releases/kibana-7-5-1
tar xf elasticsearch-7.5.1-linux-x86_64.tar.gz
mv elasticsearch-7.5.1 /es
useradd es
passwd es
chown -R es:es /es
su - es
userdel -r es
修改配置文件
- vim config/elasticsearch.yml
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
- vim /etc/security/limits.conf
es soft nproc 65535
es hard nproc 65535
- vim /etc/security/limits.d/20-nproc.conf
es soft nproc 65535
es hard nproc 65535
vim /etc/sysctl.conf
vm.max_map_count=655360
重启生效配置
reboot
切换用户启动
su - es
./bin/elasticsearch
./bin/elasticsearch -d 放后台
如果启动时报错,启动时他会生成一些文件,在su - root 切回重新设置组
chown -R es:es /es
。
注意: 9300 端口为 Elasticsearch 集群间组件的通信端口, 9200 端口为浏览器访问的 http协议 RESTful 端口。
打开浏览器,输入地址: http://localhost:9200,测试返回结果,返回结果如下:
{
"name" : "DESKTOP-LNJQ0VF",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "nCZqBhfdT1-pw8Yas4QU9w",
"version" : {
"number" : "7.8.0",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
"build_date" : "2020-06-14T19:35:50.234439Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
报错解决
- 双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改
config/jvm.options 文件
#设置JVM初始内存为1G。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存
#Xms represents the initial size of total heap space
#设置JVM最大可用内存为1G
#Xmx represents the maximum size of total heap space
-Xmslg
-xmxlg
安装Kibana
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。
Kibana 版本要和Es 一致!
kibana下载
- 授权
tar xf kibana-7.5.1-linux-x86_64.tar.gz
mv kibana-7.5.1-linux-x86_64 /kibana
chown -R es:es /kibana
su - es
- 修改配置文件
vim config/kibana.yml
i18n.locale: "zh-CN"
server.port: 5601
server.host: "ip"
elasticsearch.hosts: ["http://ip:9200"]
${ip}为内网IP
启动:
./bin/kibana &
访问:
10.0.0.31:5601
使用
Rest风格说明
一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
基本Rest命令说明∶
method | url地址 | 描述 |
---|---|---|
PUT | localhost:9200/索引名称/类型名称/文档id | 创建文档(指定文档id ) |
POST | localhost:9200/索引名称/类型名称 | 创建文档(随机文档id ) |
POST | localhost:9200/索引名称/类型名称/文档id/_update | 修改文档 |
DELETE | localhost:9200/索引名称/类型名称/文档id | 删除文档 |
GET | localhost:9200/索引名称/类型名称/文档id | 查询文档通过文档id |
POST | localhost:9200/索引名称/类型名称/_search | 查询所有数据 |
字段类型
那么name这个字段用不用指定类型呢。毕竟我们关系型数据库是需要指定类型的啊!
https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html
- 字符串类型
text .keyword
- 数值类型
long, integer, short, byte, double, float, half float,scaled float
- 日期类型
date
- te布尔值类型
boolean
- 二进制类型
binary
- 等等......
曾
创建一个索引规则,指定字段类型
PUT /test1/type1/1
{
"name":"狂神说",
"age":"23"
}
PUT /test2
{
"mappings": {
"properties": {
"name":{
"type": "text"
},
"age":{
"type": "long"
},
"birthday":{
"type": "date"
}
}
}
}
扩展∶通过命令elasticsearch索引情况!通过get _cat/可以获得es的当前的很多信息!
## 删除
DELETE test1
修改_update 0
POST /test1/_doc/1/_update
{
"doc":{
"name":"张三123"
}
查看
GET test2
GET _cat/health
-----------------------查看所有
GET test1/_search
{
"query": {
"match": {
"name": "狂"
}
}
}
-----------------------过滤出只想看的字段
"_source": ["name","age"]
GET test1/_search
{
"query": {
"match": {
"name": "狂"
}
}
, "_source": "name"
}
排序
分页查询
"from":0, 从第几个数据开始
"sie":1 返回多少条数据
FileBeat
简介
为什么使用FileBeat?
日志采集器有很多,比如Logstash,虽然Logstash的功能强大,但是它依赖java并且在数据量大的时候进程会消耗过多的系统资源,会严重影响业务系统的性能。
而filebeat就是一个完美的替代者,它基于Go语言没有任何依赖,配置文件简单。同时,filebeat比logstash更加轻量级,所以占用系统资源极少,非常适合安装在生产机器上。
Filebeat可以直接将数据发送到Elasticsearch、Kafka或者Redis,在那里可以进一步处理和增强数据,然后在Kibana中将其可视化,目前来说Filebeat是 ELK 日志系统在Agent上的第一选择。
Filebeat主要组件
filebeat主要由两个组件构成prospector(探测器)和harvester(收集器),这两类组件一起协作完成Filebeat的工作。
Filebeat的工作流程
当开启Filebeat程序的时候,它会启动一个或多个探测器去检测指定的日志目录或文件。对于探测器找出的每一个日志文件,Filebeat会启动收集进程,每一个收集进程读取一个日志文件的内容,然后将这些日志数据发送到后台处理程序,后台处理程序会集合这些事件,最后发送集合的数据到output指定的目的地。
FileBeat安装与使用
Filebeat基于go语言开发无其他依赖,它最大的特点是性能稳定、配置简单、占用系统资源很少,安装使用也非常简单。
下载
安装
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-linux-x86_64.tar.gz
tar xf filebeat-7.5.1-linux-x86_64.tar.gz
mv filebeat-7.5.1-linux-x86_64 filebeat
FileBeat启停指令
./filebeat -e -c filebeat.yml
ps -ef | grep filebeat
Kill -9 线程号
FileBeat配置文件
FileBeat的配置文件定义了在读取文件的位置,输出流的位置以及相应的性能参数