ELK日志分析系统部署及详细分析

一. ELK 日志分析系统

1.1 ELK日志分析系统的组成

  • Elasticsearch
  • Logstash
  • Kibana

1.2 日志处理步骤

  1. 将日志进行集中管理
  2. 将日志格式化(Logstash)并输出到Elasticsearch
  3. 对格式化后的数据进行时索引和存储(Elasticsearch)
  4. 前端数据的展示(Kibana)

二. Elasticsearch 介绍

2.1 Elasticsearch 的概述

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

2.2 Elasticsearch核心概念

  • 接近实时
  • 集群
  • 节点
  • 索引
    索引(库)-----类型(表)--------文档(记录)
  • 分片和副本

三. Logstash介绍

3.1 Logstash介绍

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

3.2 Logstash主要组件

  • Shipper
  • Indexer
  • Broker
  • Search and Storage
  • Web Interface

四. Kibana介绍

4.1 Kibana介绍

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

4.2 Kibana主要功能

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

五. 部署ELK日志分析系统

5.1 案例设计

主机操作系统主机名/IP地址主要软件
服务器CentOS 7.4node1/20.0.0.22Elasticsearch
服务器CentOS 7.4node2/20.0.0.23Elasticsearch
服务器CentOS 7.420.0.0.24Logstash\apache
服务器CentOS 7.420.0.0.21kibana

5.2 配置 elasticsearch环境

登录20.0.0.22更改主机名

hostnamectl set-hostname
su

配置主机名解析

vim /etc/hosts
  20.0.0.22 node1 
  20.0.0.23 node2

查看Java环境

  [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)

5.3 部署elasticsearch软件

1、安装 elasticsearch-rpm包

上传 elasticsearch-55.0.pm到/op目录下
[root@node1 ~]# cd /opt
[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm    //rpm直接安装elasticsearch软件包,没有依赖

2、加载系统服务
[root@node1 ~]# systemctl daemon-reload //以守护进程来加载,并开启elasticsearch服务
[root@node1 ~]# systemctl enable elasticsearch.service

3、更改 telasticsearch主配置文件

[root@node1 ~]# cd /etc/elasticsearch/
[root@node1 ~]# cp -p elasticsearch.yml elasticsearch.yml.bak           //备份配置文件时记得是使用cp -p 保存权限
[root@node1 ~]# vim elasticsearch.yml
  修改以下选项: 
   cluster.name: my-elk-cluster
    node.name: node1
    path.data: /data/elk_data
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: false
    network.host: 0.0.0.0
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["node1", "node2"]
    #######################################################################
    配置文件分析:
cluster.name: my-elk-cluster       #集群名
node.name: node1                      #当前节点名
path.data: /data/elk_data            #数据存放的位置
path.logs: /var/log/elasticsearch              #日志存放的位置
bootstrap.memory_lock: false                  #不在启动的时候锁定内存:锁定物理内存地址,防止es内存被交换出去
network.host: 0.0.0.0                                #提供服务绑定的IP地址,0.0.0.0代表所有地址
http.port: 9200                                         #侦听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]                    #集群发现通过单播实现(群集里包含的节点,并非指主机名)

4、创建数据存放路径并授权
[root@node1 ~]# mkdir -p /data/elk_data
[root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/ //赋予给elasticsearch管理

5、启动 elasticsearch是否成功开启
[root@node1 ~]# systemctl start elasticsearch.service
[root@node1 ~]# systemctl restart elasticsearch.service
[root@node1 ~]# netstat -anpt | grep 9200

6.查看节点信息用真机的浏览器打开

在谷歌浏览器输入:http:12.0.0.22:9200

{
  "name" : "node1",
  "cluster_name" : "my-elk-cluster",
  "cluster_uuid" : "O7vIIvwYT8KeQIMW9tc_HQ",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

5.4 安装 elasticsearch-head插件

上述查看集群的方式,及其不方便,我们可以通过安装 lasticsearch-head播件后,我们可以以可式化的方式,友好的查看到日志数据

5.41 安装node依赖包

(为了安装elasticsearch-head工具的依赖包),手工编译安装

上传node-v8.2.1.tar.gz 到/opt    编译安装node组件依赖包样耗时比较长47分钟
[root@node1 ~]# yum -y install gcc gcc-c++ make
[root@node1 ~]# cd /opt
[root@node1 ~]# tar zxvf node-v8.2.1.tar.gz
[root@node1 ~]# cd node-v8.2.1/
[root@node1 ~]# ./configure 
[root@node1 ~]#  make -j3       (时间比较久)
[root@node1 ~]# make install

5.42 安装phantomjs前端架构

上传phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt 
[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/
[root@node1 phantomjs-2.1.1-linux-x86_64]# ls
bin        examples     README.md
ChangeLog  LICENSE.BSD  third-party.txt
[root@node1 phantomjs-2.1.1-linux-x86_64]# cp bin/phantomjs /usr/local/bin/

5.43 安装elasticsearch-head数据可视化工具

1.安装elasticsearch-head

上传elasticsearch-head.tar.gz 到/opt 
[root@node1 ~]# tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm install

2.修改主配置文件

[root@node1 elasticsearch-head]#  vim /etc/elasticsearch/elasticsearch.yml
  在末尾加入
  http.cors.enabled: true          //开启跨域访问支持,默认为false
  http.cors.allow-origin: "*"      //跨域访问允许的域名地址
[root@node1 elasticsearch-head]#  systemctl restart elasticsearch.service 

3.开启elasticsearch-head工具,检查9100和9200端口

[root@node1 elasticsearch-head]# npm run start &
[1] 101019
[root@node1 elasticsearch-head]# netstat -anpt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      101029/grunt        
[root@node1 elasticsearch-head]# systemctl restart elasticsearch.service 
[root@node1 elasticsearch-head]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      101085/java  

4.真机使用谷歌浏览器测试

在真机上输入:12.0.0.22:9100 可以看到群集很健康是绿色的 在
elasticsearch后面的栏目中输入http:/19216810041:9200
在这里插入图片描述

5.5 logstash搭建安装(12.0.0.24)

5.51 安装logstash软件

上传logstash-5.5.1.rpm到/opt,改主机名为apache
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm
[root@apache opt]# systemctl start logstash.service 
[root@apache opt]# systemctl enable logstash.service 
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin        //做个软连接,让logstash的命令能让系统所识别

5.52 测试logstash软件

采用标准输入和输出的方式测试一下

[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{} }'
##需要稍微等一会
*******
输入:www.baidu.com
显示:2020-10-29T03:31:32.572Z apache www.baidu.com

使用rubydebug显示详细输出,codec是一种编解码器

[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
##需要稍微等一会
********
输入:www.baidu.com
显示:
{
    "@timestamp" => 2020-10-29T03:46:17.817Z,
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}

使用logstash将信息写入elasticsearch中

[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["12.0.0.24:9200"] } }'
*********
输入:
www.baidu.com
www.sina.com.cn
www.google.com.cn
输出:
终端没有显示,要去宿主机的浏览器访问12.0.0.24:9100
下面输入:http://12.0.0.24:9200/点击连接
发现概览里面多出一个logstash-2020.10.29的索引
点击数据浏览选择logstash-2020.10.29的索引,右边显示框会显示我们在终端输入的三个地址。

5.53 做对接配置

与系统日志(/var/log/messages)做对接配置

[root@apache opt]# cd /var/log/
[root@apache log]# ll messages
找到messages文件
-rw-------. 1 root     root   1033039 1029 11:58 messages
给他加个其他用户可读的权限
[root@apache log]# chmod o+r messages
[root@apache log]# ll messages
-rw----r--. 1 root root 1053833 1029 12:00 messages

对于想要对接的数据,在/etc/logstash/conf.d 新创建一个新的**.conf 文件**

[root@apache log]# vim /etc/logstash/conf.d/system.conf     //新建配置文件
input {
        file{
         path => "/var/log/messages"
         type => "system"
         start_position => "beginning"
         }
        }
output {
        elasticsearch {
         hosts => ["20.0.0.10:9200"]
         index => "system-%{+YYYY.MM.dd}"
         }
        }

去宿主机的浏览器访问20.0.0.10:9100 下面输入:http://20.0.0.10:9200/点击连接
发现概览里面多出一个system-2020.10.29的索引

5.6 kibana安装 (12.0.0.21)

上传kibana-5.5.1-x86_64.rpm包到/opt目录下,主机名改为kibana

[root@kibana opt]# rpm -ivh kibana-5.5.1-x86_64.rpm 
去到kibana目录,做个备份再编辑配置文件
[root@kibana opt]# cd /etc/kibana/
[root@kibana opt]# cp kibana.yml kibana.yml.bak
[root@kibana kibana]# vim kibana.yml
第二行:server.port: 5601
第七行:server.host: "0.0.0.0"
二十一:elasticsearch.url: "http://20.0.0.10:9200"
三十行:kibana.index: ".kibana"

开启kibana服务,设为开机自启

[root@kibana kibana]# systemctl start kibana.service 
[root@kibana kibana]# systemctl enable kibana.service 

真机输入20.0.0.40:5601

首次登录创建一个索引名字:system-* ##这是对接系统日志文件 Index name or pattern
##下面输入system-* 然后点最下面的create创建按钮 创建完成之后点击页面左上角的Discover界面就能看到system-*的信息
然后鼠标悬停再system-*下面一排里面的host上,会出现一个add按钮
点击add按钮,会发现右边界面只有time和host选项了,这样显示方式更友好

5.7 logstaicsearch对接apache日志文件,kibana可视化展示 (20.0.0.24)

[root@apache log]# cd /etc/logstash/conf.d/
[root@apache conf.d]# touch apache_log.conf
[root@apache conf.d]# vim 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 => ["20.0.0.10:9200"]
         index => "apache_access-%{+YYYY.MM.dd}"
         }
        }
        if [type] == "error" {
        elasticsearch {
         hosts => ["20.0.0.10:9200"]
         index => "apache_error-%{+YYYY.MM.dd}"
         }
        }
} 

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

宿主机访问12.0.0.22:9100

连接http://12.0.0.22:9200/
可以看到索引信息多了两条
apache_error-2020.10.29
apache_access-2020.10.29

再开一个网页访问20.0.0.40:5601

左边选项最后一个Management ----> Index Patterns ---->Create Index Pattern
分别创建 apache_access-* 和 apache_error-* 的索引
创建完之后要等一段时间才能有数据显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值