• ELK学习笔记


    一、elk框架和java1.8环境搭建

    1.1: 环境说明

           约定:

            centos6

            iptables关闭 如果不关闭的话,需要开放对应的端口访问

            selinux关闭

    1.2: ELK简介

           els:ElasticSearch,Logstash,Kibana,Beats

           elk:ElasticSearch,Logstash,Kibana 

         ① ElasticSearch 搜索引擎

      ElasticSearch 是一个基于Lucene的搜索引擎,提供索引,搜索功能。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

       ② Logstash 接收,处理,转发日志的工具 

      Logstash 是一个开源的服务器端数据处理流水线,它可以同时从多个数据源获取数据,并将其转换为最喜欢的"存储"(Ours is Elasticsearch, naturally.)

       ③ Beats:采集日志信息(加上beats 就是els),GO开发的,所以高效、很快

      Filebeat:Log Files

      Metricbeat:Metrics

      Packetbeat:Network Data

      Winlogbeat:Windows Event Logs

      Heartbeat:Uptime Monitoring

       ④ Kibana:独立的、美观的图形数据展示界面

      Kibana 让你可视化你的Elasticsearch数据并导航Elastic Stack,所以你可以做任何事情,从凌晨2:00分析为什么你得到分页,了解雨水可能对你的季度数字造成的影响。

    原理图:

          

    1.3: yum 安 装 jdk1.8

             Java 8 is required for Logstash 6.x and 5.x.(https://www.elastic.co/downloads/logstash)

    yum install java-1.8.0-openjdk -y
    #elasticsearch、logstash依赖于java环境

    1.4: 使用官方的二进制包解压安装jdk1.8

           先下载java linux 64位tar.gz包java 1.8

          下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    1.5: 解压,移动(即安装) 

      cd /usr/local/src/
      tar -zxvf jdk-8u162-linux-x64.tar.gz 
    mv jdk1.8.0_162 /usr/local/ #用全路径验证java是否安装成功 /usr/local/jdk1.8.0_162/bin/java -version

    1.6: 配置java环境变量

      vim /etc/profile
      export JAVA_HOME=/usr/local/jdk1.8.0_162/
      export PATH=$PATH:$JAVA_HOME/bin
      export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
      source  /etc/profile

    1.7: java版本查看

      java -version

     二、kibana的安装和启动

    2.1: kibana 下载地址

             (kibana 主要用来展现数据,它本身不存储数据 )

           https://artifacts.elastic.co/downloads/kibana/kibana-6.1.1-linux-x86_64.tar.gz

    2.2: 添加elk用户,解压安装

     usermod -s /sbin/nologin elk #不让elk用户来登录系统解压安装kibana:
     tar -zxf kibana-6.1.1-linux-x86_64.tar.gz
     mv kibana-6.1.1-linux-x86_64 /usr/local/kibana-6.1.1

    2.3: kibana配置文件

    vim /usr/local/kibana-6.1.1/config/kibana.yml 

    修改:

      server.port: 5601
      server.host: "0.0.0.0"(监听在所有网卡,有风险)
      #elasticsearch.url: "http://localhost:9200" (默认是连接elasticsearch的9200端口)
      #elasticsearch.username: "user" (配置连接elasticsearch的用户名和密码)
      #elasticsearch.password: "pass"

    2.4: 把kibana目录改为elk用户

     chown -R elk:elk /usr/local/kibana-6.1.1/

    2.5: 新增启动脚本

      vim /usr/local/kibana-6.1.1/bin/start.sh
         nohup /usr/local/kibana-6.1.1/bin/kibana >>/tmp/kibana.log 2>>/tmp/kibana.log 
      chmod a+x /usr/local/kibana-6.1.1/bin/start.sh

    2.6: 用普通用户启动

      su -s /bin/bash elk '/usr/local/kibana-6.1.1/bin/start.sh'
    访问kibana,注意防火墙放开tcp 5601端口。我这边就直接关闭防火墙了。

    2.7:使用Nginx限制访问kibana

    使用nginx转发到kibana,由于kibana没有权限控制,可以借助nginx来部署认证和进行ip控制先把kibana改到监听127.0.0.1,然后利用nginx来转发。配置如下:

    server {
           listen 5609;
           access_log /usr/local/nginx/logs/kibana_access.log main;
           error_log /usr/local/nginx/logs/kibana_error.log error;
           location / {
                allow 127.0.0.1; deny all;
                proxy_pass http://127.0.0.1:5601;
           }
    }
    log_format main
    '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
    如果ip经常变化,感觉麻烦的话,就使用用户名密码登录的方式。
       location / {
            auth_basic "elk auth";
            auth_basic_user_file /usr/local/nginx/conf/htpasswd; 
            proxy_pass http://127.0.0.1:5601;
       }

    生成密码文件

        printf "elk:$(openssl passwd -1 elkpass) " >/usr/local/nginx/conf/htpasswd

     三、elasticsearch安装和启动

    3.1: elasticsearch的下载地址

            (elasticsearch主要用来存储数据和查询分析,供kibana调取并进行展现)

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

    3.2:解压安装

    cd /usr/local/src/
    tar -zxf elasticsearch-6.1.1.tar.gz
    mv elasticsearch-6.1.1 /usr/local/

    3.3:elasticsearch配置

    vim /usr/local/elasticsearch-6.1.1/config/elasticsearch.yml 
    修改:
    path.data: /usr/local/elasticsearch-6.1.1/data
    path.logs: /usr/local/elasticsearch-6.1.1/logs
    network.host: 127.0.0.1
    http.port: 9200

    3.4:把elasticsearch目录改为elk

    mkdir -p /usr/local/elasticsearch-6.1.1/data
    mkdir -p /usr/local/elasticsearch-6.1.1/logs
    chown -R elk:elk /usr/local/elasticsearch-6.1.1/

    3.5: 更改jvm的内存限制(看个人机器配置)

    vim /usr/local/elasticsearch-6.1.1/config/jvm.options
    -Xms100M
    -Xmx100M

    3.6: 编辑elasticsearch启动脚本,-d后台启动。

     vim /usr/local/elasticsearch-6.1.1/bin/start.sh
         /usr/local/elasticsearch-6.1.1/bin/elasticsearch -d >>/tmp/elasticsearch.log  2>>/tmp/elasticsearch.log
    chmod a+x /usr/local/elasticsearch-6.1.1/bin/start.sh

    3.7: 启动elasticsearch

    注意ES必须要普通用户启动
    su -s /bin/bash elk '/usr/local/elasticsearch-6.1.1/bin/start.sh' 观察日志 tailf /tmp/elasticesearch.log 观察kibana网页,看下还会不会报elasticsearch的错误 elasticsearch监听在非127.0.0.1,需要验证内核参数 network.host: 0.0.0.0

    3.8: 常见启动报错

        

        1、(处理max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144])

          vim /etc/sysctl.conf
          添加
          vm.max_map_count = 262144
    2、
    ( 处 理 max number of threads [1024] for user [elk] is too low,increase to at least [4096]

    vim /etc/security/limits.d/90-nproc.conf
    *          soft    nproc     4096
    *          hard    nproc     4096
      3、( 处 理 max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536])

            vim /etc/security/limits.conf  

            * soft nofile 65536

            * hard nofile 65536

        4、(处理system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk)

            vim /usr/local/elasticsearch-6.1.1/config/elasticsearch.yml

            bootstrap.memory_lock: false

            bootstrap.system_call_filter: false

     跟新中。。。

  • 相关阅读:
    Spring Boot启动命令参数详解及源码分析
    面试题-关于Java线程池一篇文章就够了
    Spring Boot中@ConditionalOnProperty使用详解
    Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean
    Spring Boot 注解之ObjectProvider源码追踪
    软件从业者不可不读的一本书
    SpringBoot之DispatcherServlet详解及源码解析
    书终于交稿了,聊聊写技术书这件事
    Python IDE:pycharm
    python安装
  • 原文地址:https://www.cnblogs.com/wangchaolinux/p/9404848.html
Copyright © 2020-2023  润新知