Springboot簡易ドッキングefk(Elasticsearch,Filebeat,Kibana)-tcp方式


前に書いてあります:efkはElasticsearch、FileBeat、Kibanaの略称です
  • ElasticSearchはLuceneベースの検索サーバです.RESTful Webインタフェースに基づいた分散型マルチユーザ能力の全文検索エンジンを提供します.
  • FileBeatは、ログデータを転送および集中する軽量レベルのツールです.サーバ上のエージェントとしてインストールし、filebeatは指定したログファイルまたは場所を監視し、ログイベントを収集し、ElasticSearchまたはLogstashに転送してインデックスします.logstashは相対的に消費性能に優れているため、Filebeatを用いてデータ収集を行う.
  • Kibanaはオープンソースの分析と可視化プラットフォームであり、Elasticsearchと一緒に動作するように設計されています.Kibanaで検索し、表示し、Elasticsearchインデックスに格納されたデータと対話する
  • このテスト環境:centos 7、Elasticsearch 6.6.1、FileBeat 6.6.1、Kibana 6.6.1、テストマシンip:47.999.20.71、elkは大きなメモリを消費する必要があるので、テストアーキテクチャ図を提供するために2 gのメモリを確保してください.
    一、efk環境構築(既存環境はスキップ可能)
    1.elastcsearch環境
    前提設定:JVMスレッド数制限数を上げるcentosウィンドウで、構成sysctl.confを変更する
    vim /etc/sysctl.conf
    

    最後の行に次の内容を追加します.
    vm.max_map_count=262144 
    

    ファイルの保存を終了したら、設定を有効にします.
    sysctl -p
    

    注意:コンテナの起動時にbootstrap checks failed max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
    以下の操作は、対応するファイアウォールポートを自分で開くか、セキュリティグループのルールを構成してください.ここでは説明しません.
    1.1 centosで対応するマッピングディレクトリ/home/software/es/dataを作成し、/home/software/elasticsearch/config/下es-single.ymlを作成します.内容は次のとおりです.
    network.bind_host: 0.0.0.0
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

    注意:他のアドレスへのアクセス、ドメイン間の問題の解決
    1.2 centosで次のコマンドを実行してelasticsearch単例のインスタンスを構築する
     chmod 777 /home/software/es/data
     docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9210:9200 -p 9310:9300  -e "discovery.type=single-node" -v /home/software/es/data:/usr/share/elasticsearch/data -v /home/software/elasticsearch/config/es-single.yml:/usr/share/elasticsearch/config/elasticsearch.yml --name es-single elasticsearch:6.6.1
    

    注意:この文書は単一のモデルのみを提供し、読者は「docker簡易構築ElasticSearchクラスタ」を参照することができます.https://blog.csdn.net/belonghuang157405/article/details/83301937 注意:ELKが6.Xバージョンを選択した場合、では、読者はdataディレクトリを777権限=>chmod 777 dataを開く必要があります.java.nio.file.AccessDeniedException:/usr/share/elasticsearch/data/nodesエラーの発生を防止します.
    2.FileBeat環境
    2.1 centosの/home/software/filebeat/の下にfilebeat.ymlを作成します.ファイルの内容は次のとおりです.
    filebeat.inputs:
    - type: tcp
      max_message_size: 10MiB
      host: "0.0.0.0:9000"
    

    注意:ここにはfilebeat入力方式が設定されています.ここではあまり説明しません.読者は必要に応じて構成をカスタマイズできます.具体的な構成は公式サイトを参照してください.https://www.elastic.co/guide/en/beats/filebeat/current/configuration-filebeat-options.html
    2.2 centosで次のコマンドを実行してlogstash単例環境を構築する
    docker run -d -p 9000:9000 --name filebeat-single -v /home/software/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml  elastic/filebeat:6.6.1 -e -strict.perms=false -E output.elasticsearch.hosts=["47.99.200.71:9210"]
    
    

    3.kibana環境
    3.1 centosで次のコマンドを実行してkibana環境を構築する
    docker run -d --name kibana-single -p 5610:5601  -e ELASTICSEARCH_URL=http://47.99.200.71:9210 -d kibana:6.6.1
    

    注意:ELASTICSCEARCH_URL elasticsearch環境のアドレス
    二、springboot集積logstash
    demoプロジェクトアドレス:https://github.com/Blankwhiter/elk-springbootを選択します.
    1.springbootはlogstash-logback-encoder依存を加え、pom.xmlは以下の通りである.
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
        <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.1.3.RELEASEversion>
            <relativePath/> 
        parent>
        <groupId>com.examplegroupId>
        <artifactId>elk-testartifactId>
        <version>0.0.1-SNAPSHOTversion>
        <name>elk-testname>
        <description>Demo project for Spring Bootdescription>
    
        <properties>
            <java.version>1.8java.version>
        properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starterartifactId>
            dependency>
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-testartifactId>
                <scope>testscope>
            dependency>
            
            <dependency>
                <groupId>net.logstash.logbackgroupId>
                <artifactId>logstash-logback-encoderartifactId>
                <version>5.3version>
            dependency>
    
        dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                plugin>
            plugins>
        build>
    
    project>
    
    

    2.アプリケーション.propertiesの作成
    logging.config=classpath:logback-spring.xml
    LOGSTASH_HOST=47.99.200.71
    LOGSTASH_PORT=9000
    

    3.resourceディレクトリの下にlogback-spring.xmlを新規作成します.内容は次のとおりです.
    
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
        
        <property resource="application.properties">property>
    
        
        <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>${LOGSTASH_HOST}:${LOGSTASH_PORT}destination>
            <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
        appender>
        
        <root level="INFO">
            <appender-ref ref="LOGSTASH"/>
            <appender-ref ref="CONSOLE"/>
        root>
    configuration>
    
    

    4.テストコード
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ElkTestApplicationTests {
    
    
        @Value("${LOGSTASH_HOST}")
        private String ip;
    
        private final static Logger log = LoggerFactory.getLogger(ElkTestApplication.class);
        @Test
        public void test() {
            log.info("ip:{} filebeat     info    !!!",ip);
            log.warn("ip:{} filebeat      warn    !!!",ip);
            log.error("ip:{} filebeat      error    !!",ip);
        }
        
    }
    
    

    三、統合に成功したかどうかをテストする
    1.http:/47.999.20.71:8088/app/kibanaへのアクセス
    2.管理メニューをクリック
    3.Kibanaの下にあるIndex Patternsを選択し、filebeat*構成のindexを記入し、ファジイマッチングを行えばよい
    4.時間フィルタを選択して毎日のフィルタ選択を行い、読者は自分のニーズに応じて
    5.Create Index patternボタンをクリックしてインデックスを作成
    6.Discoverメニューをクリックして採集リストを見る
    このメニューをクリックするとデータ結果が表示されます