zoukankan      html  css  js  c++  java
  • ELK日志分析系统 

    ELK日志分析系统
    --------------------------------------------------------
    Elasticsearch 端口9200
    实验环境:
         IP地址  主机名               备注
    192.168.200.67         elk-node1       (至少)2G内存
    192.168.200.68         elk-node2      (至少)2G内存
    192.168.200.69         apache             1G内存
    ------------------------------------------------------------------------
    ELK环境的搭建:
    创建多台Elasticsearch节点的目的是存放数据的多个副本,在实际生产环境中,节点的数量可能更多,在本实验中,Elasticsearch 和kibana 集中部署在node1节点上,也可以采用分布式部署,即Logstash、Elasticsearch 、kibana 分别部署在不同服务器上。
    在公司里面,像一些直播公司、地图公司较常用。
    -------------------------------------------------------------------
    环境准备
    所有机器关闭防火墙安全机制
    iptables -F
    setenforce 0
    systemctl stop firewalld
    【1】在2个ELK节点上配置名称解析,通过本地/etc/hosts文件实现
    --------
    67 主机 ELK-node1 配置
    hostname elk-node1
    bash
    vim /etc/hostname
    elk-node1
    vim /etc/hosts
    192.168.200.67 elik-node1
    192.168.200.68 elik-node2
    保存退出
    ---------
    68主机 ELK-node2 配置
    hostname elk-node2
    bash
    vim /etc/hostname
    elk-node2
    vim /etc/hosts
    192.168.200.67 elik-node1
    192.168.200.68 elik-node2
    保存退出
    ---------
    【2】配置2台elk-node 的Java环境
    java -version   //系统自带的环境也可以。
    【3】安装elasticsearch 软件
          【3.1】elasticsearch 可以通过yum安装、源码安装都可以,这里通过rpm包进行安装,2个elk-node节点都要安装
    -------67主机操作------
    rpm -ivh elasticsearch-5.5.0.rpm
    -------68主机操作------
    rpm -ivh elasticsearch-5.5.0.rpm
    ----------------
           【3.2】通过执行命令配置系统服务并设置自动开机启动,2个node都要做 ,并且更改主配置文件
    -------67主机操作------
    systemctl daemon-reload
    systemctl enable elasticsearch.service
    vim /etc/elasticsearch/elasticsearch.yml
     17 cluster.name: my-elk-cluster       #集群名字,名字相同才会分到相同集群
     23 node.name: elk-node1       #节点名字
     33 path.data: /data/elk_data      #数据存放路径
     37 path.logs: /var/log/elasticsearch   #日志存放路径
     43 bootstrap.memory_lock: false       #不在启动时锁定内存
     55 network.host: 0.0.0.0          #提供服务绑定的IP地址,0.0.0.0代表所有
     59 http.port: 9200             #指定监听端口
     68 discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]  #集群中的实例名
    ##注意(末行添加的内容node1与node2此处不同)
     http.cors.enabled: true         #开启跨区域传送
     http.cors.allow-origin: "*"        #跨区域访问允许的域名地址
    保存退出
    -------68主机操作------
    systemctl daemon-reload
    systemctl enable elasticsearch.service
    vim /etc/elasticsearch/elasticsearch.yml
     17 cluster.name: my-elk-cluster
     23 node.name: elk-node2
     33 path.data: /data/elk_data
     37 path.logs: /var/log/elasticsearch
     43 bootstrap.memory_lock: false
     55 network.host: 0.0.0.0
     59 http.port: 9200
     68 discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]
    保存退出
    【4】2台node建数据存放路径并授权
    -------67主机操作------
    mkdir -p /data/elik_data
    chown elasticsearch:elasticsearch /data/elk_data/
    -------68主机操作------
    mkdir -p /data/elik_data
    chown elasticsearch:elasticsearch /data/elk_data/
    【5】2个node节点,启动 elasticsearch并查看是否成功开启。
    -------67主机操作------
    systemctl start elasticsearch.service
    netstat -antp |grep 9200
    #首次启动如果确定步骤,未错的情况下,但是没有端口,等待一会再过滤试一下
    netstat -antp |grep 9200
    -------68主机操作------
    systemctl start elasticsearch.service
    netstat -antp |grep 9200
    elasticsearch默认的对外服务的HTTP端口是9200,节点之间交互的TCP端口是9300
    【6】通过浏览器去访问节点,可以看到节点信息
    192.168.200.67:9200
    192.168.200.68:9200
    【7】查看集群健康情况 可以看到status为green绿色
    http://192.168.200.67:9200/_cluster/health?pretty
    http://192.168.200.68:9200/_cluster/state?pretty
    【8】以上信息查看集群状态不直观,安装elasticsearch-head 插件,以便方便管理集群 源码安装会很慢,这里是二进制安装
       【8.1】安装elasticsearch-head插件(是基于Chrome V8引擎的JavaScript运行环境) ,需要作为独立服务进行安装,需要一个npm命令  2个节点都要进行操作
    -------67主机操作------
    tar xf node-v8.2.1-linux-x64.tar.gz -C /usr/local/
    ln -s /usr/local/node-v8.2.1-linux-x64/bin/node /usr/bin/node
    ln -s /usr/local/node-v8.2.1-linux-x64/bin/npm /usr/local/bin
    node -v   
    v8.2.1    #能够查看版本
    npm -v
    5.3.0    #能够查看版本
    -------68主机操作------
    tar xf node-v8.2.1-linux-x64.tar.gz -C /usr/local/
    ln -s /usr/local/node-v8.2.1-linux-x64/bin/node /usr/bin/node
    ln -s /usr/local/node-v8.2.1-linux-x64/bin/npm /usr/local/bin
    node -v   
    v8.2.1    #能够查看版本
    npm -v
    5.3.0    #能够查看版本
    ------------------
       【8.2】安装elasticsearch-head 作为独立节点并后台启动,
    这将启动运行在9100上的本地web服务器,该端口服务于elasticsearch-head
    -------67主机操作------
    tar xf elasticsearch-head.tar.gz -C /data/elk_data/   #在之前安装elasticsearch时修改配置文件的数据的位置
    cd /data/elk_data/
    chown -R elasticsearch:elasticsearch elasticsearch-head/
    cd /data/elk_data/elasticsearch-head/
    npm install
    #报错为正常现象,忽略即可
    cd _site/
    pwd
    cp app.js{,.bak}
    vim app.js
    4329      this.base_uri=this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.67:9200";   ##更改为自身的ip
    保存退出
    npm run start &
    systemctl start elasticsearch.service
    netstat -anpt |grep 9100
    -------68主机操作------
    tar xf elasticsearch-head.tar.gz -C /data/elk_data/   #在之前安装elasticsearch时修改配置文件的数据的位置
    cd /data/elk_data/
    chown -R elasticsearch:elasticsearch elasticsearch-head/
    cd /data/elk_data/elasticsearch-head/
    npm install
    #报错为正常现象,忽略即可
    cd _site/
    pwd
    cp app.js{,.bak}
    vim app.js
    4329       this.base_uri=this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.68:9200";   ##更改为自身的ip
    保存退出
    npm run start &
    systemctl start elasticsearch.service
    netstat -anpt |grep 9100
       【8.3】浏览器测试
    http://192.168.200.67:9100
    http://192.168.200.68:9100
        【8.4】为浏览器测试页面插入一个测试索引,索引为index-demo,类型为test ,可以看到成功创建,在一台机器上创建即可,一般工作中不用我们来编写,开发会做成的
    -------67主机操作------
    curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type:application/json' -d '{ "user": "zhangsan","mesg":"hello world" }'
        【8.5】刷新浏览器页面就可以看到了
    http://192.168.200.67:9100
    【9】安装logstash
    logstash一般部署在需要监控其日志的服务器中,在本实验中,logstash部署在apache服务器上,用于搜集apache服务器的日志信息并发送到elasticsearch中,在正式部署之前,先在node1上部署logstash,logstash也需要java环境。
    【9.1】在elk-node1上安装
    -------67主机操作------
    rpm -ivh logstash-5.5.1rpm
    systemctl start logstash.service
    ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
    【9.2】logstash命令使用
    logstash使用管道的方式进行日志的搜集处理和输出,有点类似linux系统的管道命令  xxx|ccc|ddd ,xxx执行完了会执行ccc,然后执行ddd
    在logstash中,包括了3个阶段
    输入input
    -f:通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash
    -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“”则默认使用 stdin作为输入,stdout作为输出)
    -t:测试配置文件是否正确,然后退出
    -------67主机操作------
    logstash -e 'input { stdin{} } output { stdout{} }'
    ###出现警告信息不用管,#出现9600时表示成功,上面出错信息可以忽略  ,在进行输入
    www.baidu.com
    www.sina.com.cn
    最后CTRL+C 退出
    ------------
    logstash -e 'input { stdin{} } output { student{ codec=>rubydebug} }'
    #出现9600时表示成功,在进行输入
    www.baidu.com
    www.sina.com.cn
    -------67主机操作------
    logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.200.67:9200"]} }'
    #在里面输入3行
    www.baidu.com
    www.sina.com.cn
    www.google.com
    【10】在浏览器中检测
    192.168.200.67:9100  
    //查看是否有www.baidu.com
    www.sina.com.cn
    www.google.com访问信息
    【11】logstash 配置文件使用
    logstash配置文件基本上由三部分组成,input、output以及用户需要才添加的filter,因此标准的配置文件格式如下:
    input{..}.
    filter{...}
    output{...}
    在每个部分中,也可以指定多个访问方式,例如我想要指定两个日志来源文件,则可以这样写:
    input{
    file{path =>"/var/log/messages"type =>"syslog"}
    file{path =>"/var/log/apache/access.log"type =>"apache"}
    }
    【12】配置收集系统日志
    将system.conf放到/etc/logstash/conf.d/目录中,logstash启动时便会加载
    -------67主机操作------
    cd /etc/logstash/conf.d
    vim system.conf
    input {
     file {
         path => "/var/log/messages"
              type => "system"
         start_position => "beginning"
      }
    }
    output {
     elasticsearch {
      hosts => ["192.168.200.67:9200"]
      index => "system-%{+YYYY.MM.dd}"
     }
    }
    保存退出
    systemctl restart logstash
    cd
    /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system.conf     //加载文件
    【13】在浏览器中进行查看
    192.168.200.67:9100 //查看索引
    【14】安装kibana
    -------67主机操作------
    rpm -ivh kibana-5.5.1-x86_64.rpm
    systemctl enable kibana.service
    vim /etc/kibana/kibana.yml
    2 server.port: 5601
    7 server.host: "0.0.0.0"
    21 elasticsearch.url: "http://192.168.200.67:9200"
    30 kibana.index: ".kibana"
    保存退出
    systemctl start kibana.service
    netstat -lnpt | grep 5601
    【15】在浏览器中进行访问
    192.168.200.67:9100 //查看索引
    http://192.168.200.67:5601  //看到kibana日志分析结果
    -------------------------
    【16】apache访问日志
    -------在主机69操作-------------
     注意:谁被采集日志就需要安装logstash
    iptables -F
    setenforce 0
    systemctl stop firewalld
    hostname apache
    bash
    yum -y install httpd
    java -version
    rpm -ivh logstash-5.5.1.rpm
    systemctl enable logstash.service
    systemctl start httpd.service
    cd  /etc/logstash/conf.d/
    vim apache_log.conf
    input {
     file {
           path => "/var/log/httpd/access_log"   #指定apache的访问日志位置
               type => "access"
           start_position => "beginning"
     }
     file {
              path => "/var/log/httpd/error_log"
              type => "error"
              start_position => "beginning"
        }
    }
     output {
     if [type] == "access" {
       elasticsearch {
      hosts => ["192.168.200.67:9200"]
      index => "apache_access-%{+YYYY.MM.dd}"
            }
       }
        if [type] == "error" {
       elasticsearch {
      hosts => ["192.168.200.67:9200"]
      index => "apache_error-%{+YYYY.MM.dd}"
           }
       }
          }
    保存退出
    /usr/share/logstash/bin/logstash -f apache_log.conf
    ##等出现9600
    在浏览器中访问apache
    192.168.200.69
    在看192.168.200.67:9200就会发现多了一个apache的访问日志
    在kibana中为apache添加索引

    ------------------实验完成!!!!!!!!-------------
     
     
  • 相关阅读:
    A Node Influence Based Label Propagation Algorithm for Community detection in networks 文章算法实现的疑问
    Fast Newman-FN算法以及模块度定义介绍
    Label Propagation Algorithm LPA 标签传播算法解析及matlab代码实现
    设计一个smartnic
    Intel GEN11 GPU
    Intel GEN9 GPU
    Shared Virtual Memory (SVM) Functions
    connect via ssh to virtualbox guest vm without knowing ip address
    smartnic
    技术精品翻译
  • 原文地址:https://www.cnblogs.com/elin989898/p/12011113.html
Copyright © 2011-2022 走看看