ELK分布式集群日志分析系统

一、基本概念:

	ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。
  1. Elasticsearch 是一个搜索和分析引擎。

  2. Logstash是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等存储库中。

  3. Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

    ELK日志系统数据流图如下:
    在这里插入图片描述

一个完整的集中式日志系统,需要包含以下几个主要特点:

  1. 收集-能够采集多种来源的日志数据
  2. 传输-能够稳定的把日志数据传输到中央系统
  3. 存储-如何存储日志数据
  4. 分析-可以支持 UI 分析
  5. 警告-能够提供错误报告,监控机制

二、分布式图解

在这里插入图片描述

三、搭建过程

  1. master部署Apache服务,并部署logstash收
  2. Slave1部署elasticsearch和kibana
  3. Slave2部署elasticsearch
  4. Proxy 部署elasticsearch

三台elasticsearch构成ELS群集

  1. 部署elasticsearch(这里以slave1为列)

    1.1、由于之前配置好的hosts映射,主机名,防火墙
    
[root@slave1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@slave1 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@slave1 yum.repos.d]# yum install elasticsearch -y
[root@slave1 yum.repos.d]# yum install java -y
[root@slave1 yum.repos.d]# java -version
1.2、修改配置文件
[root@slave1 yum.repos.d]# cd /etc/elasticsearch/
[root@slave1 elasticsearch]# ls
elasticsearch.yml  logging.yml  scripts
[root@slave1 elasticsearch]# cp -p  elasticsearch.yml elasticsearch.yml.bak
[root@slave1 elasticsearch]# egrep -v "^$|^#" elasticsearch.yml
cluster.name: elk-cluster  #集群名称
node.name: slave1		#当前节点名
path.data: /data/elk-data	#数据存储位置(目录不存在,需要创建)
path.logs: /var/log/elasticsearch/	#日志文件存放的位置
bootstrap.memory_lock: false
##true:允许内存中的数据交还给SWAP,flase:不允许内存中的数据交还给SWAP。 选择false,因为swap分区实在硬盘上建立的,如果内存不够,数据溢出,分到硬盘上的话,会影响速度

network.host: 0.0.0.0	#监听地址,0.0.0.0表示网段
http.port: 9200	#ES端口号,外部通讯的端口。PS:9300是集群内部通讯端口
discovery.zen.ping.unicast.hosts: ["slave1", "slave2","proxy"] #集群中包含的节点名
[root@slave1 elasticsearch]# mkdir -p /data/elk-data
[root@slave1 elasticsearch]# id elasticsearch
uid=997(elasticsearch) gid=994(elasticsearch) 组=994(elasticsearch)
[root@slave1 elasticsearch]# chown elasticsearch.elasticsearch /data/elk-data/
[root@slave1 elasticsearch]# systemctl start elasticsearch.service
[root@slave1 ~]# systemctl enable elasticsearch
[root@slave1 elasticsearch]# netstat -anpt | grep 9200
[root@slave1 elasticsearch]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      	10128/java   
网页测试:

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

群集健康状态检查

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

群集属性状态 ,可以看到群集内部通信端口9300

在这里插入图片描述

  1. 安装elasticsearch-head插件(可视化工具,以slave1为列)

    2.1、安装
    
    root@slave1-elasticsearch]#/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
    
    安装位置:/usr/share/elasticsearch/plugins/head
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述创建一个索引信息,创建索引为index-demo,类型为test,可以看到成功创建,这里的数据会被存储到ES集群中。

    [root@slave1 head]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello}'
    

    刷新一下,可以看到存储的分片处理与备份,暂时不存在节点间的主备关系。加粗的是主文件的,细框的是备份文件,不论哪个节点宕机,存储都不会丢失,很安全,三个节点共10个分片
    利用组件的复合查询进行索引的创建、查询、删除
    创建索引index-demo2
    在这里插入图片描述

    提交后查看:
    在这里插入图片描述

    可看到分片存储情况
    在这里插入图片描述

    查询
    在这里插入图片描述

    设置主备节点,slave1为主,slave2为备,proxy为备
    先关闭slave2、proxy的elasticsearch,重启slave1服务,再开启slave2、proxy (主备由先后开启服务决定),刷新查看分片情况:
    在这里插入图片描述

  2. elasticsearch的监控组件安装

    3.1、生产环境中要修改
    
    [root@slave1 ~]# vi /etc/security/limits.conf 
    * soft nofile 65535
    * hard nofile 65535
    
    #解决de-01和node-02日志提示不让锁内存
    #末尾插入
    elasticsearch soft memlock unlimited
    elasticsearch hard memlock unlimited
    systemctl stop elasticsearch.service
    systemctl start elasticsearch.service
    访问:http://192.168.254.241:9200/_plugin/kopf/#!/cluster
    

    在这里插入图片描述

  3. 部署Apache、logstash(master部署)

     4.1、安装httpd
    
    [root@master ~]# yum install httpd -y
    [root@master ~]# systemctl enable httpd
    查看日志:
    [root@master ~]# ll /var/log/httpd/
    总用量 2544
    -rw-r--r-- 1 root root 2588919 6月   7 15:10 access_log
    -rw-r--r-- 1 root root   11353 6月   8 10:28 error_log
    
    4.2、安装logstash
    #准备yum源
    
    [root@master ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    [root@master ~]# cd /etc/yum.repos.d/
    [root@master yum.repos.d]# vim 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
    [root@master ~]# yum install logstash -y  
    [root@master ~]# ln -s /opt/logstash/bin/logstash /usr/local/bin/
    [root@master ~]# systemctl start logstash.service
    [root@master ~]# systemctl enable logstash.service
    下载java
    [root@master ~]# yum install java -y
    [root@master ~]# java -version
    openjdk version "1.8.0_292"
    OpenJDK Runtime Environment (build 1.8.0_292-b10)
    OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
    
    logstash(Apache)与elasticsearch (node)功能是否正常,做对接测试
    logstash字段描述解释:
    -f通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
     -e后面跟着字符串该字符串可以被当做logstash的配置(如果是””,则默认使用stdin	做为输入、stdout作为输出)
     -t测试配置文件是否正确,然后退出
    定义输入和输出流,类似管道,并验证输入输出
    注:
      -e          执行操作
      input       标准输入
      { input }   插件
      output      标准输出
      { stdout }  插件
    
    [root@master ~]#  /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{} }'
    Settings: Default filter workers: 1
    Logstash startup completed
    www.baidu.com
    2021-06-08T07:36:47.483Z master www.baidu.com
    www.taobao.com
    2021-06-08T07:36:57.405Z master www.taobao.com
    验证输出格式化,使用 rubydebug 显示详细信息输出,code为一种编解码
    [root@master ~]# /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{codec 	=> rubydebug} }'
    Settings: Default filter workers: 1
    Logstash startup completed
    qky123
    {
           "message" => "qky123",
          "@version" => "1",
        "@timestamp" => "2021-06-08T07:38:00.924Z",
              "host" => "master"
    }
    
    使用logstash将信息写入elasticsearch输入输出对接
    
    [root@master ~]# /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch 	{ hosts => ["192.168.254.241:9200"] } }'
    Settings: Default filter workers: 1
    Logstash startup completed
    www.baidu.com
    www.taobao.com
    qky love zyn
    qky12377321
    
    在slave1上查看elasticsearch网页,成功输出
    

    在这里插入图片描述

    写入ES和同时生成文本
    
    [root@master ~]# /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch 	{ hosts => ["192.168.254.241:9200"] } stdout { codec => rubydebug } }'
    Settings: Default filter workers: 1
    Logstash startup completed
    nerver start keepalived
    {
           "message" => "nerver start keepalived",
          "@version" => "1",
        "@timestamp" => "2021-06-08T07:45:05.363Z",
              "host" => "master"
    }
    
    

    在这里插入图片描述

    测试系统日志能否被采集
    
    [root@master conf.d]# vim /etc/logstash/conf.d/system.conf
    input {
            file{
                path => "/var/log/messages"
                type => "system"   #系统类型
                start_position => "beginning"
                }
          }
    output {
            elasticsearch {
                hosts => ["192.168.254.241:9200"]
                index => "system-%{+YYYY.MM.dd}"
                }
           }
    [root@master ~]# logstash -f /etc/logstash/conf.d/system.conf #指定logstash配置文	件,输出系统日志
    重启slave1
    [root@slave1 ~]# systemctl restart elasticsearch.service
    刷新网页,查看索引数据,成功输出了系统日志
    

    在这里插入图片描述

    查看索引切片情况
    

    在这里插入图片描述

  4. 在slave1上安装kibana

    5.1、安装部署
    
    [root@slave1 ~]# mkdir -p /usr/local/kibana
    [root@slave1~]#wget 	https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
    [root@slave1 ~]# tar -zxvf kibana-4.3.1-linux-x64.tar.gz -C /usr/local/kibana/
    [root@slave1 ~]# vi  /usr/local/kibana/kibana-4.3.1-linux-x64/config/kibana.yml
    [root@slave1~]#egrep -v "^$|^#" 		/usr/local/kibana/kibana-4.3.1-linux-x64/config/kibana.yml
    server.port: 5601  #服务器端口
    server.host: "0.0.0.0" #监听地址
    elasticsearch.url: "http://192.168.254.241:9200" #和ES建立联系
    kibana.index: ".kibana"	#建立索引
    [root@slave1 ~]# yum install screen -y
    [root@slave1 ~]# /usr/local/kibana/kibana-4.3.1-linux-x64/bin/kibana #启动监听
    
    5.2、对接system系统日志
    访问网页:
    

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

    Discover里查看日志,图表式显示
    	![在这里插入图片描述](https://img-blog.csdnimg.cn/20210630180005190.png)
    
    
    
    5.3、对接Apache日志(master节点)
    
    [root@master ~]# cat /etc/logstash/conf.d/apache-log.conf
    input {  #输入Apache日志
           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 {  #输出到ES
            if [type] == "access" {
            elasticsearch {
              hosts => ["192.168.254.241:9200"]
              index => "apache_access.%{+YYYY.MM.dd}"
             }
            }
            if [type] == "error" {
            elasticsearch {
              hosts => ["192.168.254.241:9200"]
              index => "apache_error.%{+YYYY.MM.dd}"
             }
            }
           }
    
    #在logstash上输入Apache日志,输出到elasticsearch
    
    [root@master ~]# logstash -f /etc/logstash/conf.d/apache-log.conf  #启动脚本
    
    刷新ES网页,查看索引,建议先访问apache页面,否则可能刷新不出来
    
    在kibana创建Apache索引图表
    

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值