ELK日志分析系统

日志服务器

  • 提高安全性
  • 集中存放日志
  • 缺陷
  •    对日志的分析困难
    

ELK日志分析系统

  • Elasticsearch
  • Logstash
  • Kibana

日志处理步骤

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

Elasticsearch

  • 提供了一个分布式多用户能力的全文搜索引擎
    Elasticsearch核心概念
  • 核心实时
  • 集群
  • 节点
  • 索引
  •    索引(库)➡类型(表)→文档(记录)
    
  • 分片和副本

Logstash介绍

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

LogStash主要组件

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

Kibana

  • 一个针对Elasticsearch的开源分析及可视化平台
  • 搜索、查看存储再Elasticsearch索引中的数据
  • 通过各种图表进行高级数据分析及展示
    Kibana主要功能
  • Elasticsearch无缝之集成
  • 整合数据,复杂数据分析
  • 让更多团队成员受益
  • 接口灵活,分享更容易
  • 配置简单,可视化多数据源
  • 简单数据导出

案例拓补

在这里插入图片描述

需求

  • 配置ELK日志分析群集
  • 使用Logstash收集日志
  • 使用Kibana查看分析日志

Elasticsearch配置

安装密钥及elasticsearch源

[root@node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# vi elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

[root@node1 ~]# yum list       #查看yum清单
[root@node1 ~]# yum install elasticsearch -y    #安装elasticsearch
[root@node1 ~]# yum install java -y      #安装Java
[root@node1 ~]# java -version           #查看Java版本
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 yum.repos.d]# vi /etc/elasticsearch/elasticsearch.yml
17行 集群名称
cluster.name: elastic

23行 节点名称
node.name: linux-node1

33行 工作目录
path.data: /data/es-data
path.logs: /var/log/elasticsearch/

43行 防止交换swap分区
bootstrap.memory_lock: true

54行 监听网络
network.host: 0.0.0.0

58行 端口
http.port: 9200

创建目录及开启服务
[root@node1 yum.repos.d]# mkdir -p /data/es-data
[root@node1 yum.repos.d]# chown -R elasticsearch:elasticsearch /data/es-data
[root@node1 yum.repos.d]# systemctl start elasticsearch.service 
[root@node1 yum.repos.d]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      54134/java

测试
http://20.0.0.10:9200

[root@node1 yum.repos.d]# curl -i -XGET 'http://20.0.0.20:9200/_count?pretty' -d '{
> "query": {
>     "match_all": {}
> }
> }'
HTTP/1.1 200 OK       #输出项
Content-Type: application/json; charset=UTF-8
Content-Length: 95

{
  "count" : 0,
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "failed" : 0
  }
}

[root@node2 yum.repos.d]# curl -i -XGET 'http://20.0.0.10:9200/_count?pretty' -d '{
> "query": {
>     "match_all": {}
> }
> }'
HTTP/1.1 200 OK      #输出项
Content-Type: application/json; charset=UTF-8
Content-Length: 95

{
  "count" : 0,
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "failed" : 0
  }
}
安装Elasticsearch插件
[root@node1 yum.repos.d]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

测试
http://20.0.0.10:9200/_plugin/head/

elasticsearch集群部署

[root@node1 yum.repos.d]# vi /etc/elasticsearch/elasticsearch.yml
69行 单播列表自动发现机制
discovery.zen.ping.unicast.hosts: ["20.0.0.10", "20.0.0.20"]

重启服务
[root@node1 yum.repos.d]# systemctl restart elasticsearch.service

测试
http://20.0.0.10:9200/_plugin/head/

安装监控组件

[root@node1 elasticsearch]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

测试
在这里插入图片描述
在这里插入图片描述
Logstash部署(apache上部署)

安装httpd并开启服务
[root@node1 elasticsearch]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@node1 elasticsearch]# vi /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

安装Logstash
[root@node1 elasticsearch]# yum install logstash -y

安装java环境,没有自带安装使用yum -y install java安装
[root@apache ~]# yum -y install java
[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 bin]# ln -s /opt/logstash/bin/logstash /usr/local/bin/

logstash(apache)与elasticsearch(node)功能是否正常,做对接测试
[root@apache bin]# logstash -e 'input { stdin{} } output { stdout{} }'
Settings: Default filter workers: 1
Logstash startup completed
www.baidu.com                       
2020-11-18T07:53:59.480Z apache www.baidu.com

logstash命令选项解释:

  • -f:指定logstash的配置文件,根据配置文件配置logstash
  • -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“ ”,则默认使用stdin做输入,stdout为输出)
  • -t:测试配置文件是否正确,然后退出
  • #输入采用标准输入,输出采用标准输出
使用rubydebug显示详细输出
[root@apache bin]# logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }'
Settings: Default filter workers: 1
Logstash startup completed
www.baidu.com
{
       "message" => "www.baidu.com",
      "@version" => "1",
    "@timestamp" => "2020-11-18T08:40:57.598Z",
          "host" => "apache"
}

使用logstash将信息输出给elasticsearch
[root@apache bin]# logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["20.0.0.10:9200"] } }'
Settings: Default filter workers: 1
Logstash startup completed
abc123      #输入内容
tom456
123jerry

在logstash收集系统日志

logstash配置文件主要由三部分组成:input、output、filter
[root@apache bin]# chmod o+r /var/log/messages   #允许其他用户访问
[root@apache bin]#  ll /var/log/messages
-rw----r--. 1 root root 250721 11月 18 16:40 /var/log/message

[root@apache ~]# vi /etc/logstash/conf.d/system.conf
input {                    #logstash输入:从/var/log/messages输入,类型为system,起始位                     置为从头开始
        file {
          path => "/var/log/messages"
          type => "system"
          start_position => "beginning"
        }
      }

output {                #logstash输出:输出给elasticsearch(以IP地址指定位置)
        elasticsearch {
        hosts => ["20.0.0.10:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
      }

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

安装kibana

添加logstash配置,收集apache服务的访问日志和错误日志中的数据

上传kibana-4.3.1-linux-x64.tar.gz到/root下
[root@node1 ~]# tar zxf kibana-4.3.1-linux-x64.tar.gz
[root@node1 ~]# mv kibana-4.3.1-linux-x64 kibana
[root@node1 ~]# mv kibana /usr/local/
[root@node1 ~]# cd /usr/local/kibana/
[root@node1 kibana]# vi config/kibana.yml

//2行 kibana打开的端口
server.port: 5601

//5行 kibana侦听的地址
server.host: "0.0.0.0"


//12行 和elasticsearch建立联系
elasticsearch.url: "http://20.0.0.10:9200"

//20行 在elasticsearch中添加.kibana索引
kibana.index: ".kibana"

[root@node1 kibana]# yum -y install screen

启动kibana
[root@node1 kibana]# /usr/local/kibana/bin/kibana
[root@apache ~]# cd /etc/logstash/conf.d/
[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 => ["20.0.0.10:9200"]
            index => "apache_access-%{+YYY.MM.dd}"
          }
        }
        if [type] == "error" {
          elasticsearch {
            hosts => ["20.0.0.10:9200"]
            index => "apache_error-%{+YYY.MM.dd}"
          }
        }
    }

[root@apache conf.d]# logstash -f apache_log.conf    #指定logstash的配置文件,根据apache_log.conf配置logstash(-f可以不重启加载)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值