精华内容
下载资源
问答
  • elk部署
    千次阅读
    2022-03-31 15:36:56

    无聊发发最近玩的ELK

    elasticsearch

    首先部署elasticsearch,目前为止我用的是比较新的版本(7.1.0)

    官网下载elasticsearch,解压运行

    看下配置问题,默认是./config/elasticsearch.yml,仔细看看里面有个日志目录和数据目录需要改一下,和自己添加目录。

    新建用户,切换用户。

    运行命令

    ./bin/elasticsearch
    ./bin/elasticsearch -d # 后台运行

    如果在centos中运行,会遇到各种跟系统配置冲突的问题。如vm.max_map_count,改系统文件就行了,不用重启。

    启动好了,记得测试下

    访问 127.0.0.1:9200,应该会出现如下结果,如果不是,应该就是没启动成功,或者其他问题了

    kibana

    版本和elasticsearch版本一致,不多介绍,目前没用到多少。默认端口5601

    logstash

    版本和elasticsearch版本一致。主要进行数据分词,在elasticsearch添加索引,给elasticsearch输入数据。logstash插件很多,但是运行时占用内存高,一般不部署在每个机器上直接监听日志文件输出。

    运行命令:先启动elasticsearch

    ./bin/logstash -f ./config/logstash_test.conf

     指定配置文件./config/lostash_test.conf运行,配置内容主要有下面三个

    # 输入
    input {
      redis {
            host => "127.0.0.1"
            port => 6379
            # password => "123456" # redis密码,没有密码就不需要这个参数 
            key => "apilog" #这里的key值和filebeat配置文件中output.redis的key值保持一致
            data_type => "list"
            db =>1
        }
    }
    # 过滤,在这里进行分词,[fields][filetype]和filebeat中的一致
    filter {
        if [fields][filetype] == "apiweb_producelog" {
          json {
            source => "message"
            remove_field => ["_type","beat","offset","tags","prospector"] #移除字段,不需要采集
          }
          date {
            match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] #匹配timestamp字段
            target => "@timestamp"  #将匹配到的数据写到@timestamp字段中
          }
        }
    }
    
    # 输出,最后一个是加上时间,按日期对日志进行分开收集
    output {
        # 输出到 Elasticsearch,根据filebeat中配置的filetype,在ES中建立不同的索引
        if [fields][filetype] == "apiweb_producelog" {
            elasticsearch {
                # Elasticsearch 地址
                hosts => ["localhost:9200"]
                # Elasticsearch 索引名
                index => "producelog"
            }
        } else if [fields][filetype] == "apiweb_supplierlog" {
            elasticsearch {
                hosts => ["localhost:9200"]
                index => "supplierlog"
            }
        } else {
            elasticsearch {
                hosts => ["localhost:9200"]
                index => "apilog-%{+YYYY.MM.dd}"
            }
        }
    }
    

    filebeats

    简单的收集器,具有占用内存小,方便部署等优势,因此作为部署在每台服务器上的日志收集器。

    将filebeats收集到的数据输出到redis中,当然也可输出到kafka等MQ中,进行缓冲和数据容灾机制处理。

    运行命令:

    .\filebeat -e -c filebeat.yml

    同样是指定filebeat.yml配置文件进行运行。

    filebeat.yml如下

    # ============================== Filebeat 输入配置==============================
    filebeat.inputs:
    - type: log
      enabled: true
      # 每 5 秒检测一次文件是否有新的一行内容需要读取
      backoff: "5s"
      # 是否从文件末尾开始读取
      tail_files: false
      # 需要收集的数据所在的目录
      paths:
        - /Log/2021/*.log
      # 自定义字段,在logstash中会根据该字段来在ES中建立不同的索引
      fields:
        filetype: apiweb_producelog 
        # logstash配置文件中的[fields][filetype]一致
    
    # 这里是收集的第二个数据,多个依次往下添加
    - type: log
      enabled: true
      backoff: "5s"
      tail_files: false
      paths:
        - /home/openweb/Logs/Warn/*.log
      fields:
        filetype: apiweb_supplierlog
    
    # ============================== Filebeat modules ==============================
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    
    setup.template.settings:
      index.number_of_shards: 1
    
    setup.kibana:
    
    # ============================== Filebeat 输出配置====================
    output.redis:
      enabled: true
      # redis地址
      hosts: ["192.168.1.103:6379"]
      # redis密码,没有密码则不添加该配置项
      password: 123456
      # 数据存储到redis的key值
      key: apilog
      # 数据存储到redis的第几个库
      db: 1
      # 数据存储类型
      datatype: list
    
    # ================================= Processors =================================
    # 猜测和运行环境有关,没有测试过
    #processors:
    #  - add_host_metadata:
    #      when.not.contains.tags: forwarded
    #  - add_cloud_metadata: ~
    #  - add_docker_metadata: ~
    #  - add_kubernetes_metadata: ~

    因此,整体部署架构如下:

     盗的图,参考别人博客部署的,并亲自实践成功的一个ELK部署。

    参考博客:filebeat+redis+elk构建多服务器日志收集系统配置文件说明 - JcongJason - 博客园

    更多相关内容
  • ELK部署中文指南.

    2018-03-25 16:21:57
    ELK部署中文指南.pdf》 《ELK部署中文指南.pdf》 《ELK部署中文指南.pdf》
  • 世上最全ELK部署文档,包含目录. 细节个项目.堪比教科书,从centos->Elasticsearch->Kibana->Logstash->Filebeat->topbeat
  • ELK部署以及使用

    千次阅读 2022-04-12 23:10:30
    ELK部署以及使用 ELK实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。 ELK部署 Docker docker是目前...

    ELK部署以及使用

    ELK实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形成了一套实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。

    ELK部署

    Docker

    docker是目前非常流行的容器化技术,可以非常方便快捷的部署服务,解决项目部署时的环境问题,实现“一次封装,到处运行”,我们采用docker可以快速的部署ELK。

    Docker-compose

    Docker Compose是一个用于定义和运行多个docker容器应用的工具,可以很方便的管理和编排容器。

    ELK部署
    • 下载Docker-compose

      curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
      
    • 修改文件权限

      chmod +x /usr/local/bin/docker-compose
      
    • 检查docker-compose是否安装成功

      docker-compose --version
      
    • 编写docker-compose.yml脚本

      version: '3'
      services:
        elasticsearch:
          image: elasticsearch:6.4.0
          container_name: elasticsearch
          environment:
            - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
            - "discovery.type=single-node" #以单一节点模式启动
            - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
            - TZ=Asia/Shanghai
          volumes:
            - /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
            - /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
          ports:
            - 9200:9200
            - 9300:9300
        kibana:
          image: kibana:6.4.0
          container_name: kibana
          links:
            - elasticsearch:es #可以用es这个域名访问elasticsearch服务
          depends_on:
            - elasticsearch #kibana在elasticsearch启动之后再启动
          environment:
            - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
            - TZ=Asia/Shanghai
          ports:
            - 5601:5601
        logstash:
          image: logstash:6.4.0
          container_name: logstash
          environment:
            - TZ=Asia/Shanghai
          volumes:
            - /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
          depends_on:
            - elasticsearch #kibana在elasticsearch启动之后再启动
          links:
            - elasticsearch:es #可以用es这个域名访问elasticsearch服务
          ports:
            - 4560:4560
            - 4561:4561
            - 4562:4562
            - 4563:4563
      
    • 创建容器挂载路径

      mkdir /mydata/elasticsearch/plugins
      mkdir /mydata/elasticsearch/data
      mkdir /mydata/logstash
      
      # 修改路径权限
      chmod 777 -R /mydata
      
    • 编写/mydata/logstash/logstash.conf文件

      input {
        tcp {
          mode => "server"
          host => "0.0.0.0"
          port => 4560
          codec => json_lines
          type => "debug"
        }
        tcp {
          mode => "server"
          host => "0.0.0.0"
          port => 4561
          codec => json_lines
          type => "error"
        }
        tcp {
          mode => "server"
          host => "0.0.0.0"
          port => 4562
          codec => json_lines
          type => "business"
        }
        tcp {
          mode => "server"
          host => "0.0.0.0"
          port => 4563
          codec => json_lines
          type => "record"
        }
      }
      filter{
        if [type] == "record" {
          mutate {
            remove_field => "port"
            remove_field => "host"
            remove_field => "@version"
          }
          json {
            source => "message"
            remove_field => ["message"]
          }
        }
      }
      output {
        elasticsearch {
          hosts => ["es:9200"]
          action => "index"
          codec => json
          index => "mall-tiny-%{type}-%{+YYYY.MM.dd}"
          template_name => "mall-tiny"
        }
      }
      
    • 创建容器

      在docker-compose.yml脚本所在目录下执行命令:

      docker-compose -f docker-compose.yml up -d
      

      检查容器是否启动成功

      # 显示所有已启动的容器
      docker ps
      
    • 安装Logstash的json_lines插件

      # 进入logstash容器内部
      docker exec -it logstash bash
      # 安装json_lines插件
      logstash-plugin install logstash-codec-json_lines
      
    • 访问kibana

      访问网址http://192.168.56.102:5601,改成服务器的IP,如果能访问到kibana界面,表示环境已部署成功。

    Spring Boot整合ELK

    • 创建SpringBoot项目

    • pom.xml文件中加入logstash依赖

      <!--集成logstash-->
      <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>5.3</version>
      </dependency>
      
    • 在resource目录下添加logback-spring.xml日志配置文件

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE configuration>
      <configuration>
          <!--引用默认日志配置-->
          <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
          <!--使用默认的控制台日志输出实现-->
          <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
          <!--应用名称-->
          <springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="springBoot"/>
          <!--日志文件保存路径-->
          <property name="LOG_FILE_PATH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>
          <!--LogStash访问host-->
          <springProperty name="LOG_STASH_HOST" scope="context" source="logstash.host" defaultValue="localhost"/>
      
          <!--DEBUG日志输出到LogStash-->
          <appender name="LOG_STASH_DEBUG" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
              <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                  <level>DEBUG</level>
              </filter>
              <destination>${LOG_STASH_HOST}:4560</destination>
              <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
                  <providers>
                      <timestamp>
                          <timeZone>Asia/Shanghai</timeZone>
                      </timestamp>
                      <!--自定义日志输出格式-->
                      <pattern>
                          <pattern>
                              {
                              "project": "mall-tiny",
                              "level": "%level",
                              "service": "${APP_NAME:-}",
                              "pid": "${PID:-}",
                              "thread": "%thread",
                              "class": "%logger",
                              "message": "%message",
                              "stack_trace": "%exception{20}"
                              }
                          </pattern>
                      </pattern>
                  </providers>
              </encoder>
              <!--当有多个LogStash服务时,设置访问策略为轮询-->
              <connectionStrategy>
                  <roundRobin>
                      <connectionTTL>5 minutes</connectionTTL>
                  </roundRobin>
              </connectionStrategy>
          </appender>
      
          <!--ERROR日志输出到LogStash-->
          <appender name="LOG_STASH_ERROR" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
              <filter class="ch.qos.logback.classic.filter.LevelFilter">
                  <level>ERROR</level>
                  <onMatch>ACCEPT</onMatch>
                  <onMismatch>DENY</onMismatch>
              </filter>
              <destination>${LOG_STASH_HOST}:4561</destination>
              <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
                  <providers>
                      <timestamp>
                          <timeZone>Asia/Shanghai</timeZone>
                      </timestamp>
                      <!--自定义日志输出格式-->
                      <pattern>
                          <pattern>
                              {
                              "project": "mall-tiny",
                              "level": "%level",
                              "service": "${APP_NAME:-}",
                              "pid": "${PID:-}",
                              "thread": "%thread",
                              "class": "%logger",
                              "message": "%message",
                              "stack_trace": "%exception{20}"
                              }
                          </pattern>
                      </pattern>
                  </providers>
              </encoder>
              <!--当有多个LogStash服务时,设置访问策略为轮询-->
              <connectionStrategy>
                  <roundRobin>
                      <connectionTTL>5 minutes</connectionTTL>
                  </roundRobin>
              </connectionStrategy>
          </appender>
      
          <!--业务日志输出到LogStash-->
          <appender name="LOG_STASH_BUSINESS" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
              <destination>${LOG_STASH_HOST}:4562</destination>
              <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
                  <providers>
                      <timestamp>
                          <timeZone>Asia/Shanghai</timeZone>
                      </timestamp>
                      <!--自定义日志输出格式-->
                      <pattern>
                          <pattern>
                              {
                              "project": "mall-tiny",
                              "level": "%level",
                              "service": "${APP_NAME:-}",
                              "pid": "${PID:-}",
                              "thread": "%thread",
                              "class": "%logger",
                              "message": "%message",
                              "stack_trace": "%exception{20}"
                              }
                          </pattern>
                      </pattern>
                  </providers>
              </encoder>
              <!--当有多个LogStash服务时,设置访问策略为轮询-->
              <connectionStrategy>
                  <roundRobin>
                      <connectionTTL>5 minutes</connectionTTL>
                  </roundRobin>
              </connectionStrategy>
          </appender>
      
          <!--接口访问记录日志输出到LogStash-->
          <appender name="LOG_STASH_RECORD" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
              <destination>${LOG_STASH_HOST}:4563</destination>
              <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
                  <providers>
                      <timestamp>
                          <timeZone>Asia/Shanghai</timeZone>
                      </timestamp>
                      <!--自定义日志输出格式-->
                      <pattern>
                          <pattern>
                              {
                              "project": "mall-tiny",
                              "level": "%level",
                              "service": "${APP_NAME:-}",
                              "class": "%logger",
                              "message": "%message"
                              }
                          </pattern>
                      </pattern>
                  </providers>
              </encoder>
              <!--当有多个LogStash服务时,设置访问策略为轮询-->
              <connectionStrategy>
                  <roundRobin>
                      <connectionTTL>5 minutes</connectionTTL>
                  </roundRobin>
              </connectionStrategy>
          </appender>
      
          <!--控制框架输出日志-->
          <logger name="org.slf4j" level="INFO"/>
          <logger name="springfox" level="INFO"/>
          <logger name="io.swagger" level="INFO"/>
          <logger name="org.springframework" level="INFO"/>
          <logger name="org.hibernate.validator" level="INFO"/>
      
          <root level="DEBUG">
              <appender-ref ref="CONSOLE"/>
              <appender-ref ref="LOG_STASH_DEBUG"/>
              <appender-ref ref="LOG_STASH_ERROR"/>
          </root>
      
          <logger name="com.shuguangtj.efk.component" level="DEBUG">
              <appender-ref ref="LOG_STASH_RECORD"/>
          </logger>
      
          <logger name="com.shuguangtj.efk" level="DEBUG">
              <appender-ref ref="LOG_STASH_BUSINESS"/>
          </logger>
      </configuration>
      

      pattern中定义的字段会对应ES中日志index的字段

    • application.yml配置

      logstash:
        host: 192.168.56.102 # ELK所在服务的IP
      logging:
        level:
          root: debug
      
    • 启动项目,并在项目中输出日志

      @GetMapping(value = "/sayHello")
      public String sayHello() {
        LOG.debug("debug hello");
        LOG.info("info hello");
        LOG.warn("warning hello");
        LOG.error("error hello");
      
        throw new RuntimeException("system error");
      }
      

    使用ELK

    • 进入kibana界面

      访问http://192.168.56.102:5601
      在这里插入图片描述

    • 创建index Pattern

      如果ELK环境搭建成功了,可以看到logstash已经将项目日志传输到ES了

      在这里插入图片描述

      创建index pattern,index pattern就是ES的索引(index),ES中的每个索引对应一个日志文件
      在这里插入图片描述

    • 查看日志

      可以根据上面创建的index pattern进行过滤
      在这里插入图片描述

      可以看到,在logback-spring.xml文件中的pattern中定义的字段,都映射到ES的index中了

      <pattern>
        {
          "project": "mall-tiny",
          "level": "%level",
          "service": "${APP_NAME:-}",
          "class": "%logger",
          "message": "%message"
        }
      </pattern>
      

      也可以指定过滤条件,注意AND要大写

      在这里插入图片描述

      还可以设置搜索提示
      在这里插入图片描述

      再输入检索条件时会出现提示
      在这里插入图片描述

      还可以指定显示的字段
      在这里插入图片描述

      还可以对日志进行管理
      在这里插入图片描述
      在这里插入图片描述

      暂时还没找到怎么下载日志文件,可以在kibana中对日志进行检索,找到对应的index(日志文件名)之后到部署项目的服务器上下载日志文件(前提是日志有输出到日志文件中)

      如果不想使用kibana提供的日志检索工具,也可以直接写ES查询语句对日志进行检索

      在这里插入图片描述

    展开全文
  • ELK部署文档.pdf

    2019-05-31 17:45:08
    最新的elk7.1.1安装文档,es集群安装配置,kibana安装及汉化配置,filebeat和logstash安装,在各色的文档中排坑中走出,此为新手最值得拥有的文档。 系统为linux7.6 安装包为tar包。
  • elk 部署全过程详细

    千次阅读 2022-06-03 18:55:31
    elk完整部署文档编写超详细

    环境配置要求:

    组件安装包软件名称与版本功能
    Java程序编译运行组件JDK 1.8.0_211程序编译运行组件
    elasticsearch7.1.1日志存储
    ik7.1.1ik分词器
    kibana7.1.1日志数据图形化展示
    logstash7.1.1日志处理
    filebeat7.1.1日志采集

    注:elasticsearch、logstash、kibana、filebeat、ik安装的版本号必须全部一致。
    .

    一. 安装elasticsearch

    1. 创建es安装路径
    mkdir -p /data/nusp/es/{data,logs}
    
    1. 创建esUser用户
    useradd esUser
    chown -R esUser:esGroup /data/nusp/es
    
    1. root权限编辑
      vim配置文件/etc/security/limits.conf,最后面添加以下四行数据
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 65536
    * hard nproc 65536
    
    1. vim配置文件/etc/sysctl.conf,加入以下内容
    vm.overcommit_memory = 1 
    vm.max_map_count=655360
    
    1. 执行sysctl -p使配置生效
    sysctl -p
    
    1. 上传es安装包到es目录下,并解压
    cd /data/nusp/es
    tar -zxvf elasticsearch-7.1.1-linux-x86_64.tar.gz
    
    1. 修改配置文件,进入es安装目录config目录下,修改elasticsearch.yml文件
    vim /data/nusp/es/elasticsearch-7.1.1/config/elasticsearch.yml
    
    
    cluster.name: elkbdp-cluster #集群名称
    node.name: elk    	  #节点名称
    cluster.initial_master_nodes: ["elk"] #主节点信息
    path.data: /data/nusp/es/data       #数据存放路径
    path.logs: /data/nusp/es/logs       #日志存放路径
    bootstrap.memory_lock: false   
    bootstrap.system_call_filter: false
    network.host: 0.0.0.0				#所有ip可以访问,
    discovery.seed_hosts: ["192.168.11.11","192.168.11.12","192.168.11.13"] #输出至elasticsearch服务器
    discovery.zen.minimum_master_nodes: 2 	#最多有几个可参与主节点选举
    http.cors.enabled: true
    http.max_initial_line_length: "1024k"
    http.max_header_size: "1024k"
    
    1. 修改jvm.options文件
    cd /data/nusp/es/elasticsearch-7.1.1/config/
    vim jvm.options
    
    -Xms4g
    -Xmx4g
    
    1. ik分词器安装
      将准备好的ik分词器安装包解压后将文件复制到 es的安装目录/plugins/ik下面即可,没有目录则自行创建目录,目录文件夹下不能有其他东西。

    2. 启动es服务,进入es的安装目录/bin下执行(后台启动,无任何错误表示启动完成,此时通过访问http://ip:9200即可)。

    ./elasticsearch -d
    
    1. 测试es服务,在浏览器中输入http://ip:9200回车,启动成功就会显示如下页面。

    在这里插入图片描述
    .

    二. 配置 TLS 和身份验证

    以下步骤在一台master上执行即可

    1. 生成CA证书
    cd /data/nusp/es/elasticsearch-7.1.1/bin
    
    ./elasticsearch-certutil ca		# 两次回车
    ./elasticsearch-certutil cert --ca elastic-stack-ca.p12		# 三次回车
    
    1. 赋予权限(并把证书文件 elastic-certificates.p12 复制到其他master节点并赋予权限)。
    mkdir /data/nusp/es/elasticsearch-7.1.1/config/certs
    mv elastic-*.p12 config/certs/
    chown -R elsearch:elsearch config/certs/
    
    1. 修改配置文件(将所有master配置文件添加ssl)
    vim /data/nusp/es/elasticsearch-7.1.1/config/elasticsearch.yml
    
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.verification_mode: certificate		# 证书认证级别
    xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
    xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
    
    1. 重启 elasticsearch
    kill -9 10086
    ./elasticsearch -d
    
    1. 设置默认密码(输入y,分别设置 elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user账号的密码,我这里为了方便都输入统一密码10086)
    bin/elasticsearch-setup-passwords interactive
    
    1. 配置kibana,修改 kibana.yml 文件,加入用户名和密码参数(参照以下内容)
      .

    三. 安装Kibana

    1. 上传es安装包到es目录下,并解压
    cd /data/nusp/es
    tar -zxvf kibana-7.1.1-linux-x86_64.tar.gz
    
    1. 修改Kibana配置文件,添加以下内容
    vim /data/nusp/es/kibana-7.1.1-linux-x86_64/config/kibana.yml
    
    server.port: 5601	#修改绑定ip,使外部可以通过http访问
    server.host: "0.0.0.0"	##监听端口,可以不修改
    elasticsearch.hosts: ["192.168.11.11","192.168.11.12","192.168.11.13"]
    elasticsearch.username: "kibana"
    elasticsearch.password: "10086"
    
    1. 启动kibana服务
     ./bin/kibana &
    
    1. 通过浏览器访问http://192.168.11.11:5601验证。
      在这里插入图片描述

    2. 登录后顺带验证刚才安装的分词器

    POST /_analyze
    {
      "text": "我是中国人"
    }
    Ik分词器验证脚本
    POST /_analyze
    {
      "analyzer": "ik_max_word",
      "text": "我是中国人"
    }
    

    在这里插入图片描述
    .
    在这里插入图片描述

    .

    四. 安装logstast

    1. 解压安装包,并授权安装目录
    cd /data/nusp/es
    tar -xzvf logstash-7.1.1.tar.gz
    chown -R esUser:esUser logstash-7.1.1
    
    1. 修改logstash配置文件,在logstash-7.1.1目录下创建pipeline。
      将logstash-sample.conf文件拷贝到pipeline该文件夹下,修改logstash-sample.conf中output中elasticsearch的地址。
    cd /data/nusp/es/logstash-7.1.1/pipeline
    mv /data/nusp/es/logstash-7.1.1/config/logstash-sample.conf .
    vim logstash-sample.conf
    
    input {
      beats {
        port => 5044
      }
    }
    
    filter {
    }
    
    output {
    	elasticsearch {
    	hosts => ["192.168.11.11","192.168.11.12","192.168.11.13"]	
    	index => "logstash-dev-%{+YYYY.MM.dd}"
    	user => "elastic"
    	password => "10086"
    }
    	stdout { codec => rubydebug }
    }
    
    1. 启动logstash服务,必须esUser用户下执行启动命令
    su - esUser
    cd /data/nusp/es/logstash-7.1.1/
    ./bin/logstash -f ./pipeline/logstash-gn.conf > /dev/null &
    
    1. 验证是否正常运行
    cd /data/nusp/es/logstash-7.1.1/logs
    tail -f logstash-plain.log
    

    .

    五. 安装filebeat

    Filebeat部署在需要采集日志的节点上(如k8s中的master和node节点),由于当前收集的是root用户下的日志,因此filebeat在root用户下安装,否则需要用户具备对/var/log/messages文件以及/var/log/podlog目录的读取权限。

    1. 创建安装目录,上传并解压安装包
     mkdir /data/nusp/es
    
    1. 解压安装包并重名为filebeat-7.1.1-host
     tar xzvf filebeat-7.1.1-linux-x86_64.tar.gz
     mv filebeat-7.1.1-linux-x86_64 filebeat-7.1.1-host
    
    1. 解压安装包并重名为filebeat-7.1.1-pod
    tar xzvf filebeat-7.1.1-linux-x86_64.tar.gz
    mv filebeat-7.1.1-linux-x86_64 filebeat-7.1.1-pod
    
    1. 修改filebeat配置文件,将配置文件filebeat-nusplog.yml拷贝到/data/nusp/es/filebeat-7.1.1-pod目录下。将filebeat-hostlog.yml文件拷贝到/data/nusp/es/filebeat-7.1.1-host目录下,注意修改文件中logstash的地址和端口信息,与logstash保持一致,修改如下。
      在这里插入图片描述

    2. 启动filebeat服务并添加权限
      这里启动了两个filebeat是因为有两个logstash,如果是一个logstash,启动一个filebeat就可以呢

    cd /data/nusp/es/filebeat-7.1.1-host/
    chmod 644  filebeat-hostlog.yml
    ./filebeat -e -c filebeat-hostlog.yml -d publish &
    cd /data/nusp/es/filebeat-7.1.1-pod/
    chmod 644  filebeat-nusplog.yml
    ./filebeat -e -c filebeat-nusplog.yml -d publish &
    

    整个流程即为 filebeat采集/var/log/messages和/var/log/podlog目录下的日志数据传输给logstash,logstash接收到数据后经过解析将数据发送给ES集群。

    后续如果新增filebeat,则需要在filebeat配置文件中配置logstash地址,logstash配置文件中配置es集群的地址。

    好了,elk的部署就到这里了,是不是很简单呢 (ง •̀_•́ง)

    展开全文
  • 基于Docker的ELK部署

    2022-06-21 17:02:27
    基于docker的ELK部署 elasticsearch简介 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、 分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在...

    基于docker的ELK部署

    elasticsearch简介

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、
    分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch
    的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将
    对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打
    分,再将返回结果呈现给用户。

    中文文档:

    https://learnku.com/docs/elasticsearch73/7.3
    

    参考文档:

    https://www.kancloud.cn/yiyanan/elasticsearch_7_6/1651637
    

    应用场景

    • 电商网站海量的商品搜索
    • ELK日志数据分析
    • 站内搜索(电商,招聘,门户,等等)
    • 数据分析(ES热门的一个使用场景)

    es的功能

    • 分布式的搜索引擎和数据分析引擎
    • 全文检索,结构化检索,数据分析
    • 对海量数据进行近实时的处理

    es的特点

    • 大型分布式集群
    • 功能强大
    • 部署简单
    • 能够替代数据库的不足之处

    倒排索引

    在搜索引擎中,每个文档都有一个对应的文档 ID,文档内容被表示为一系列关键词的集合。例如,文档 1 经过分词,提取了 20 个关键词,每个关键词都会记录它在文档中出现的次数和出现位置。

    那么,倒排索引就是关键词到文档 ID 的映射,每个关键词都对应着一系列的文件,这些文件中都出现了关键词。

    DocIdDoc
    1谷歌地图之父跳槽 Facebook
    2谷歌地图之父加盟 Facebook
    3谷歌地图创始人拉斯离开谷歌加盟 Facebook
    4谷歌地图之父跳槽 Facebook 与 Wave 项目取消有关
    5谷歌地图之父拉斯加盟社交网站 Facebook

    倒排索引

    WordIdWordDocIds
    1谷歌1, 2, 3, 4, 5
    2地图1, 2, 3, 4, 5
    3之父1, 2, 4, 5
    4跳槽1, 4
    5Facebook1, 2, 3, 4, 5
    6加盟2, 3, 5
    7创始人3
    8拉斯3, 5
    9离开3
    104

    有了倒排索引,搜索引擎可以很方便地响应用户的查询。比如用户输入查询 Facebook ,搜索系统查找倒排索引,从中读出包含这个单词的文档,这些文档就是提供给用户的搜索结果。

    倒排索引两个重要细节:

    • 倒排索引中的所有词项对应一个或多个文档;
    • 倒排索引中的词项根据字典顺序升序排列

    elasticsearch的安装部署

    1 . docker获取es的镜像

    docker pull elasticsearch:7.12.1
    

    2 . 创建es文件目录以及创建配置文件

    mkdir /docker/es
    
    mkdir /docker/es/conf
    
    mkdir /docker/es/data
    
    mkdir /docker/es/plugins
    
    touch /docker/es/conf/elasticsearch.yml
    

    3 . 构建容器

    docker run -p 9200:9200 -d --name es \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -v /docker/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /docker/es/data:/usr/share/elasticsearch/data \
    -v /docker/es/plugins:/usr/share/elasticsearch/plugins \
    --privileged=true \
    elasticsearch:7.12.1 
    

    4 . 若出现异常:

    max virtual memory areas vm.max_map_count [65530] is too low, increase to atleast [262144]

    解决:

    #修改配置sysctl.conf
    vi /etc/sysctl.conf
    
    #在尾行添加以下内容
    vm.max_map_count=655300
    
    #执行命令
    sysctl -p
    

    5 . 若出现连接异常:

    ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.

    原因: 存在es需要以集群的方式才能启动,或者限制了连接的ip端口,则需要进行开放设置

    解决:修改配置文件:vim /docker/es/conf/elasticsearch.yml

    network.host: 0.0.0.0
    node.name: node-1
    cluster.initial_master_nodes: ["node-1"]
    

    6 . 测试

    在这里插入图片描述

    安装IK分词器

    1 . 获取ik分词器安装包:

    https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.12.1
    

    在这里插入图片描述

    2 . 解压安装包

    unzip elasticsearch-analysis-ik-7.12.1.zip
    

    这里解压出来可能会是很散乱的,需要将解压出来的包同一进行整理,整理到一个统一存储ik分词器相关的文件的目录:

    mkdir /docker/es/plugins/ik
    

    移动安装包

    mv commons-codec-1.9.jar /docker/es/plugins/ik/
    mv config/ /docker/es/plugins/ik/
    mv httpclient-4.5.2.jar /docker/es/plugins/ik/
    mv plugin-descriptor.properties /docker/es/plugins/ik/
    mv commons-logging-1.2.jar /docker/es/plugins/ik/
    mv elasticsearch-analysis-ik-7.12.1.jar /docker/es/plugins/ik/
    mv httpcore-4.4.4.jar /docker/es/plugins/ik/
    mv plugin-security.policy /docker/es/plugins/ik/
    

    3 . 完成后重启es

    docker restart es

    注意事项:安装es的ik分词器可能导致es内存溢出,可以调整虚拟机内存到2G,es配置中增加内存

    限制:indices.fielddata.cache.size: 50%

    kibana的安装部署

    1 . 拉取kibana镜像

    kibana需要与es的版本一致

    docker pull kibana:7.12.1
    

    2 . kibana的配置文件

    mkdir /docker/kibana
    
    mkdir /docker/kibana/conf
    

    3 . 创建配置文件

    touch /docker/kibana/conf/kibana.yml
    
    server.name: kibana
    server.host: "0.0.0.0"
    elasticsearch.hosts: ["http://你的es地址:9200"]
    xpack.monitoring.ui.container.elasticsearch.enabled: true
    

    4 . 构建kibana的容器

    docker run -p 5601:5601 -d --name kibana \
    -v /docker/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml \
    --privileged=true \
    kibana:7.12.1
    

    5 . 测试

    在这里插入图片描述

    6 . 汉化

    kibana 7 中官方加入了中文的选项,中文包在容器中的

    /usr/share/kibana/x-pack/plugins/translations/translations/zh-CN.jso
    

    在配置文件 /usr/share/kibana/config/kibana.yml 中加入

    i18n.locale: "zh-CN"
    
    展开全文
  • ELK 部署手册(docker版本)

    千次阅读 2022-04-20 11:28:06
    通过容器部署的方式快速搭建ELK日志管理收集系统。
  • ELK 部署及配置

    2021-04-10 17:30:40
    ELK即ElasticSearch、Logstash和Kibana,是由这三个软件组成的,能够实现日志入库和日志检索,安装也较为简单,下面介绍安装部署方法: 一、下载软件: 三个软件的下载,可访问我的网盘: 链接:...
  • filebeat+ELK部署

    2022-07-03 22:45:13
    安装elasticsearch—rpm包 修改elasticsearch主配置文件 es 性能调优参数优化最大内存大小和最大文件描述符的数量 正在上传…重新上传取消启动elasticsearch是否成功开启 查看节点信息浏览器访问 ...
  • ELK部署问题汇总1

    2022-08-08 21:34:40
    ELK部署问题汇总1
  • elk部署流程文件笔记

    2021-10-13 12:06:44
    elk部署流程
  • centos7 elk 部署全过程

    2019-03-25 14:50:45
    elasticsearch6.5.4+logstash6.5.4+kibana6.5.4+log4j2 在sentos7上部署的全过程,包括过程中会遇到的问题及详解
  • ELK部署+filebeat应用

    千次阅读 2022-04-02 09:15:13
    ELK版本:7.10.2 elastic官网地址:https://www.elastic.co/cn/ elastic产品地址:https://www.elastic.co/cn/elastic-stack yum源地址:https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/ 前言 日志主要...
  • ELK部署中文指南

    2017-09-26 14:43:36
    ELK由Elasticsearch、Logstash和Kibana三部分组件组成; Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 ...
  • 所有文件都已经过测试,并用于在Azure上生成实时ELK部署。 它们可用于重新创建上图所示的整个部署。 或者,可以使用剧本文件的选定部分来仅安装其中的某些片段,例如Filebeat。 用于此部署的剧本如下: 使用...
  • ELK部署安装步骤

    千次阅读 2021-03-31 11:01:36
    groupadd elk useradd elk -g elk chown -R elk:elk elasticsearch-7.2.0 chown -R elk:elk kibana-7.2.0-linux-x86_64 4、elasticsearch部分 创建数据和日志文件夹,并修改权限 mkdir -pv /data/elk/{data,logs} ...
  • CentOS7 环境下ELK部署

    2021-02-03 09:52:16
    CentOS 7 ELK部署前言一、什么是ELK?二、环境准备三、ELK用户创建,解压文件四、部署Elasticsearch1.修改elasticsearch.yml2.修改jvm.options3.启动elasticsearch五、部署logstash六、部署kibana1.修改kibana配置...
  • ELK部署应用

    2022-05-28 17:07:54
    首先阐述下为什么使用ELK ELASTIC公司的核心产品elastic search一直都保持最新的JDK版本可见整个公司团队对ES产品的研发和维护的力度之大,同时ES做到了其他同行产品无法做到的集日志采集、应用监控、数据收集于...
  • Docker Compose 一键 ELK 部署

    千次阅读 2020-01-07 19:32:21
    安装   Filebeat 已经完全替代...基于 Filebeat + ELK部署方案架构图如下:         软件版本: 服务 版本 说明 CentOS 7.6 Docker 18.09.5 Docker Compose 1.25.0 ELK 7.5.1 Fileb...
  • elk部署笔记

    2018-11-13 22:53:35
    elk部署安装文档,关于elk文档日志分析等,其中包括日志收集。
  • 分布式实时日志分析解决方案ELK部署架构
  • ELK部署文档

    2018-05-29 15:23:14
    ELK6.0版本安装教程和x-pack安全框架的破解使用。对于学习ELk新学员来说可以参考

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,595
精华内容 10,238
关键字:

elk部署