ELK日志分析系统

ELK概述

ELK简介

ELK是由这个三种(Elasticsearch、Logstash、Kibana)工具组成

优点

  1. 提高安全性
  2. 集中存放日志

缺点

  1. 对日志的分析困难

ELK日志分析过程

  1. 将日志进行集中化管理
  2. 将日志格式化(Logstash)
  3. 对格式化后的数据进行索引和存储(Elasticsearch)
  4. 前端数据的展示(Kibana)
  5. 用户通过的自已的浏览器访问Kibana页面查看

ELK日志分析解析

Elasticsearch的概述

  1. 提供了一个分布式多用户能力的全文搜索引擎

Elasticsearch核心概念

  1. 接近实时
  2. 集群
  3. 节点
  4. 索引
  5. 索引(库)> 类型(表)> 文档(记录)
  6. 分片和副本

Logstash概述

  1. 一款强大的数据处理工具
  2. 可实现数据传输、格式处理、格式化输出
  3. 数据输入、数据加工(如过滤,改写等)以及数据输出

LogStash主要组件·

  1. Shipper
  2. lndexer
  3. Broker
  4. Search and Storage
  5. Web Interface

Kibana概述

  1. 一个针对Elasticsearch的开源分析及可视化平台
  2. 搜索、查看存储在Elasticsearch索引中的数据
  3. 通过各种图表进行高级数据分析及展示

Kibana主要功能

  1. Elasticsearch无缝之集成
  2. 整合数据,复杂数据分析
  3. 让更多团队成员受益
  4. 接口灵活,分享更容易
  5. 配置简单,可视化多数据源
  6. 简单数据导出

部署ELK日志分析系统

拓扑图

在这里插入图片描述

需求

  1. 配置ELK日志分析群集
  2. 使用logstash收集Apache日志信息
  3. 由elasticsearch存储和建立索引
  4. 使用Kibana查看分析日志

流程

配置elasticsearch环境
node1与node2除了节点名和主机名分别为node1和node2,其他配置都一样

vi /etc/hosts    

20.0.0.14  node1
20.0.0.16  node2

[root@node1 ~]# java -version       
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

[root@node1 ~]# cd elk/
[root@node1 elk]# ll
[root@node1 elk]# rpm -ivh elasticsearch-5.5.0.rpm    
[root@node1 elk]# systemctl daemon-reload 
[root@node1 elk]# systemctl enable elasticsearch.service 
[root@node1 elasticsearch]# cp -p elasticsearch.yml elasticsearch.yml.bak

[root@node1 elasticsearch]# vim elasticsearch.yml
17: cluster.name: my-elk-cluster 
23: node.name: 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  
59: http.port: 9200   
68: discovery.zen.ping.unicast.hosts: ["node1", "node2"]  


[root@node1 elasticsearch]# mkdir -p /data/elk_data
[root@node1 elasticsearch]# id elasticsearch           
uid=990(elasticsearch) gid=985(elasticsearch) 组=985(elasticsearch)
[root@node1 elasticsearch]# chown elasticsearch.elasticsearch /data/elk_data/    
[root@node1 elasticsearch]# systemctl start elasticsearch.service 
[root@node1 elasticsearch]# netstat -anpt | grep 9200   

本机网页上测试

查看节点1的相关信息
在这里插入图片描述
查看节点2的相关信息
在这里插入图片描述
查看集群健康检查和状态
在这里插入图片描述
查看集群属性
在这里插入图片描述

安装elasticsearch-head插件

2台节点服务器同时做

  1. 安装elasticsearch-head插件,上述查看集群的方式极其不方便,我们可以通过安装elasticsearch-head插件来管理集群
上传node-v8.2.1.tar.gz 到 /opt
[root@node1 ~]# yum -y install gcc gcc-c++ make
[root@node1 ~]# cd /opt
[root@node1 /opt]# tar zxvf node-v8.2.1.tar.gz
[root@node1 /opt]# cd node-v8.2.1/
[root@node1 /node-v8.2.1]# ./configure
[root@node1 /node-v8.2.1]# make -j3 && make install   
  1. 安装phyantomjs前端框架
上传phantomjs-2.1.1-linux-x86_64.tar.bz2 
[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 
[root@node1 ~]# cd phantomjs-2.1.1-linux-x86_64/
[root@node1 phantomjs-2.1.1-linux-x86_64 ]# cd bin/
[root@node1 bin ]# cp phantomjs /usr/local/bin/
  1. 安装elasticsearch-head 可视化工具
上传elasticsearch-head.tar.gz
[root@node1 ~]# tar zxvf elasticsearch-head.tar.gz
[root@node1 ~]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm install  
  1. 修改主配置文件
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml    
http.cors.enabled: true     
http.cors.allow-origin: "*"     
[root@node1 ~]# systemctl restart elasticsearch.service 

[root@node1 ~]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start &   
[root@node1 elasticsearch-head]# 
> elasticsearch-head@0.0.0 start /root/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

[root@node1 elasticsearch-head]# netstat -anpt | grep 9100
  1. 在浏览器输入 20.0.0.14:9100 测试一下
  2. 在这里插入图片描述

在这里插入图片描述

安装logstash

  1. 安装apache服务(httpd)
[root@apache ~]# yum  -y  install  httpd
[root@apache ~]# java -version   
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
[root@apache ~]# cd /var/log/httpd/
[root@apache httpd]# ll     
[root@apache httpd]# systemctl start httpd
[root@apache httpd]# ll    
  1. 安装logstash
上传logstash-5.5.1.rpm
[root@apache httpd]# rpm -ivh logstash-5.5.1.rpm 
[root@apache httpd]# rpm -qc logstash    
/etc/logstash/jvm.options
/etc/logstash/logstash.yml
/etc/logstash/startup.options

[root@apache httpd]# systemctl start logstash.service 
[root@apache httpd]# systemctl enable logstash.service 
[root@apache  httpd]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/   
  1. 输入采用标准输入,输出采用标准输出----登录 20.0.0.13 在apache服务器上
[root@apache ]# logstash -e 'input { stdin{} } output { stdout{} }'   
www.baidu.com   #  输入www.baidu.com
2021-01-06T15:40:04.913Z apache www.baidu.comwww.baidu.com
  1. 用 rubydebug 显示详细信息输出,code为一种编解码器
[root@apache httpd]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
www.baidu.com    
{
    "@timestamp" => 2021-01-06T15:32:59.945Z,
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}
  1. 使用logstash将信息写入elasticsearch输入 输出 对接
[root@apache httpd]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
www.baidu.com   
{
    "@timestamp" => 2021-01-06T15:32:59.945Z,
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}
  1. 测试系统日志能否被采集
[root@apache ]# chmod o+r /var/log/messages  
[root@apache ]# ll /var/log/messages       
-rw----r--. 1 root root 180190 1月   6 12:57 /var/log/messages
[root@apache ]# vim /etc/logstash/conf.d/system.conf
input {
       file{
         path => "/var/log/messages"
         type => "system"
         start_position => "beginning"
         }
      }

output {
        elasticsearch {
          hosts => ["192.168.1.12:9200"]
          index => "system-%{+YYYY.MM.dd}"
          }
       } 

[root@node1 ]# systemctl restart elasticsearch

在这里插入图片描述

安装Kibana

在node2节点上

[root@node2 ~]# cd /usr/local/src/
[root@node2 src]# rpm -ivh kibana-5.5.1-x86_64.rpm 
[root@node2 src]# cd /etc/kibana/
[root@node2 kibana]# ll       
总用量 8
-rw-r--r--. 1 root root 4649 7月  19 2017 kibana.yml

[root@node1 kibana]# vim kibana.yml
 server.port: 5601			
 server.host: "0.0.0.0"		
 elasticsearch.url: "http://192.168.1.12:9200" 
 kibana.index: ".kibana"		
[root@node2 kibana]# systemctl start kibana
[root@node2 kibana]# systemctl enable kibana

页面查看20.0.0.16:5601
在这里插入图片描述
创建一个索引名字Index name pattern:system-* ## 这是对接系统的日志文件
在这里插入图片描述

对接Apache日志文件

[root@apache ~]cd /etc/logstash/conf.d
[root@apache conf.d]# vim apache_log.conf 
input {
       file{
         path => "/var/log/httpd/access_log"   
         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.1.12:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
         }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.1.12:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
         }
        }
       }

[root@apache conf.d]# logstash -f apache_log.conf    

在这里插入图片描述创建索引
在这里插入图片描述
apache_access
在这里插入图片描述
apache_error
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值