elk


[目录] | 含义
---|---

ElasticSearch安装与介绍

Elastic Stack简介

如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。所以说,ELK是旧的称呼,Elastic Stack是新的名字。
elk
elk

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快速入门

简介

官网:https://www.elastic.co/

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中的项目全部统一版本号。。

安装与下载

Elasticsearch 官网下载

Elasticsearch 历史版本下载

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下载

kiban官网

历史版本

  • 授权
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"
}

排序
elk

分页查询

"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的配置文件定义了在读取文件的位置,输出流的位置以及相应的性能参数

elk

上一篇:jwplayer-flash播放器


下一篇:创建者模式之单例模式