美文网首页
ELKstack简介及环境部署

ELKstack简介及环境部署

作者: 程序员同行者 | 来源:发表于2018-09-02 13:03 被阅读0次

    ELK工作流程图

    lo.png

    环境准备

    安装Logstash依赖包JDK

    Logstash的运行依赖于Java运行环境, Logstash 1.5以上不低于java 7推荐使用最新版本的Java。由于只是运行Java程序,而不是开发,下载JRE即可。

    yum 安装

      [root@reboot ~]#yum install java-1.8.0-openjdk  -y     
    

    设置yum安装的java_home(可以不执行)

      [root@reboot ~]# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-1.b14.el6.x86_64
    

    源码安装

    JDK的安装方式比较简单,只需将下载回来的程序包解压到相应的目录即可。
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    下载页面,因为需要证书,Linux无法下载,建议window下载,然后上传

    [root@reboot ~]#mkdir /usr/local/java
    [root@reboot ~]#tar -zxf jdk-8u45-linux-x64.tar.gz -C /usr/local/java/
    #设置JDK的环境变量(/etc/profile)添加如下:
    export JAVA_HOME=/usr/local/java/jdk1.8.0_45
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
    
    #检查jdk是否安装成功
    [root@reboot ~]#java -version
    java version "1.8.0_45"
    Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
    Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02,mixed mode)
    

    安装logstash

    安装logstash

    只需将它解压的对应目录即可,例如:/usr/local下:
    https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz
    https://artifacts.elastic.co/downloads/logstash/logstash-5.6.11.tar.gz

    [root@reboot ~]# tar -zxf logstash-5.6.11.tar.gz -C /usr/local/
    

    安装完成后运行如下命令测试:

    [root@reboot ~]# /usr/local/logstash-5.6.11/bin/logstash -e 'input { stdin { } } output { stdout {} }'
    
    Logstash startup completed
    
    Hello World!          #输入一个hello world。
    
    2018-09-01T14:48:35.902Z dev-online hello world #处理了输出的内容,格式:时间 主机名  输入的信息
    
    codec =>rubydebug 格式化输出
    
    [root@reboot ~]# ./bin/logstash -e  'input { stdin{} } output { stdout { codec=>rubydebug} }'
    
    Logstash startup completed
    
    hello world
    
    {
    
          "message" => "hello world",
    
          "@version" => "1",
    
    #  logstash采用的是UTC时间,即0时区,所以输出的结果,比北京时间少8小时
    
        "@timestamp" => "2018-09-01T06:48:47.348Z",           
    
          "host" => "dev-online"
    
    }
    

    安装Elasticsearch

    (https://www.elastic.co/ 官网)
    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.11.tar.gz
    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
    下载Elasticsearch后,解压到对应的目录就完成Elasticsearch的安装。

    [root@reboot ~]# tar -zxf elasticsearch-5.6.11.tar.gz -C /usr/local/
    

    ES的配置文件

    [root@reboot ~]#cat /usr/local/elasticsearch-5.6.11/config/elasticsearch.yml 
    cluster.name: my-application #集群名
    node.name: node-1 #节点名
    path.data:/data/db # 默认存放安装路径下的data目录
    network.host:10.1.19.18                           # 默认是0.0.0.0:9200
    discovery.zen.ping.unicast.hosts: ["127.0.0.1", "10.1.19.18"] #集群单播发现
    discovery.zen.minimum_master_nodes: 1
    
    

    启动Elasticsearch

    [root@reboot ~]# useradd es            # 2.*版本之后不允许root启动
    [es@reboot ~]$ /usr/local/elasticsearch-5.6.11/bin/elasticsearch -d  # 后台运行
    [es@reboot ~]$ /usr/local/elasticsearch-5.6.11/bin/elasticsearch-plugin install x-pack # 插件安装
    # 确认elasticsearch的9200端口已监听,说明elasticsearch已成功运行
     [es@reboot ~]$netstat -anp |grep :9200
     tcp        0      0 :::9200                     :::*                        LISTEN      3362/java
     [es@reboot ~]$ curl http://ip:9200   # 返回json结果
    

    常见报错

    https://www.cnblogs.com/xxoome/p/6663993.html

    内存不足
    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
    
    由于elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配
    # vim config/jvm.options  
    -Xms2g  
    -Xmx2g  
    修改为  
    -Xms512m 
    -Xmx512m  
    
    线程数不够
    max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
    
    修改 /etc/security/limits.d/90-nproc.conf 
    *          soft    nproc     1024
    改为
    *          soft    nproc     2048
    
    max_map_count不足
    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    
    修改/etc/sysctl.conf配置文件,
    cat /etc/sysctl.conf | grep vm.max_map_count
    vm.max_map_count=262144
    sysctl -p
    
    最大打开文件数不足
    max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536]
    vim /etc/security/limits.conf 
    * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
    
    阿里云服务器问题
    system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
    
    解决方法:在es配置中加入下面命令即可
    bootstrap.system_call_filter: false
    

    Kibana

    安装

    下载kibana后,解压到对应的目录就完成kibana的安装
    https://artifacts.elastic.co/downloads/kibana/kibana-5.6.11-linux-x86_64.tar.gz
    https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz

    [root@reboot ~]# tar -zxf kibana-5.6.11-linux-x64.tar.gz -C /usr/local/
    

    简单配置

     vim config/kibana.yml 
    
    port:5601                      #对外访问端口
    host:"0.0.0.0"                      #对外访问ip
    elasticsearch.url: "http://localhost:9200"    #数据源ES地址
    

    启动kibana

    [root@reboot ~]#  /usr/local/kibana-5.6.11-linux-x64/bin/kibana
    

    访问测试

      http://kibanaServerIP:5601     
    

    访问Kibana,首先,配置一个索引,默认,Kibana的数据被指向Elasticsearch,使用默认的logstash-*的索引名称,并且是基于时间的,点击“Create”即可。

    小栗子

    在logstash安装目录下创建一个logstash-es-simple.conf文件,用于测试logstash使用elasticsearch作为后端存储的例子,该文件中定义了stdout和elasticsearch同时输出,这样的“多重输出”即保证输出结果显示到屏幕上,同时也输出到elastisearch中。

    实际应用

    配置logstash作为Indexer
    将logstash配置为索引器,并将logstash的日志打印输出到屏幕,本范例主要是索引本地系统日志。

    [root@reboot ~]#cat /usr/local/logstash-5.6.11/logstash-indexer.conf
    
    input {
    
      file {
    
        type =>"syslog"
    
         path => ["/var/log/messages", "/var/log/syslog" ]
    
      }
    
    }
    
    output {
    
      stdout { codec=> rubydebug }
    
    }
    
    [root@reboot ~]#/usr/local/logstash-5.6.11/bin/logstash -f logstash-indexer.conf
    

    使用echo命令模拟写入日志,命令执行后看到如下图的信息

    [root@reboot ~]# echo "`date` 你好" >>/var/log/messages
    

    就可以在logstash终端看到进来的日志了

    学习的文章
    https://www.elastic.co/guide/index.html 官方文档
    http://kibana.logstash.es/content/ elk中文指南
    http://www.ttlsa.com/elk/ 运维生存时间 elk 系列
    http://www.wklken.me/posts/2015/04/26/elk-for-nginx-log.html 非常棒 博主有才华
    http://ckl893.blog.51cto.com/8827818/1772287 简单版的elk实现nginx日志分析
    http://www.ywnds.com/?p=9776 5.4.1版本 运维那点事 文章真棒
    https://www.cnblogs.com/jiu0821/p/7695149.html 5.6.3比较新多版本了
    http://blog.51cto.com/13527416/2049173 沪江网搜索平台的实践
    http://blog.51cto.com/zero01/2079879 6.0版本
    http://blog.51cto.com/13676067/2154285 涉及到调优

    相关文章

      网友评论

          本文标题:ELKstack简介及环境部署

          本文链接:https://www.haomeiwen.com/subject/nuqmwftx.html