zoukankan      html  css  js  c++  java
  • ELK6.3.2+filebeat部署过程

    ELK安装部署

    elk作为公司的日志收集检索的方案的首选,是必要的工具,下面介绍一下elk的安装部署方法,以及一些报错的解决方法:(使用的是ubuntu16.04,jdk使用1.8,ELK的版本为6.3.2)

    一、下载软件包

    官网下载elk以及filebeat,解压到指定的目录下,官网为:https://www.elastic.co/
    

    二、安装elasticserch

    由于Elasticsearch 的安装需要在非root用户下安装,而且需要修改系统部分配置,需要给用户配置sudo权限。(也可以修改elasticsearch的执行文件在变量ES_JAVA_OPTS添加如下配置:)

    ES_JAVA_OPTS="-Des.insecure.allow.root=true"
    

    1.添加用户

    useradd elk 
    

    2.把解压下来的elasticsearch的目录权限给elk用户

    chown -R elk /elk/elasticsearch-6.3.2/
    

    3.切换到elk用户修改elasticsearch.yml配置文件

    vim elasticsearch.yml
    修改的内容如下:
    path.data: /data/elastic/data
    path.logs: /data/elastic/logs
    network.host: 192.168.199.153
    http.port: 9200
    如果需要做集群的话就要修改如下,将host1和host2改为自己的主机的ip
    discovery.zen.ping.unicast.hosts: ["host1", "host2"]
    #注意需要新建/data/elastic/data和/data/elastic/logs目录,并且目录权限改为elk
    

    4.另外还需要修改系统相关的配置

    1、修改系统文件句柄数 修改文件(这里需要root用户的权限才可以) 
    vim /etc/security/limits.conf 
    在文件下面添加elastic 这里为系统用户 elastic - nofile 65536 这里表示只在这个用户下才起作用。
    
    2、修改虚拟内存的大小 
    vim /etc/sysctl.conf 
    添加: vm.max_map_count = 262144 查看是否生效: sysctl vm.max_map_count
    
    3、其他情况有: 
    vim /etc/security/limits.conf 
    添加一行: elk - nproc 2048 其中"elk"为启动elasticsearch的用户 
    

    5.启动

    $ ./bin/elasticsearch
    

    6.查看安装之后的基本情况

    $ curl -XGET '172.16.144.101:9200/_cat/health?v&pretty'
    

    7.安装x-pack

    1、由于6.3.2版本已经集成了x-pack插件,所以可以不用去重新下载了,直接进去x-pack目录
    cd /elk/elasticsearch-6.3.2/bin/x-pack
    2、首先执行测试版本
    curl -H "Content-Type:application/json" -XPOST  http://es主机ip:9200/_xpack/license/start_trial?acknowledge=true
    3、设置用户名和密码,初始开始会设置 elastic,kibana,logstash_system 用户密码
    setup-passwords interactive
    4、验证访问是否正常
    curl -XGET -u elastic:elastic '172.16.144.101:9200/_cat/health?v&pretty’
    

    8.破解x-pack
    首先到官网去申请,下载x-pack的证书并重命名的凭证license.json(需要填写邮箱)

    然后开始破解

    1、将x-pack-core-6.3.2.jar备份,
    cd /elk/elasticsearch-6.3.2/modules/x-pack/x-pack-core
    cp x-pack-core-6.3.2.jar x-pack-core-6.3.2.jar.back
    2、解压x-pack-core-6.3.2.jar的jar包,然后找到下面的两个class文件,使用luyten反编译
    org/elasticsearch/xpack/core/XPackBuild.class
    org/elasticsearch/license/LicenseVerifier.class
    3、LicenseVerifier 中有两个静态方法,这就是验证授权文件是否有效的方法,我们把它修改为全部返回true
    
    package org.elasticsearch.license;
    
    import java.nio.*;
    import java.util.*;
    import java.security.*;
    import org.elasticsearch.common.xcontent.*;
    import org.apache.lucene.util.*;
    import org.elasticsearch.common.io.*;
    import java.io.*;
    
    public class LicenseVerifier
    {
        public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {
            return true;
        }
    
        public static boolean verifyLicense(final License license) {
            return true;
        }
    }
    
    package org.elasticsearch.xpack.core;
    
    import org.elasticsearch.common.io.*;
    import java.net.*;
    import org.elasticsearch.common.*;
    import java.nio.file.*;
    import java.io.*;
    import java.util.jar.*;
    
    public class XPackBuild
    {
        public static final XPackBuild CURRENT;
        private String shortHash;
        private String date;
    
        @SuppressForbidden(reason = "looks up path of xpack.jar directly")
        static Path getElasticsearchCodebase() {
            final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
            try {
                return PathUtils.get(url.toURI());
            }
            catch (URISyntaxException bogus) {
                throw new RuntimeException(bogus);
            }
        }
    
        XPackBuild(final String shortHash, final String date) {
            this.shortHash = shortHash;
            this.date = date;
        }
    
        public String shortHash() {
            return this.shortHash;
        }
    
        public String date() {
            return this.date;
        }
    
        static {
            final Path path = getElasticsearchCodebase();
            String shortHash = null;
            String date = null;
            Label_0157: {
                shortHash = "Unknown";
                date = "Unknown";
            }
            CURRENT = new XPackBuild(shortHash, date);
        }
    }
    
    4、然后就开始重新编译压缩
    javac -cp "$ES_HOME/lib/elasticsearch-6.2.3.jar:/opt/elasticsearch/lib/lucene-core-7.2.1.jar:$ES_HOME/plugins/x-pack/x-pack-core/x-pack-core-6.2.3.jar" LicenseVerifier.java
    
    javac -cp "$ES_HOME/lib/elasticsearch-6.2.3.jar:$ES_HOME/lib/lucene-core-7.2.1.jar:$ES_HOME/plugins/x-pack/x-pack-core/x-pack-core-6.2.3.jar:$ES_HOME/plugins/x-pack/x-pack-core/netty-common-4.1.16.Final.jar:$ES_HOME/lib/elasticsearch-core-6.2.3.jar" XPackBuild.java
    5、编译的org.elasticsearch.license.LicenseVerifier.class、org.elasticsearch.xpack.core.XPackBuild.class替换原来的class,重新压缩打包
    jar -cvf x-pack-core-6.2.3.jar ./*
    6、替换原来的x-pack-core-6.2.3.jar并重启elasticserach、kinaba
    7、修改license.json为:
    
    {
            "license": {
                    "uid": "1f742aa9-068b-48b6-8b36-c36ff3a39ed7",
                    "type": "platinum", # 修改授权为白金版本
                    "issue_date_in_millis": 1526860800000,
                    "expiry_date_in_millis": 2524579200999, #修改到期时间
                    "max_nodes": 100, # 修改最大节点数
                    "issued_to": "aa",
                    "issuer": "Web Form",
                    "signature": "AAAAAwAAAA2+OXa0Aq7HFDzGSxl1AAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQCi1V5EMmUXsTUKTeVHJugLj0daqCDI/eAALGG2FWAnE7p9F9ZcCNp2cybBmJ8okoxEIvsUVHUEv50eodAzsxR7qYra1j3pbjMY9BSl13DTVByhow+ZbsXojEpxtXPv18Fd88iP7NcQDs/ERI3xQePDl4O3vB1qkpTxZiY+BC/YlCHF4VTz/sGq6PWvT0G7T4oUb91KIB42oFYNvS4SRkv4gvHOQWRkwdthA2dwpf2QNeH/5vMw9VWFV8x7hw+8HTcqkf2De3TFq94VvhWw9ZpXPaO79fuQoj7vR79BHbBLYnlHxMNAEGnzgJwK13DGDnHdoz0mGsCHgUuswn7+nTEX",
                    "start_date_in_millis": 1526860800000
            }
    }
    
    8、最后执行:
    curl -u elastic:elastic -XPUT 'http://es-ip:port/_xpack/license' -H "Content-Type: application/json" -d @/tmp/license.json
    

    三、安装Logstash

    1.直接将下载的包解压到相应的目录即可

    2.测试

    $ bin / logstash -e'input {stdin {}} output {stdout {}}’
    #每次启动都需要去写配置文件,就不多说了
    

    四、安装filebeat

    filebeat是从logstash拆分出来的,现在很多logstah的插件的功能都已经移到 不同的beats下面了 ,具体可以看官方文档 ,filebeat作为一个轻量级的收集日志的工具,效率很高,而且基本不消耗什么主机资源。

    1.直接解压安装包到指定的目录下

    2.修改filebeat.yml配置文件

    vim filebeat.yml
    修内容如下:
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /tmp/test.log
        #- c:programdataelasticsearchlogs*
      fields:
         document_type: test-info
    output.logstash:
      hosts: ["192.168.199.153:5044"]
    

    3.启动测试

    $ ./filebeat -e -c filebeat.yml
    

    五、安装kibana

    kibanna是一个界面展示,依赖node.js运行 ,可以展示es的数据,并且可以画图,做数据展示,当然还可以自己做二次开发,利用百度的echarts来作为插件画图

    1.直接解压安装包到指定的目录下

    2.修改kibana.yml配置文件

    server.port: 5601
    server.host: "192.168.199.153"
    elasticsearch.url: "http://192.168.199.153:9200"
    kibana.index: ".kibana"
    elasticsearch.username: "kibana"
    elasticsearch.password: "test@123456"
    

    3.安装x-pack

    bin/kibana-plugin install x-pack
    

    4.启动验证

    $ ./bin/kibana
    

    六、filebeat与logstash的连接

    为了安全起见,filebeat作为收集日志的客户端,输出到logstash的时候必须要考虑到安全,因此必须要建立安全机制,官方提供了ssl证书来验证

    1.filebeat主机和logstash的主机都创建ip san证书

    $ vim /etc/pki/tls/openssl.cnf
    查找 “[v3_ca]” 部分,在此字段下方添加logstash服务器的IP,
    subjectAltName = IP:192.168.199.153
    mkdir -p pki/tls/certs
    mkdir -p pki/tls/private
    openssl req -subj '/CN=YOURIP/' -x509 -days $((100 * 365)) -batch -nodes -newkey rsa:2048 -keyout pki/tls/private/filebeat.key -out pki/tls/certs/filebeat.crt
    

    2.将证书所在文件传到对方的主机上去

    3.修改logstash的过滤启动的配置文件

    vim /elk/logstash-6.3.2/config/test2.conf
    input {
     beats {
       port => 5044
        ssl => true
           ssl_certificate_authorities => ["filebeat端传来的证书所在位置"](可以添加多个不同的filebaet主机的证书)
           ssl_certificate => "本端生成的证书所在的位置"
           ssl_key => "/本端生成的密钥所在的位置"
           ssl_verify_mode => "force_peer"
      }
    }
    

    4.修改filebeat.yml文件

       ssl.certificate_authorities:  ["logstash端传来的证书所在位置"]
       ssl.certificate: "本机生成的证书所在的位置"
       ssl.key: "本机生成的密钥所在的位置"
    
  • 相关阅读:
    SEH(Structured Exception Handling)详细解释
    Command Query Responsibility Segregation
    C#中Func和Expression的区别
    C#的yield return是怎么被调用到的?
    C#的static constructor抛了异常会怎么处理?
    developer应该知道的image知识(JPG和PNG)
    网站前台与后台的连接
    短消息类新旧服务代码对应表
    无线广告巨头渠道火拼
    中国移动下一代移动技术将选择LTE
  • 原文地址:https://www.cnblogs.com/jialin1402/p/9667624.html
Copyright © 2011-2022 走看看