搭建企业级日志分析ELK

一、ELK日志分析系统简介

  • 日志服务器
    • 提高安全性
    • 集中存放日志
    • 缺陷
      • 对日志的分析很困难
  • ELK日志分析系统
    • Elasticsearch:通过搭建群集;存储日志数据,索引日志数据
    • Logstash:收集日志,收集到了后给es存储
    • Kibana:视图形式展现日志信息,更加人性化
  • 日志处理步骤
    • 1)将日志进行集中化管理
    • 2)将日志格式化(Logstash)并输出到Elasticsearch
    • 3)对格式化后的数据进行索引和存储(Elasticsearch)
    • 4)前段数据的展示(Kibana)

二、Elasticsearch介绍

  • Elasticsearch的概述
    • 提供了一个分布式多用户能力的全文搜索引擎
  • Elasticsearch核心概念
    • 接近实时(NRT)
      lasticsearch是一个接近实时的搜索品台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)
    • 集群(cluster)
      es具有集群机制,节点通过集群名称加入到集群中,同时在集群中的节点会有自己的唯一身份标识
    • 节点
      节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。项集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名,也可以自定义名字,是用于识别服务器对应的节点。
      节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为elasticsearch的集群。
    • 索引
      • 索引(库)——>类型(表)——>文档(记录)
    • 分片和副本
      分片的两个最主要原因:1.水平分割扩展,增大存储量 2.分布式并行跨分片操作,提高性能和吞吐量
      副本的两个最主要原因:1.高可用性,以应对分片或节点故障。处于这个原因,分片副本要在不同节点上 2.增大吞吐量,搜索可以并行在所有副本上执行

三、Logstash介绍

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

四、Logstash主要组件

  • Shipper日志收集者:负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来
  • Indexer日志存储者:负责接收日志并写入到本地文件
  • Broker日志Hub:负责连接多个Shipper和多个Indexer
  • Search and Storage:允许对时间进行搜索和存储
  • Web Interface:基于Web的展示界面

五、Kibana介绍

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

六、Kibana主要功能

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

七、搭建部署

7.1 部署环境

node1节点:192.168.10.10 主要软件:es数据库和Kibana
node2节点:192.168.10.20 主要软件:es数据库
Apache节点:192.168.10.30 主要软件:httpd和Logstash

7.2 三个节点添加主机映射,并安装JDK

vi /etc/hosts
192.168.10.10 node1
192.168.10.20 node2

tar zxf jdk-8u91-linux-x64.tar.gz
mv jdk1.8.0_91/ /usr/local/java
cd /etc/profile.d/

vim java.sh
export JAVA_HOME=/usr/local/java ##设置java根目录
export PATH=$PATH:$JAVA_HOME/bin ##在PATH环境变量中添加JAVA根目录下的bin子目录

source java.sh  ##java.sh脚本导入到环境变量,使其生效


7.3 node1节点和node2节点部署elasticsearch软件

注意:node1和node2部署过程相同,但是在修改配置文件时需要注意node.name的时候需要对应各节点自己的主机名

[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm
[root@node1 ~]# systemctl daemon-reload  
[root@node1 ~]# systemctl enable elasticsearch.service
##修改主配置文件
[root@node1 ~]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak ## 主配置文件做一个备份
[root@node1 ~]# vi /etc/elasticsearch/elasticsearch.yml 
17 cluster.name: my-elk-cluster  ## 17行修改集群名称两个节点保持一致
23 node.name: node1				 ## 23行修改节点名称两个节点对应自己的主机名
33 path.data: /data/elk_data     ## 33行修改工作目录
37 path.logs: /var/log/elasticsearch/  ## 37行修改工作目录
43 bootstrap.memory_lock: false  ## 43行防止交换swap分区
55 network.host: 0.0.0.0         ## 55行监听所有网段
59 http.port: 9200  			 ## 59行开启9200端口
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]    ## 68行集群发现通过单播实现,单播的主机名为"node1","node2"
## 创建工作目录授权,开启服务
[root@node1 ~]# mkdir -p /data/elk_data
[root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/
[root@node1 ~]# systemctl start elasticsearch.service
[root@node1 ~]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      93303/java     

打开浏览器测试
在这里插入图片描述
在这里插入图片描述

7.4 node1和node2节点安装elasticsearch-head插件

7.4.1 编译安装node组件

[root@node1 ~]# tar xzvf node-v8.2.1.tar.gz
[root@node1 ~]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure 
[root@node1 node-v8.2.1]# make && make install

7.4.2 安装phantomjs和elasticsearch-head

[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# mv phantomjs-2.1.1-linux-x86_64 /usr/local/src/
[root@node1 ~]# cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
[root@node1 ~]# tar zxvf elasticsearch-head.tar.gz
[root@node1 ~]# mv elasticsearch-head /usr/local/src/
[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm install

## 修改主配置文件在末尾添加如下内容
[root@node1 ~]# vi /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@node1 ~]# systemctl restart elasticsearch  ## 重启服务,使修改内容生效

## 启动elasticsearch-head服务在后台运行
[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start &

## 检查92009100是否正常启动
[root@node1 ~]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      93303/java          
[root@node1 ~]# netstat -anpt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      93426/grunt         

验证:
在这里插入图片描述
在这里插入图片描述

7.4.3 添加索引

curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

在这里插入图片描述
在这里插入图片描述

7.5 apache节点安装logstash

## 安装Apache服务
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
[root@apache ~]# netstat -anpt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      17190/httpd  

## 安装JDK
[root@apache ~]# tar zxf jdk-8u91-linux-x64.tar.gz 
[root@apache ~]# mv jdk1.8.0_91/ /usr/local/java
[root@apache ~]# cd /etc/profile.d/
[root@apache profile.d]# vim java.sh
[root@apache profile.d]# source java.sh 

## 安装logstash
## 上传依赖包到opt目录安装并启动服务
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm 
警告:logstash-5.5.1.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:logstash-1:5.5.1-1               ################################# [100%]
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash
[root@apache opt]# systemctl start logstash.service 
[root@apache opt]# systemctl enable logstash.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

## 使用Logstash将信息写入到es数据库中
[root@apache opt]# logstash -e 'input{ stdin{} } output {elasticsearch {hosts => ["192.168.10.10:9200"]}}'
www.baidu.com  ##输入
www.sina.com
www.google.com

浏览器访问192.168.10.10:9100查看索引信息
在这里插入图片描述

在这里插入图片描述

7.6 Apache主机做对接配置

[root@apache ~]# chmod o+r /var/log/messages =
[root@apache ~]# vim /etc/logstash/conf.d/system.conf
vi /etc/logstash/conf.d/system.conf 
input {
       file{   
        path => "/var/log/messages" ## 从/var/log/messages输入
        type => "system"   ## 类型为system 
        start_position => "beginning"   ## 起始位
        }
      }
output {   ## 输出:输出给es数据库
        elasticsearch {
          hosts => ["192.168.10.10:9200"] ## ip地址指定es数据库
          index => "system-%{+YYYY.MM.dd}"
          }
        }

[root@apache ~]# systemctl restart logstash.service 

在这里插入图片描述
在这里插入图片描述

7.7 在node1节点安装kibana

[root@node1 ~]# mv kibana-5.5.1-x86_64.rpm /usr/local/src/
[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm 
[root@node1 src]# cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak  ## 备份主配置文件
[root@node1 src]# vi /etc/kibana/kibana.yml  ## 修改主配置文件
2 server.port: 5601 ## 第2行,开启端口
7 server.host: "0.0.0.0" ## 第4行,监听网络
21 elasticsearch.url: "http://192.168.10.10:9200" ## 21行,es数据库的地址
30 kibana.index: ".kibana"
[root@node1 ~]# systemctl start kibana.service 
[root@node1 ~]# systemctl enable kibana.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.

浏览器访问kibana主页192.168.10.10:5601
在这里插入图片描述
首次登录提示创建一个索引名字:填入system-*
在这里插入图片描述

7.8 对接Apache主机的Apache日志文件

[root@apache ~]# cd /etc/logstash/conf.d/
[root@apache conf.d]# touch apache_log.conf
[root@apache conf.d]# vi apache_log.conf
input {
       file{
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
        }
       file{
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
        }

      }
output {
        if [type] == "access" {
        elasticsearch {
          hosts => ["192.168.10.10:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.10.10:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }

[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf

先访问Apache主页,再在Kibana主页中新建访问、错误日志的索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值