elasticsearch+logstash+kibana(代码片段)

项羽齐 项羽齐     2022-10-27     438

关键词:

ElasticSearch + Logstash + kibana 

1、介绍:

  Logstash:搬运工

  ElasticSearch:搜索引擎

  Kilbana:可视化系统

 

  

ElasticSearch是基于lucene的搜索框架,它提供了一个分布式多用户能力的全文搜索引擎。

  基于restful web接口

  上手容易,拓展节点方便。

  可用于存储和检索海量数据,接近时实检索,海量数据量增加,搜索性能几乎不受影响。

  分布式搜索框架,副本机制,自动发现节点,保障可用性。

 

阿里云服务器 快速安装ElasticSearch

简介:阿里云ecs介绍,wget命令下载安装包,快速部署 elasticSearch节点

 

linux下使用wget下载jdk8:

进到目录/usr/local/software

  wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"

  vim /etc/profile

加入

  export JAVA_HOME=/usr/local/src/jdk8/jdk1.8.0_141

  export JAVA_BIN=/usr/local/src/jdk8/jdk1.8.0_141

  export PATH=$PATH:$JAVA_HOME/bin

  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  export JAVA_HOME JAVA_BIN PATH CLASSPATH

 

  source /etc/profile  让配置文件马上生效

  使用wget 下载elasticsearch安装包

    wget  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz

  解压

    tar -zxvf elasticsearch-6.2.2.tar.gz

     执行:./elasticsearch 会报错

      

      chmod -R 777 ./

      su - xdclass

 

  curl localhost:9200 linux查看本地服务器

 

 

配置es出现相关问题处理:

1、问题一

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error=\'Cannot allocate memory\' (errno=12)

#

# There is insufficient memory for the Java Runtime Environment to continue.

# Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.

# An error report file with more information is saved as:

# /usr/local/software/temp/elasticsearch-6.2.2/hs_err_pid1912.log

解决:内存不够,购买阿里云的机器可以动态增加内存,至少需要2G内存

 

2、问题二

[root@iZwz95j86y235aroi85ht0Z bin]# ./elasticsearch

[2018-02-22T20:14:04,870][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.2.jar:6.2.2]

at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.2.jar:6.2.2]

at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.2.jar:6.2.2]

at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.2.jar:6.2.2]

解决:用非root用户

  添加用户:useradd -m xiang 

  然后设置密码:passwd  xiang

  给予用户所有权限需要使用root权限来授权:chmod -R 777 ./  (./表示当前目录)

  切换到用户:su - xiang

     /usr/local/src/elasticsearch/elasticsearch-6.2.2

3、问题三

./elasticsearch

Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/software/temp/elasticsearch-6.2.2/config/jvm.options

   解决:权限不够 chmod 777 -R 当前es目录

 

常见配置问题资料:https://www.jianshu.com/p/c5d6ec0f35e0

 

 

 

ElasticSearch目录的基本结构

  核心配置文件:config

    1、elasticsearch.yml

      主配置文件       

        cluster.name:集群名称,同一网段自动加入

        node.name:节点名称

        http.port:http端口

    2、jvm.options  

        虚拟机参数配置文件,配置heap堆一样

    3、log4j2.properties

 

  配置集群:

    复制ElasticSearch文件包启动即可

    注意事项:本地启动多个节点,复制es安装包的时候,需要删除里面data目录里面的资料,不然无法加入集群

  

  ElasticSearch基础概念

    ElasticSearch的index索引,Document文档、副本,分片,多节点等概念。

    通俗的解释

      在ElasticSearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,索引名称必须是小写。

       

    分片shards

      1、数据量特大,没有足够大的硬盘空间来一次性存储,

      2、且一次性搜索那么多的数据,响应跟不上es提供把数据进行分片存储,这样方便进行拓展和提高吞吐

 

    副本replicas

      分片的拷贝,当主分片不可用的时候,副本就充当主分片进行使用

      Elasticsearch中的每个索引分配5个主分片和1个副本

        如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个复制分片(1个完全拷贝),这样每个索引总共就有10个分片。 

    search搜索语句入门之URL搜索

      健康检查

        http://localhost:9200/_cat/health?v

        http://localhost:9201/_cluster/health(推荐

        状态说明

          green:正常

          yellow: 集群正常 数据正常,部分副本不正常

          red: 集群部分正常,数据可能丢失,需要紧急修复

      查询节点列表

        http://localhost:9200/_cat/nodes?v

      查看所有索引

          http://localhost:9200/_cat/indices?v

      补充:

        curl

            -X 指定http的请求方法 有HEAD GET POST PUT DELETE

            -d 指定要传输的数据

            -H 指定http请求头信息

 

      新增索引

        curl -XPUT \'localhost:9201/blog_test?pretty\'

        curl -XPUT \'localhost:9201/blog?pretty\'

      删除索引

        curl -XDELETE \'localhost:9200/blog_test?pretty\'      

      新增一条记录,并指定为article类型,ID1

curl -XPUT -H "Content-Type: application/json" \'localhost:9201/blog/article/2?pretty\' -d \'

  "title": "东邪西毒",
  "content":"我知道那个人不会再来,但我还是在等,我在门口坐了两天两夜"
\'

      ID查询记录

        curl -XGET \'localhost:9201/blog/article/1\'

        curl -XGET \'localhost:9201/blog/article/1?pretty\'(美化推荐)

      搜索

        curl -XGET \'http://localhost:9201/blog/article/_search?q=title:小D\'

 

外网访问ElasticSearch

  1、配置文件:

    修改ElasticSearch配置:elasticsearch.yml

    取消注释并修改为:network.host 0.0.0.0

    修改后会有一些启动错误,可以查看上面链接,或者百度进行解决。

  2、阿里云需要在安全防火墙开放端口

query dsl

        1、Domain Specific Language 领域特定语言

        2、ElasticSearch提供了完整的dsl查询语句,基于json定义查询

        3、用于构造复杂的查询语句

        

curl查询(空格处理不当,会出问题)
curl -XPOST -H "Content-Type: application/json" \'http://localhost:9201/blog/article/_search\' -d \'
    "query" : 
        "term" :  "title" : "" 
    
\'    
bool查询入门   
        
          "query": 
            "bool": 
              "must": [
                 "match":  "title": "elk"  
              ],
              "must_not": [
                 "match":  "title": "小D"  
              ]
            
          
        
filter查询入门(filtered语法已经在5.0版本后移除了,在2.0时候标记过期,改用filter )
    参考地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/query-dsl-filtered-query.html
    
      "query": 
        "bool": 
          "filter": 
            "range": 
              "PV": 
                "gt": 15
              
            
          ,
          "must": 
            "match": 
              "title": "ELK"
            
          
        
      
    

 

  总结:(官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html

    1、大部分filter的速度快于query的速度

    2filter不会计算相关度得分,且结果会有缓存,效率高

    3、全文搜索、评分排序,使用query

    4、是非过滤,精确匹配,使用filter

 

 

    postman工具

 

 

Logstash

  

 

  什么是logstash (文档地址 https://www.elastic.co/guide/en/logstash/current/index.html)

    开源的日志收集引擎,具备实时传输的能力

    读取不同的数据源,并进行过滤,开发者自定义规范输出到目的地

    日志来源多(如系统日志,应用日志,服务器日志等)

 

  流程讲解

    logstash通过管道pipeline进行传输,必选的两个组件是输入input和输出output,还有个可选过滤器filter

    logstash将数据流中等每一条数据称之为一个event,即读取每一行数据的行为叫做事件

    #输入

      input

          ...

      

 

    # 过滤器

      filter

          ...

      

 

    # 输出

      output

          ...

      

 

  下载安装:

    下载地址: https://www.elastic.co/downloads/logstash

    在linux解压即可:

    启动:在bin目录下 ./logstash -e \'input stdin output stdout \'

        启动会有些慢

        需要java8 不支持java9

    

    目录文件说明

      https://www.elastic.co/guide/en/logstash/6.2/dir-layout.html

 

    配置讲解

      https://www.elastic.co/guide/en/logstash/6.2/logstash-settings-file.html

 

      logstash.yml  修改 pipeline.workers,根据CPU核数增加12即可

      jvm.options   修改 xmsxmx为相同,一般是系统内存三份之二

 日志文件输入输出

    简介:讲解Logstash采集日志和输送日志流程测试,包括input,filter和output元素的测试
      bin/logstash -f test1.conf

      ./logstash -f ../config/test1.conf

      codec的使用( Coder/decoder 两个单词首字母缩写)
    Codec: 解码编码 数据格式
      好处 更方便logstash与支持自定义数据格式的运维产品进行使用

      logstash更细化的处理流程
      input->decode->filter->encode->output

 

    1、设置配置文件

input 
         # 从文件读取日志信息 输送到控制台
    file 
        path => "/usr/local/src/elasticsearch/elasticsearch-6.2.2/logs/elasticsearch.log"
        #codec => "json" ## 以JSON格式读取日志
        type => "elasticsearch"
        start_position => "beginning"
        
    

    # filter 
    #
    # 

    output 
        # 标准输出 
        # stdout 
        # 输出进行格式化,采用Ruby库来解析日志   
         stdout  codec => rubydebug 
    


==========================================


输出结果:

          "type" => "elasticsearch",
       "message" => "[2018-03-24T14:39:54,536][INFO ][o.e.g.GatewayService     ] [node-xiang] recovered [2] indices into cluster_state",
          "host" => "iz2ze6bvf2t30pcc1l1jc1z",
          "path" => "/usr/local/src/elasticsearch/elasticsearch-6.2.2/logs/elasticsearch.log",
    "@timestamp" => 2018-03-24T06:39:55.091Z,
      "@version" => "1"
第一种配置

    2、filter使用

      例子
      切割插件mutate,随意输入一串以|分割的字符,比如 "123|000|ttter|sdfds*=123|dfwe

配置二 test2_filter.conf
========================================
        input 
           stdin 
        

        filter   
            mutate   
                split => ["message", "|"]  
              
          

        output 
            # 标准输出 
            # stdout 
            # 输出进行格式化,采用Ruby库来解析日志   
             stdout  codec => rubydebug 
        
========================================


输入结果:
xiang|ning|xiang|wang|ning|n^Hj

      "@version" => "1",
       "message" => [
        [0] "xiang",
        [1] "ning",
        [2] "xiang",
        [3] "wang",
        [4] "ning",
        [5] "n\\bj"
    ],
    "@timestamp" => 2018-03-24T06:55:42.822Z,
          "host" => "iz2ze6bvf2t30pcc1l1jc1z"
filter使用,mutate插件

    3、logstash案例实战之读取日志输出到elasticsearch

    简介:从日志文件中读取日志,输出到elasticsearch集群中

    logstash配置文件

    配置三 test3_es.conf
  

========================================
input 
file 
path => "/Users/jack/Desktop/person/elk/elasticsearch-6.1.1/logs/elasticsearch.log"
type => "elasticsearch"
start_position => "beginning" #从文件开始处读写



output
elasticsearch
hosts=>["127.0.0.1:9201"] 
index => "es-message-%+YYYY.MM.dd"

stdoutcodec => rubydebug

========================================

验证
查看索引列表 http://localhost:9201/_cat/indices?v
查看数据 http://localhost:9201/es-message-2018.02.26/_search
采集ElasticSearch日志到ElasticSearch数据库

  

  

Kibana可视化工具

  下载及安装:wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz

    解压 tar -zxvf kibana-6.2.2-linux-x86_64.tar.gz

 

  访问地址

    本机:localhost:5601

    阿里云机器:http://120.79.160.143:5601

 

  阿里云外网访问

    开放端口,修改配置文件 confing目录下的kibana.yml

    server.host: "0.0.0.0"

 

  守护进程后台启动

    nohup  XXX  &

     tail - f nohup.out

 

  kibana基本介绍、和elasticSearch版本兼容问题     

    简介:讲解什么是kibana,目录文件讲解,配置等
    官网文档地址:https://www.elastic.co/guide/en/kibana/current/setup.html
    ELK   

    注意事项

    1、kibana和elsticserch版本不能差别大,否则无法正常使用 比如 Kibana 6.x 和 Elasticsearch 2.x不能正常使用
    2、运行比Kibana更高版本的Elasticsearch通常可以工作 例如Kibana 5.0和Elasticsearch 5.1
    3、小版本差异会有一些警告出现,除非两者升级到相同的版本

  windows下安装启动文档
    https://www.elastic.co/guide/en/kibana/current/windows.html

    kibana.yml常见配置项
    elasticsearch.pingTimeout 日常用的ping
    elasticsearch.requestTimeout 读取es的超时时间
    elasticsearch.url es主机地址
    elasticsearch.username es鉴权的用户名
    elasticsearch.password es鉴权的密码

 

  kibana面板讲解和功能使用说明

    简介:讲解kibana的web界面,各个模块划分,功能的基本使用

    kibana状态及服务器资源使用率
    http://120.79.160.143:5601/status


  基础操作文档:https://www.elastic.co/guide/en/kibana/current/getting-started.html

    1、创建索引表达式
    使用*统配符,去匹配ES中的一个或多个索引(如果没有匹配,无法点击下一步)

    2、discover面板发现数据
    可以指定时间进行查询
    可以使显示的字段
    查询索引的数据,可以使用lucence语法进行查询

 

 

  项目实战系列之《采集业务应用日志》配置
    简介:选择日志源,配置logstash采集并输送到elasticSeach

    常见问题解决
    1、JVM内存溢出导致的 ES或者Logstash服务启不来,报错 insufficient memory
      解决:升级机器的内存和CPU;
      或者改elasticSeach和logstash的JVM.option,最大堆内存xmx和初始堆内存xms


    2、ES启动报错
      seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed

    修改elasticsearch.yml 添加一下内容
      bootstrap.memory_lock: false 为了避免内存和磁盘之间的swap
      bootstrap.system_call_filter: false

    3、ERROR: bootstrap checks failed
      max virtual memory areas vm.max_map_count [65530] is too low, increase to at least

    临时设置:sudo sysctl -w vm.max_map_count=262144
    永久修改:
      修改/etc/sysctl.conf 文件,添加 “vm.max_map_count”设置
      并执行:sysctl -p

 

    项目实战系列之Kibana图形、报表分析
      简介:讲解业务应用日志在Kibana上的可视化分析,柱状图,饼状图等

    官方文档地址:
      https://www.elastic.co/guide/en/kibana/current/tutorial-load-dataset.html


    下载数据集
      wget https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip
    解压 unzip accounts.zip

    导入数据到es中
      curl -H \'Content-Type: application/x-ndjson\' -XPOST \'localhost:9201/bank/account/_bulk?pretty\' --data-binary @accounts.json


    示例地址
      https://www.elastic.co/guide/en/kibana/current/tutorial-visualizing.html

 

 

logstash上报数据到elasticsearch(代码片段)

logstash上报数据到elasticsearch前提是已经安装、部署完logstash和elasticsearchWindows安装启动logstash_zhangphil的博客-CSDN博客_logstashwindows安装Windows安装启动logstash(1)下载logstash,下载链接:DownloadLogstashFree|GetStartedN 查看详情

用elasticsearch,logstash,kibana搭建实时日志收集系统

用ElasticSearch,LogStash,Kibana搭建实时日志收集系统介绍这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中。kibana负责查询elasticsearch并在web中展示。logstash收集进程收获日志文件内容后,先输出到redis中... 查看详情

elasticsearch+logstash+kibana(代码片段)

ElasticSearch+Logstash+kibana 1、介绍:  Logstash:搬运工  ElasticSearch:搜索引擎  Kilbana:可视化系统   ElasticSearch是基于lucene的搜索框架,它提供了一个分布式多用户能力的全文搜索引擎。  基于restfulweb接口  上... 查看详情

logstash:如何配置metricbeat及logstash为elasticsearch8.x收集数据

如何配置Metricbeat及Logstash为Elasticsearch8.0收集数据如何配置Metricbeat及Logstash为Elasticsearch8.0收集数据_哔哩哔哩_bilibili 查看详情

使用logstash同步数据至elasticsearch,springboot中集成elasticsearch实现搜索

安装logstash、同步数据至ElasticSearch为什么使用logstash来同步,CSDN上有一篇文章简要的分析了以下几种同步工具的优缺点:https://blog.csdn.net/laoyang360/article/details/51694519。下面开始实践:  1.下载Logstash安装包,需要注意版本与elast... 查看详情

读取 Logstash 日志但不会推送到 elasticsearch

】读取Logstash日志但不会推送到elasticsearch【英文标题】:Logstashlogsarereadbutarenotpushedtoelasticsearch【发布时间】:2019-12-0312:10:20【问题描述】:我有以下logstash配置:inputfilecodec=>"json_lines"path=>["/etc/logstash/input.log"]sincedb_path=>" 查看详情

filebeat+logstash+elasticsearch+granfa(代码片段)

filebeat+logstash+elasticsearch+granfahttps://www.cnblogs.com/wenchengxiaopenyou/p/9034213.html一。背景前端web服务器为nginx,采用filebeat+logstash+elasticsearch+granfa进行数据采集与展示,对客户端ip进行地域统计,监控服务器响应时间等。二。业务整体架... 查看详情

filebeat+logstash+elasticsearch收集haproxy日志

...,传输到kafka,在用logstash从消息队列中抓取日志存储到elasticsearch中。但是在5.5版本中,使用filebeat收集日志,减少对客户机的性能影响,filebeat收集日志传输到logstash的5044端口,logstash接收日志,然后传输 查看详情

如何在elasticsearch中查看logstash打到elasticsearch的数据

 #catsyslog02.conf#filename:syslog02.conf#注意这个是要用#号注释掉input{file{path=>["/var/log/*.log"]}}output{elasticsearch{hosts=>["12x.xx.15.1xx:9200"]}}查看配置文件是否有问题:#../bin/logstash-fsyslog02.conf-tS 查看详情

elasticsearch+logstash+kibana搭建教程

#ELK:Elasticsearch+Logstash+Kibana搭建教程Shipper:日志收集者。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来,输出到Redis暂存。Indexer:日志存储者。负责从Redis接收日志,写入到本地文件。Broker:日志Hub,用来... 查看详情

logstash导入数据到elasticsearch

一:在Windows环境  1下载解压Logstash的压缩包     2将oracle的驱动放入Logstash的解压包中     3在Logstash的包中创建jdbc.conf     4整理sql语句在一个文件下  &nb 查看详情

elasticsearch数据库同步插件logstash

   1.下载和elasticsearch相同版本的logstash.  2.进行解压后,进入bin下,新建一个文件mysql.conf,并输入inputstdinoutputstdout3.cmd进入bin下,输入logstash-fmysql.conf 启动后,输入  http://127.0.0.1:9600/4.ok;说明已经启动了   查看详情

Logstash 将所有内容放入所有 Elasticsearch 索引中

】Logstash将所有内容放入所有Elasticsearch索引中【英文标题】:LogstashputseverythingintoallElasticsearchindexes【发布时间】:2017-05-1007:32:05【问题描述】:我在/etc/logstash/conf.d下有4个文件。这4个文件用于读取tomcat的日志和apache的日志,监... 查看详情

logstash同步mysql数据到elasticsearch(代码片段)

目录1MySql数据到Elasticsearch1.1下载logstash1.2解压logstash1.3在logstash目录创建mysql文件夹1.4将mysql驱动文件和数据库查询文件放进mysql中1.5在config目录下创建mysqltoes.conf文件1.6mysqltoes.conf配置1.7启动logstash2配置语法讲解3启动方式4filebeat基... 查看详情

震惊全网的elk日志分析系统(齐全详细理论+搭建步骤图释)(代码片段)

...、前言概述与基础理论1.1ELK系统简介1.2ELK日志工作原理1.3Elasticsearch、Logstash、Kibana详细介绍1.3.1Elasticsearch1.3.2Logstash1.3.3Kibana二、ELK日志分析系统搭建2.1实验环境2.2部署Elasticsearch软件(node1和node2都需部署)2.3安装elasticsearc... 查看详情

从 Logstash 在 Elasticsearch 上使用 geopoint

】从Logstash在Elasticsearch上使用geopoint【英文标题】:UsinggeopointonElasticsearchfromLogstash【发布时间】:2019-04-2113:29:46【问题描述】:我想在docker的elk堆栈中使用geoip。根据这个文档,我添加了配置https://www.elastic.co/blog/geoip-in-the-elastic-... 查看详情

logstash+kibana+多elasticsearch集群部署(代码片段)

ELK原理与介绍?ELK是三个开源软件的缩写,分别表示:Elasticsearch,Logstash,Kibana,它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash... 查看详情

Logstash 拆分日志并单独插入到elasticsearch中

】Logstash拆分日志并单独插入到elasticsearch中【英文标题】:Logstashsplitlogandinsertitseparatelyintoelasticsearch【发布时间】:2021-09-1405:55:54【问题描述】:我正在编写一个logstash配置文件,而我收到的一个日志给我带来了问题,团队向我... 查看详情