zoukankan      html  css  js  c++  java
  • ELK日志分析服务搭建

    本实验所用软件包下载地址:链接:https://pan.baidu.com/s/1h4q8tL5fJ8TqcCzhHwAVpg 提取码:8oaf
    使用unzip解压(yum install unzip -y)

    一、ELK简介

    ELK是三个开源软件的缩写,分别是:Elasticsearch , Logstash, Kibana , 新增了一个 FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash,官方也推荐此工具。

    1.Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。

    2.Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为 c/s 架构,client 端安装在需要收集日志的主机上,server 端负责将收到的各节点日志进行过滤、修改等操作在一并发往 elasticsearch 上去。

    3.Kibana 也是一个开源和免费的工具,Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

    4.Filebeat 隶属于 Beats。目前 Beats 包含四种工具:

    Packetbeat #搜集网络流量数据
    Topbeat    #搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据
    Filebeat   #搜集文件数据
    Winlogbeat #搜集 Windows 事件日志数据 
    

    二、实验部署

    业务请求到达nginx;nginx响应请求,并在access.log文件中增加访问记录;
    FileBeat搜集新增的日志,通过LogStash的5044端口上传日志;
    LogStash将日志信息通过本机9200端口传到Elasticsearch;
    搜索日志的用户通过浏览器访问Kibana,服务器端口是5601
    Kibana通过9200端口访问Elasticsearch。
    

    1.实验环境准备
    单节点ELK:elk服务端:10.0.0.201;nginx客户端:10.0.0.202

    (1)配置yum源(两台机器)

    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    wget http://mirrors.aliyun.com/repo/epel-7.repo
    #关闭防火墙:systemctl stop(disable) firewalld
    #关闭 SELinux:SELINUX=disabled
    

    2.ELK-server服务端部署
    (1)安装软件

    #创建软件存放目录,并将elk-server.zip压缩包上传
    mkdir /elk;cd /elk
    #解压缩,并拷贝到/usr/local/目录下
    tar -xf elasticsearch-6.2.3.tar.gz
    tar -xf logstash-6.2.3.tar.gz 
    tar -xf kibana-6.2.3-linux-x86_64.tar.gz
    cp -a elasticsearch-6.2.3 logstash-6.2.3 kibana-6.2.3-linux-x86_64 /usr/local
    tar -xf jdk-8u261-linux-x64.tar.gz
    #cp -a jdk1.8.0_261 /usr/local/jdk1.8
    

    (2)安装jdk

    #安装gcc
    yum -y install gcc
    
    #配置jdk的环境变量
    #vim /etc/profile
    #添加:
    export JAVA_HOME=/usr/local/jdk1.8
    export JAVA_BIN=/usr/local/jdk1.8/bin
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    #source /etc/profile
    

    (3)配置Elasticsearch

    #新建elasticsearch用户并使用该启动启动
    useradd elasticsearch
    chown -R elasticsearch.elasticsearch /usr/local/elasticsearch-6.2.3/
    su - elasticsearch
    $ cd /usr/local/elasticsearch-6.2.3/
    $ ./bin/elasticsearch -d
    #查看进程是否启动成功,需要等待几分钟
    netstat -anpt|grep :9200
    

    (4)配置logstash
    Logstash 收集 nginx 日志之使用 grok 过滤插件解析日志,grok 作为一个 logstash 的过滤插件,支持根据模式解析文本日志行,拆成字段。

    grok的正则匹配

    #cd /usr/local/logstash-6.2.3/
    vim vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns
    #添加:
    WZ ([^ ]*)
    NGINXACCESS %{IP:remote_ip} - - [%{HTTPDATE:timestamp}] "%{WORD:method} %{WZ:request}
    HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{QS:referer} %{QS:agent}
    %{QS:xforward}
    

    创建logstash配置文件

    #vim /usr/local/logstash-6.2.3/default.conf
    input {
        beats {
            port => "5044"
        }
    }
    #数据过滤
    filter {
        grok {
            match => { "message" => "%{NGINXACCESS}" }
         }
        geoip {
           #nginx 客户端 ip
           source => "10.0.0.202"
         }
    }
    #输出配置为本机的 9200 端口,这是 ElasticSerach 服务的监听端口
    output {
        elasticsearch {
            hosts => ["127.0.0.1:9200"]
        }
    }
    
    #进入/usr/local/logstash-6.2.3目录下
    #后台启动logstash:
    nohup bin/logstash -f default.conf &
    #查看启动日志
    tail -f nohup.out
    
    #如果报错“Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000f5550000, 178978816, 0) failed; error='Cannot allocate memory' (errno=12)”
    #原因:服务器内存不够;解决办法:vim config/jvm.options
    #将-Xms1g和-Xmx1g改为:
    -Xms256m
    -Xmx256m
    

    (5)配置kibana

    #编辑配置文件
    vim /usr/local/kibana-6.2.3-linux-x86_64/config/kibana.yml
    #修改: #server.host: "localhost" 为 server.host: "本机IP"
    
    #进入kibana目录
    cd /usr/local/kibana-6.2.3-linux-x86_64/
    #启动并测试:
    nohup bin/kibana &
    #浏览器访问:
    10.0.0.201:5601
    

    3.Nginx客户端配置

    #安装依赖
    yum install -y gcc* pcre-devel opensll openssl-devel zlib-devel ncurses-devel cmake bison libxml2-devel libpng-devel
    
    #将源码包上传到nginx主机上,并创建nginx用户
    useradd -r -s /sbin/nologin nginx
    #解压nginx并安装
    #cd nginx-1.17.10/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
    make && make install
    
    #上传filebeat软件包并解压到/usr/local
    
    #编辑配置文件
    vim /usr/local/filebeat-6.2.3-linux-x86_64/filebeat.yml
    #修改:
    enable:false #修改为 true
    paths:/var/log/*.log #修改为/var/log/nginx/*.log
    #output.elasticsearch: #将此行注释掉
    #hosts: ["localhost:9200"] #将此行注释掉
    output.logstash: #取消此行注释
    hosts: ["10.0.0.201:5044"] #取消此行注释并修改 IP 地址为 ELK 服务器地址
    
    #切换到/usr/local/ filebeat-6.2.3-linux-x86_64目录下
    cd /usr/local/filebeat-6.2.3-linux-x86_64
    #启动:
    nohup ./filebeat -e -c filebeat.yml &
    #查看日志:
    tail -f nohup.out
    
    #验证:多访问几次nginx,然后访问kibana进行设置
    #步骤:
    	#点击左上角的Discoverwe 
    	#输入 logstash-*,点击next step
    	#选择 time filter,再点击 create index pattern(创建索引模式)
    
    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    建表关系
    设计模式-策略模式
    设计模式-适配器模式
    在线操作word和在线预览查找的资料记录
    Elasticsearch 使用-安装
    12-factors
    Kafka 使用-安装
    Apache Zookeeper 使用-安装
    Java 使用-安装
    设计模式-模板方法模式
  • 原文地址:https://www.cnblogs.com/ccku/p/13543187.html
Copyright © 2011-2022 走看看