精华内容
下载资源
问答
  • ELK日志分析系统

    2021-01-06 11:18:08
    ELK日志分析系统ELK日志分析系统概述ELK日志分析系统简介日志处理步骤Elasticsearch介绍Elasticsearch的概述Elasticsearch核心概念Logstash介绍Logstash的概述Logstash主要组件Kibana介绍Kibana的概述Kibana主要功能...

    ELK日志分析系统概述

    ELK日志分析系统简介

    E:Elasticsearch——索引数据库
    L:Logstash——收集、输出(日志)
    K:Kibana——展示工具

    日志处理步骤

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

    Elasticsearch介绍

    Elasticsearch的概述

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

    Elasticsearch核心概念

    接近实时:索引文档时有轻微的延迟
    集群:es具有集群机制,节点通过集群名称加入集群中,节点具有唯一标识
    节点:存储数据并参与集群的索引和搜索功能
    索引:相当于关系型数据库的库,是相似文档的集合
    分片和副本:
    (1)分片机制:提升索引效率,提高存储量
    (2)副本:高可用性(解决单点故障),增大吞吐量
    

    Logstash介绍

    Logstash的概述

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

    Logstash主要组件

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

    Kibana介绍

    Kibana的概述

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

    Kibana主要功能

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

    部署ELK日志分析系统

    环境

    20.0.0.11 :node1
    20.0.0.12 :node2
    20.0.0.13 :apache
    

    1、构建es群集

    1)三台主机,关防火墙,查看是否有java环境
    [root@node1 ~]# systemctl stop firewalld
    [root@node1 ~]# setenforce 0
    [root@node1 ~]# java -version
    openjdk version "1.8.0_181"
    OpenJDK Runtime Environment (build 1.8.0_181-b13)
    OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)2)节点1、节点2 设置本地解析
    [root@node1 ~]# vim /etc/hosts
    20.0.0.11 node1
    20.0.0.12 node2
    
    (3)节点1、节点2安装部署es(在opt目录下导入es相关软件包)
    [root@node1 opt]# ls
    elasticsearch-5.5.0.rpm    logstash-5.5.1.rpm
    elasticsearch-head.tar.gz  node-v8.2.1.tar.gz
    kibana-5.5.1-x86_64.rpm    phantomjs-2.1.1-linux-x86_64.tar.bz2
    
    [root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm
    [root@node1 opt]# cp -p /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak	##备份原配置文件
    [root@node1 opt]# vim /etc/elasticsearch/elasticsearch.yml	##修改主配置文件
    17 cluster.name: elkjd	##els群集名称
    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	##监听全部IP
    59 http.port: 9200		##端口
    68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]	##单播节点名
    
    (4)创建数据存放路径并更改属组属主
    [root@node1 opt]# mkdir -p /data/elk_data
    [root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/5)启动 ES
    [root@node1 opt]# systemctl daemon-reload 	##加载系统服务
    [root@node1 opt]# systemctl enable elasticsearch.service 
    Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
    [root@node1 opt]# systemctl start elasticsearch.service 
    [root@node1 ~]# netstat -anpt | grep 9200	##这个端口需要多启动几次,有延时
    tcp6       0      0 :::9200                 :::*                    LISTEN      6677/java  
    

    (6)检验效果:访问网页
    在这里插入图片描述
    在这里插入图片描述
    检查集群健康:地址后方加入/_cluster/health?pretty
    检查集群状态:地址后方加入/_cluster/state?pretty在这里插入图片描述
    在这里插入图片描述

    7)两台节点安装 elasticsearch-head 插件
    
    [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 -j4		##用四线程编译,要等十几分钟
    [root@node1 node-v8.2.1]# make install
    
    (8)安装phantomjs(前端框架)
    
    [root@node1 opt]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
    [root@node1 opt]# cd phantomjs-2.1.1-linux-x86_64/
    [root@node1 phantomjs-2.1.1-linux-x86_64]# cd bin/
    [root@node1 bin]# ls
    phantomjs
    [root@node1 bin]# cp phantomjs /usr/local/bin/9)安装elasticsearch-head(数据可视化工具)
    
    [root@node1 opt]# tar zxvf elasticsearch-head.tar.gz
    [root@node1 opt]# cd elasticsearch-head/
    [root@node1 elasticsearch-head]# npm install
    
    (10)重新修改主配置文件 并 重启服务
    
    [root@node1 elasticsearch-head]# cd /
    [root@node1 /]# vim /etc/elasticsearch/elasticsearch.yml
    ##末行插入
    http.cors.enabled: true		##开启跨域访问支持,默认为false
    http.cors.allow-origin: "*"		##跨域访问允许的域名地址,支持使用正则
    [root@node1 elasticsearch-head]# systemctl restart elasticsearch.service
    
    (11)启动elasticsearch-head 并 检测端口是否开启
    
    [root@node1 elasticsearch-head]# npm run start & 启动
    [1] 13823
    [root@node1 elasticsearch-head]# 
    > elasticsearch-head@0.0.0 start /opt/elasticsearch-head
    > grunt server
    
    Running "connect:server" (connect) task
    Waiting forever...
    Started connect web server on http://localhost:9100
    ^C
    [root@node1 elasticsearch-head]# netstat -anpt | grep 9100
    tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      13833/grunt 
    

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

    创建索引,进行验证

    [root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"Nike","mesg":"Hello"}'
    {
      "_index" : "index-demo",
      "_type" : "test",
      "_id" : "1",
      "_version" : 1,
      "result" : "created",
      "_shards" : {
        "total" : 2,
        "successful" : 2,
        "failed" : 0
      },
      "created" : true
    }
    

    在这里插入图片描述
    2、配置Logstash

    1)在apache上安装httpd服务,并且部署安装 logstash
    
    [root@apache ~]# yum -y install httpd
    [root@apache ~]# systemctl start httpd
    #导入logstash
    [root@apache ~]# rpm -ivh logstash-5.5.1.rpm
    [root@apache ~]# systemctl start logstash.service 
    [root@apache ~]# systemctl enable logstash.service 
    Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
    [root@apache ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/2)与ES 节点进行对接测试
    Logstash这个命令测试
    字段描述解释:
    -f 通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
    -e 后面跟着字符串 该字符串可以被当做logstash的配置(如果是” ”,则默认使用stdin做为输入、stdout作为输出)
    -t 测试配置文件是否正确,然后退出
    
    [root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }' #标准输入和输出
    ##省略部分…………
    The stdin plugin is now waiting for input:
    09:46:35.448 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
    hello   #输入内容,回车结束
    2021-01-06T01:47:39.955Z apache hello  #解析
    www.baidu.com  #输入内容,回车结束
    2021-01-06T01:48:10.286Z apache www.baidu.com  #解析
    #测试完,退出
    
    (3)ruby 测试
    codec为一种编解码器
    
    [root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }' #标准输入,通过codec解码器以rubydebug的格式输出
    The stdin plugin is now waiting for input:
    09:49:40.523 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
    www.baidu.com  #输入内容,回车结束
    {                             #解析
        "@timestamp" => 2021-01-06T01:49:59.559Z,
          "@version" => "1",
              "host" => "apache",
           "message" => "www.baidu.com"
    }
    hello    #输入内容,回车结束
    {                              #解析
        "@timestamp" => 2021-01-06T01:50:06.163Z,
          "@version" => "1",
              "host" => "apache",
           "message" => "hello"
    }
    #测试完,退出
    
    (4)使用 logstash 将信息写入 ES[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.12:9200"] } }'
    The stdin plugin is now waiting for input:
    09:52:06.282 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
    www.baidu.com   #输入内容
    www.google.com
    hello
    #输完内容,退出
    

    检测
    在这里插入图片描述

    [root@apache ~]# ll /var/log/messages
    -rw-------. 1 root root 768098 16 10:14 /var/log/messages
    [root@apache ~]# chmod o+r /var/log/messages #给其它用户读的权限
    [root@apache ~]# cd /etc/logstash/conf.d/
    [root@apache conf.d]# ls
    [root@apache conf.d]# vim system.conf
    input {
           file{
            path => "/var/log/messages"
            type => "system"
            start_position => "beginning"
            }
          }
    output {
            elasticsearch {
              hosts => ["20.0.0.12:9200"]
              index => "system-%{+YYYY.MM.dd}"	##索引名
              }
            }
            
    [root@apache conf.d]# systemctl restart logstash.service 
    

    检测:
    在这里插入图片描述
    3、Kibana

    #kibana可以装任意主机上检测,我装在 node1上
    [root@node1 opt]# rpm -ivh kibana-5.5.1-x86_64.rpm 
    [root@node1 opt]# cd /etc/kibana/
    [root@node1 kibana]# ls
    kibana.yml
    [root@node1 kibana]# cp kibana.yml  kibana.yml.bak
    [root@node1 kibana]# vim kibana.yml
     2 server.port: 5601	##kibana端口
     7 server.host: "0.0.0.0"	##监听全部IP
    21 elasticsearch.url: "http://20.0.0.12:9200"	##与ES建立联系
    30 kibana.index: ".kibana"		##在ES中添加 .kibana 索引
    
    [root@node1 kibana]# systemctl start kibana.service 
    [root@node1 kibana]# systemctl enable kibana.service  
    Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
    

    验证:访问20.0.0.11:5601(首次登录提示创建一个索引名字:
    填入system-*,即对接系统日志文件名)
    在这里插入图片描述
    在这里插入图片描述
    对接apache主机

    [root@apache  conf.d]# vim web_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.12:9200"]
              index => "apache_access-%{+YYYY.MM.dd}"
              }
            }
            if [type] == "error" {
            elasticsearch {
              hosts => ["20.0.0.12:9200"]
              index => "apache_error-%{+YYYY.MM.dd}"
              }
            } 
            }
    [root@apache  conf.d]# logstash -f web_log.conf	#指定配置文件做测试
    

    检测:
    在这里插入图片描述
    #访问日志一开始没出来,记得要先访问下apache网址,才会产生访问日志

    进入 kibana 创建对应 索引,就可以使用图形界面查看日志分析了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    一句话让你记住ELK日志

    场景:双十一,各大电商平台访问量暴增,对应的访问日志暴增,系统维护人员需要对日志进行处理分析,但苦于数量之巨…

    一句话:为了解决大量日志分析困难的问题,所以可以配置ELK进行集中化管理;其中logstash负责收集和格式化数据,再将数据存储到es数据库中,es可通过创建分片和副本的形式,用来抗压和避免单点故障,最后通过kibana,可视化的简便的展示出数据效果。

    展开全文
  • ELK日志分析系统.pptx

    2020-12-21 13:18:48
    ELK日志分析系统.pptx
  • ELK日志分析系统搭建

    2020-09-21 09:47:09
    文章目录ELK日志分析系统一、ELK日志分析系统简介(一)日志服务器(二)ELK日志分析系统组成二、ELK日志分析系统搭建实战 一、ELK日志分析系统简介 (一)日志服务器 提高安全性 集中存放日志 缺点:对日志的分析...

    ELK日志分析系统

    一、ELK日志分析系统简介

    (一)日志服务器

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

    (二)ELK日志分析系统组成

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

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

    • Elasticsearch核心概念

    1. 接近实时

    2. 集群

    3. 节点

    4. 索引

      索引(库)→类型(表)→文档(记录)

    5. 分片和副本

    • Logstash介绍
    1. 一款强大的数据处理工具
    2. 可实现数据传输、格式处理、格式化输出
    3. 数据输入、数据加工(如过滤、改写等)
    • LogStash主要组件
    1. Shipper
    2. Indexer
    3. Broker
    4. Search and Storage
    5. Web Interface
    • Kibana介绍
    1. 一个针对Elasticsearch的开源分析及可视化平台
    2. 搜索、查看存储在Elasticsearch索引中的数据
    3. 通过各种图表进行高级数据分析及展示
    • Kibana主要功能
    1. Elasticsearch无缝之集成
    2. 整合数据,复杂数据分析
    3. 让更多团队成员受益
    4. 接口灵活,分享更容易
    5. 配置简单,可视化多数据源
    6. 简单数据导出

    二、ELK日志分析系统搭建实战

    • 实验环境:VMware Workstation 15.5、Xshell 6、Centos7.6
    • 软件包版本:elasticsearch-5.5.0、logstash-5.5.1、kibana-5.5.1、elasticsearch-head.tar、node-v8.2.1、phantomjs-2.1.1
    • 实验虚拟机IP分配
    设备名/作用IP
    node1:elasticsearch、elasticsearch-head192.168.50.133
    node2:elasticsearch、logstash、kibana192.168.50.134
    • 实验步骤

    1、为各台设备设置主机名并在host文件中添加主机名解析

    hostnamectl set-hostname node1    ## 节点1
    hostnamectl set-hostname node2    ## 节点2
    
    编辑host文件:vim /etc/hosts
    添加:
    192.168.50.133 node1
    192.168.50.134 node2
    

    2、关闭两台服务器的防火墙

    systemctl stop firewalld && setenforce 0
    

    3、在node1上安装es

    rpm -ivh elasticsearch-5.5.0.rpm    ## 安装
    systemctl daemon-reload    重载服务配置
    systemctl enable elasticsearch.service    ## 设置开机自启动
    

    4、编辑es配置文件并修改

    vim /etc/elasticsearch/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                      ## 提供服务绑定的IP地址,监听所有地址
    59 http.port: 9200                              ## 监听端口为9200
    68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]     ## 集群发现通过单播发现
    

    5、创建数据存放路径

    mkdir -p /data/elk_data
    chown elasticsearch.elasticsearch /data/elk_data/     ## 设置目录权限
    

    6、开启es服务

    systemctl start elasticsearch.service
    

    7、查看服务端口是否开启

    netstat -natp | grep 9200     ## 刚启动的话看不到9200端口,等10秒左右后就有了
    

    8、打开浏览器分别访问两个节点

    http://192.168.50.133:9200/
    http://192.168.50.134:9200/
    
    ## 节点1:
    {
      "name" : "node1",
      "cluster_name" : "my-elk-cluster",
      "cluster_uuid" : "Tl4HiPhqSLmvuCmK8slYtA",
      "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"
    }
    
    ## 节点2:
    {
      "name" : "node2",
      "cluster_name" : "my-elk_cluster",
      "cluster_uuid" : "VTnP4Wo2R3i4_3PQ-dtyDg",
      "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"
    }
    

    9、检查集群健康状态

    http://192.168.50.133:9200/_cluster/health?pretty
    http://192.168.50.134:9200/_cluster/health?pretty
    
    {
      "cluster_name" : "my-elk-cluster",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 1,
      "number_of_data_nodes" : 1,
      "active_primary_shards" : 0,
      "active_shards" : 0,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }
    
    {
      "cluster_name" : "my-elk_cluster",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 1,
      "number_of_data_nodes" : 1,
      "active_primary_shards" : 0,
      "active_shards" : 0,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }
    

    10、上面这种json格式并不友好,不能很好的监控群集状态,或进行一些数据索引的操作,所以我们再来安装一个lasticsearch-head数据可视化工具,安装这个工具前首先要安装node组件依赖包和phantomjs前端框架

    ## 安装node组件依赖包
    1.安装编译环境:yum -y install gcc gcc-c++ make
    2.解压缩:tar zxvf /opt/node-v8.2.1.tar.gz /opt
    3.进入软件目录进行配置:
    cd node-v8.2.1/
    ./configure
    4.编译:make -j3   ## 时间很长,需要耐心等待
    5.安装:make install
    

    11、安装phantomjs前端框架

    解压缩:tar jxvf /opt/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
    
    命令让系统识别:cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
    

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

    解压缩:tar zxvf /opt/elasticsearch-head.tar.gz -C /usr/local/src/
    进入目录:cd /usr/local/src/elasticsearch-head/
    安装:npm install
    
    编辑配置文件:vim /etc/elasticsearch/elasticsearch.yml
    添加如下两行:
    http.cors.enabled: true     ## 开启跨域访问支持,默认为false
    http.cors.allow-origin: "*"   ## 跨域访问允许的域名地址
    PS:注意这两行内容必须添加,否则无法访问head工具页面
    
    重启es服务:systemctl restart elasticsearch
    

    13、启动elasticsearch-head 启动服务

    cd /usr/local/src/elasticsearch-head/
    启动:npm run start &
    
    查看是否开启:
    [root@node1 elasticsearch-head]# netstat -natp | grep 9100
    tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      10654/grunt 
    

    现在es搭建完成,我们可以先创建一个索引

    在node1上创建索引为index-demo,类型为test,可以看到成功创建【注意:现在web页面创建索引,再输入命令插入】
    curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
    
    返回内容:
    {
      "_index" : "index-demo",
      "_type" : "test",
      "_id" : "1",
      "_version" : 1,
      "result" : "created",
      "_shards" : {
        "total" : 2,
        "successful" : 2,
        "failed" : 0
      },
      "created" : true
    }
    

    打开Web页面输入安装elasticsearch-head工具的服务器ip:http://192.168.50.133:9200/
    wHS29A.md.jpg

    14、在node2上安装logstash并进行相关设置

    1.安装rpm包:rpm -ivh logstash-5.5.1.rpm
    2.开启logstash:systemctl start logstash.service
    3.设置开机自启动:systemctl enable logstash.service
    4.将logstash命令建立软连接:ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
    
    ★logstash命令解释:
    -f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
    -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“ ”,则默认使用stdin作为输入,stdout作为输出)
    -t:测试配置文件是否正确,然后退出
    

    15、将logstash日志生成到elasticsearch中(系统日志)

    修改系统日志文件的权限:chmod o+r /var/log/messages
    
    编辑logstash配置文件:vim /etc/logstash/conf.d/system.conf
    写入以下内容:
    
    input {
        file{
          path => "/var/log/messages"
          type => "system"
          start_position => "beginning"
           }
          }
    output {
          elasticsearch {
            hosts => ["192.168.50.133:9200"]
            index => "system-%{+YYYY.MM.dd}"
             }
           }
           
    重启服务:systemctl restart logstash
    

    16、在node2上安装Kibana

    1.安装:rpm -ivh kibana-5.5.1-x86_64.rpm
    2.修改配置文件:vim /etc/kibana/kibana.yml
    
    2 server.port: 5601                ## 开启端口
    7 server.host: "0.0.0.0"           ## 侦听地址(全网段)
    21 elasticsearch.url: "http://192.168.50.133:9200"        ## 和elasticsearch建立关系
    30 kibana.index: ".kibana"          ## 在elasticsearch中添加.kibana索引
    
    3.启动服务:systemctl start kibana
      开机自启:systemctl enable kibana
    

    17、在Kibana中创建索引来查看从es中收集到的日志

    ①单击Management
    wHS6tH.jpg

    ②创建索引,输入索引名,点击create按钮创建
    wHSchd.md.jpg
    wHSR1I.md.jpg

    ③单击Discover按钮在左上角选择"system"即可在右侧查看到日志信息了
    wHSyAe.md.jpg

    展开全文
  • ELK日志分析系统.docx

    2021-10-07 20:44:25
    ELK日志分析系统.docx
  • ELK——ELK日志分析系统部署搭建ELK日志分析系统部署搭建日志分析前言日志分析传统方案ELK简介ELK工作原理图示ELK实战配置部署Elasticsearch基础环境安装配置部署插件安装插件测试部署Logstash数据搜集测试部署...

    ELK日志分析系统部署搭建

    日志分析前言

    • 在日常运维工作中,对于系统和业务日志的处理尤为重要
    • 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

    日志分析传统方案

    • 通常,日志被分散的储存在不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样繁琐且效率低下。当务之急是使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
    • 集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

    ELK简介

    • 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的 Web界面,可以帮你汇总、分析和搜索重要数据日志。
    • E:Elasticsearch,接收Logstash提交的日志,存储日志,弹性搜索,日志存储
    • L:Logstash,部署在产生日志的应用服务器上,用于收集日志,可以对你的日志进行收集、过滤、分析,并将其存储供以后使用
    • K:Kibana,日志展示,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web 界面,可以帮你汇总、分析和搜索重要数据日志

    ELK工作原理图示

    在这里插入图片描述

    产生日志—>收集日志→>存储日志->展示日志->查看日志

    ELK实战配置

    #环境
    elk-node1:192.168.100.10    #master机器
    elk-node2:192.168.100.20    #slave机器
    

    关于ELK-slave模式

    • master收集到日志后,会把一部分数据碎片到slave上(随机的一部分数据)同时,master和slave又都会各自做副本,并把副本放到对方机器上,这样就保证了数据不会丢失。
    • 如果master宕机了,那么客户端在日志采集配置中将elasticsearch主机指向改为slave,就可以保证ELK日志的正常采集和web展示。
    #域名解析
    [root@elk-node1 ~]# vim /etc/hosts
    192.168.100.10 elk-node1
    192.168.100.20 elk-node2
    [root@elk-node1 ~]# scp /etc/hosts 192.168.100.20:/etc/
    

    部署Elasticsearch

    基础环境安装

    #基础环境安装:elk-node1和elk-node2同时操作
    
    #下载并安装GPG-KEY
    [root@elk-node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch 
    
    #添加YUM仓库
    [root@elk-node1 ~]# vim /etc/yum.repos.d/elk.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            #仓库位置
    enabled=1                                                          #启用
    
    #安装elasticsearch
    [root@elk-node1 ~]# yum -y install elasticsearch redis nginx java  #redis作为数据库,nginx作为前端,java开发
    
    #测试java环境
    [root@elk-node1 ~]# 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)
    

    配置部署

    elk-node1 192.168.100.10

    #elk-node1
    
    #自定义日志存储目录
    [root@elk-node1 ~]# mkdir -p /data/es-data
    [root@elk-node1 ~]# chown -R elasticsearch.elasticsearch /data/
    
    #追加配置文件
    [root@elk-node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
    ...
    cluster.name: huanqiu                                                 #集群名称
    ...
    node.name: elk-node1                                                  #节点名称,建议与主机名一致
    ...
    path.data: /data/es-data                                              #数据存放路径
    ...
    path.logs: /var/log/elasticsearch/                                    #日志存放路径
    ...
    bootstrap.mlockall: true                                              #锁住内存,不被使用交换分区
    ...
    network.host: 0.0.0.0                                                 #网络设置,所有IP均可访问
    ...
    http.port: 9200                                                       #端口设置
    ...
    # discovery.zen.ping.unicast.hosts: ["host1", "host2"]
    discovery.zen.ping.multicast.enabled : false                          #关闭组播
    discovery.zen.ping.unicast.hosts: ["192.168.100.10","192.168.100.20"] #单播,唯一通信,集群由10和20组成
    [root@elk-node1 ~]# systemctl enable elasticsearch --now
    [root@elk-node1 ~]# netstat -antp | egrep "9200|9300"
    

    Web测试

    http://192.168.100.10:9200/
    

    在这里插入图片描述
    命令行测试

    [root@elk-node1 ~]# curl -i -XGET 'http://192.168.100.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
      }
    }
    

    elk-node2 192.168.100.20

    [root@elk-node2 ~]# mkdir -p /data/es-data
    [root@elk-node2 ~]# chown -R elasticsearch.elasticsearch /data/
    [root@elk-node2 ~]# vim /etc/elasticsearch/elasticsearch.yml
    cluster.name: huanqiu                                                 #组名(同组,组名必须一致)
    node.name: elk-node2                                                  #节点名称(和主机名一致)
    path.data: /data/es-data                                              #数据存放路径
    path.logs: /var/log/elasticsearch/                                    #日志存放路径
    bootstrap.mlockall: true                                              #锁住内存
    network.host: 0.0.0.0                                                 #网络设置,所有IP均可访问
    http.port: 9200                                                       #端口
    discovery.zen.ping.multicast.enabled: false                           #关闭组播
    discovery.zen.ping.unicast.hosts: ["192.168.100.10","192.168.100.20"] #单播,指明唯一通信,集群由10和20组成
    [root@elk-node2 ~]# systemctl enable elasticsearch --now
    [root@elk-node1 ~]# netstat -antp | egrep "9200|9300"
    

    Web测试

    http://192.168.100.20:9200/
    

    在这里插入图片描述

    插件安装

    elk-node1 192.168.100.10

    #elk-node1和elk-node2上都要安装
    
    #最实用的通过web界面来查看elasticsearch集群状态信息
    [root@elk-node1 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
    [root@elk-node1 ~]# chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins/
    [root@elk-node1 ~]# systemctl restart elasticsearch
    
    #通过web界面管理和监控 elasticsearch 集群状态信息
    [root@elk-node1 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
    [root@elk-node1 ~]# systemctl restart elasticsearch
    

    elk-node2 192.168.100.20

    [root@elk-node2 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
    [root@elk-node2 ~]# chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins/
    
    [root@elk-node2 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
    [root@elk-node2 ~]# systemctl restart elasticsearch
    

    插件测试

    两个节点同样的测试方法

    http://192.168.100.20:9200/_plugin/head/
    

    在这里插入图片描述

    http://192.168.100.20:9200/_plugin/kopf/
    

    在这里插入图片描述

    部署Logstash

    搜集日志 部署在应用服务器上

    elk-node1 192.168.100.10

    #elk-node1和elk-node2模拟应用服务器,与分离部署本质区别只是上报地址不同
    
    #下载并安装GPG-KEY
    [root@elk-node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    
    #添加YUM仓库
    [root@elk-node1 ~]# vim /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
    enabled=1
    
    #安装logstash
    [root@elk-node1 ~]# yum -y install logstash
    

    elk-node2 192.168.100.20

    [root@elk-node2 ~]#  rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    [root@elk-node2 ~]# vim /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
    enabled=1
    [root@elk-node2 ~]# yum -y install logstash
    

    数据搜集测试

    命令行单行操作

    #基本输入输出
    [root@elk-node1 ~]# /opt/logstash/bin/logstash -e 'input {stdin{}} output {stdout {}}'
    # -e执行 input{}:输入函数 output{}:输出函数 stdin{}:标准输入 stdout{}:标准输出
    
    #使用rubydebug详细输出<列表>
    [root@elk-node1 ~]# /opt/logstash/bin/logstash -e 'input {stdin{}} output {stdout {codec => rubydebug}}'
    
    #把内容写到elasticsearch中
    [root@elk-node1 ~]# /opt/logstash/bin/logstash -e 'input {stdin{}} output { elasticsearch { hosts => ["192.168.100.10:9200"] } }'
    123                                                                   #输入123测试
    Settings: Default filter workers: 1
    Logstash startup completed
    
    http://192.168.100.20:9200/_plugin/head/
    

    说明logstash搜集信息时会交给elasticsearch进行存储
    在这里插入图片描述

    #写在elasticsearch后又在文件中写一份
    [root@elk-node1 ~]# /opt/logstash/bin/logstash -e 'input {stdin{}} output { stdout { codec => rubydebug {} } elasticsearch { hosts => ["192.168.100.10:9200"] } }'
    

    在这里插入图片描述
    logstach配置文件编写

    简单的收集方式
    [root@elk-node1 ~]# vim /etc/logstash/conf.d/01-logstash.conf          #编写配置文件
    input { stdin {} }
    output {
            elasticsearch { hosts => ["192.168.100.10:9200"] }             #输入进elasticsearch
            stdout { codec => rubydebug }                                  #同时输出到屏幕上
    }
    #执行
    [root@elk-node1 ~]# /opt/logstash/bin/logstash -f /etc/logstash/conf.d/01-logstash.conf
    hahahaha    
    {
           "message" => "hahahaha",
          "@version" => "1",
        "@timestamp" => "2021-06-14T09:23:44.864Z",
              "host" => "elk-node1"
    }
    http://192.168.100.20:9200/_plugin/head/
    

    在这里插入图片描述

    收集系统日志
    [root@elk-node1 ~]# vim /etc/logstash/conf.d/systemlog.conf
    input {
    file {
    path => "/var/log/messages"
    type => "system"
    start_position =>"beginning"                                           #收集日志开始位置,从第一行开始
         }  
    }
    output {
    elasticsearch {
    hosts => ["192.168.100.10:9200"]
    index => "system-%{+YYYY.MM.dd}"                                       #索引,手动标识
                  }
    }
    #执行
    [root@elk-node1 ~]# /opt/logstash/bin/logstash -f /etc/logstash/conf.d/systemlog.conf 
    http://192.168.100.20:9200/_plugin/head/
    

    在这里插入图片描述

    模块总结

    • stdin
    • stdout
    • file
    • syslog
    • tcp
    • udp
    • rubuydebug
    • multiline

    部署Kibana

    提供良好的Web界面

    #kibana的安装,可以是一台独立服务器
    [root@elk-node1 ~]# cd /usr/local/src/                                 #进入源码常用安装目录
    [root@elk-node1 src]# wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz
    [root@elk-node1 src]# tar -xvzf kibana-4.3.1-linux-x64.tar.gz          #解压至当前
    [root@elk-node1 src]# mv kibana-4.3.1-linux-x64 /usr/local/            #移动至/usr/local
    [root@elk-node1 src]# ln -s /usr/local/kibana-4.3.1-linux-x64/ /usr/local/kibana
    
    #修改配置文件
    [root@elk-node1 ~]# cd /usr/local/kibana/config/
    [root@elk-node1 config]# cp kibana.yml kibana.yml.bak                  #备份配置文件
    [root@elk-node1 config]# vim kibana.yml
    ...
    server.port: 5601                                                      #端口5601
    ...
    server.host: "0.0.0.0"
    ...
    elasticsearch.url: "http://localhost:9200"
    ...
    kibana.index: ".kibana"
    ...
    
    #运行,因为一直运行在前台,要么选择开一个shell窗口,要么使用screen(屏风)
    [root@elk-node1 config]# yum -y install screen
    [root@elk-node1 config]# screen
    [root@elk-node1 config]# /usr/local/kibana/bin/kibana                  #自动建立前台
    

    访问kibana以及Web界面应用

    http://192.168.100.10:5601/
    

    添加索引名称 > 创建
    在这里插入图片描述点击上方Discover,在Discover中查看
    在这里插入图片描述
    在这里插入图片描述
    查看日志登陆,需要点击"Discover"–> “message”,点击后面的"add"
    在这里插入图片描述
    在这里插入图片描述

    Elasticsearch常用插件集合

    展开全文
  • 超详细 ELK 日志分析系统

    千次阅读 2021-01-07 10:53:45
    文章目录一、ELK日志分析系统简介1:ELK日志分析系统组成2:日志处理步骤二:三款软件简介1:Elasticsearch(1)Elasticsearch的概述(2)Elasticsearch核心概念2:Logstash(1)Logstash介绍(2)Logstash的主要...

    文章目录

    一、ELK日志分析系统简介

    ELK日志分析系统是Logstash、Elastcsearch、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进行日志搜索、分析与可视化展示

    1:ELK日志分析系统组成

    • elasticsearch (es) :通过搭建群集;存储日志数据,索引日志数据
    • logstash :收集日志,收集到了后给es存储
    • kibana :视图形式展现日志信息,更加人性化

    2:日志处理步骤

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

    二:三款软件简介

    1:Elasticsearch

    (1)Elasticsearch的概述

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

    (2)Elasticsearch核心概念

    (1)接近实时(NRT)

    • elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)

    (2)集群(cluster)

    • 一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。
    • —个集群可以只有一个节点。强烈建议在配置elasticsearch时,配置成集群模式。
    • es具有集群机制,节点通过集群名称加入到集群中,同时在集群中的节点会有一个自己的唯一身份标识(自己的名称)

    (3)节点(node)

    • 节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。
    • 节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为elasticsearch的集群。

    (4)索引 (type)

    • 在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类!分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。

    • 类型相对于关系型数据库的表 ——》索引(库)-》类型(表)-》文档(记录)

    (6)文档(document)

    • 一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以SON
      (Javascript Object Notation))格式来表示,而JSON是一个到处存在的互联网数据交互格式。
    • 在一个index/type里面,只要你想,你可以存储任意多的文档。注意,虽然一个文档在物理上位于一个索引中,实际上一个文档必须在一个索引内被索引和分配一个类型。
    • 文档相对于关系型数据库的列。

    (7)分片和副本(shards & replicas)

    • 在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。

    分片的两个最主要原因

    • a.水平分割扩展,增大存储量

    • b.分布式并行跨分片操作,提高性能和吞吐量

    分布式分片的机制和搜索请求的文档如何汇总完全是有elasticsearch控制的,这些对用户而言是透明的。

    网络问题等等其它问题可以在任何时候不期而至,为了健壮性,强烈建议要有一个故障切换机制,无论何种故障以防止分片或者节点不可用。为此,elasticsearch让我们将索引分片复制一份或多份,称之为分片副本或副本。

    副本也有两个最主要原因

    • a.高可用性,以应对分片或者节点故障。出于这个原因,分片副本要在不同的节点上。

    • b.×××能,增大吞吐量,搜索可以并行在所有副本上执行。

    2:Logstash

    (1)Logstash介绍

    • —款强大的数据处理工具
    • 可实现数据传输、格式处理、格式化输出
    • 数据输入(从业务输入)、数据加工(如过滤、改写等)以及数据输出(输出到Elasticsearch群集)

    (2)Logstash的主要组件

    • shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
    • indexer:日志存储者,负责接收日志并写入到本地文件
    • broker:日志hub,负责连接多个shipper和多个indexer
    • search and storage:允许对事件进行搜索和存储
    • web interface:基于wWeb的展示界面

    3:Kibana

    (1)Kibana介绍

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

    (2)Kibana主要功能

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

    三:ELK日志分析系统部署

    1:拓扑图

    在这里插入图片描述

    2:实验环境

    3:部署步骤

    node1 节点配置

    3.1、3台服务器关闭防火墙

    [root@apache ~]# systemctl stop firewalld
    [root@apache ~]# setenforce 0

    3.2、3台服务器域名映射

    [root@apache ~]# vi /etc/hosts
    20.0.0.10   apache
    20.0.0.11   node1
    20.0.0.12   node2

    3.3、部署elasticsearch软件

    (1)安装elasticsearch-rpm包

    [root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm 

    (2)加载系统服务

    [root@node1 ~]# systemctl daemon-reload                            # 守护进程重载,重新识别
    [root@node1 ~]# systemctl enable elasticsearch.service             # 开机自启动 

    3.4、更改elasticsearch主配置文件

    (1)拷贝文件备份

    [root@node1 ~]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

    (2)修改配置文件

    [root@node1 ~]# vi /etc/elasticsearch/elasticsearch.yml
    cluster.name: my-elk-cluster                          # 17 集群名字
    node.name: node1                                      # 23 节点名字
    path.data: /data/elk_data                             # 33 数据存放路径,退出后需要单独创建
    path.logs: /var/log/elasticsearch                     # 37 日志存放路径
    bootstrap.memory_lock: false                          # 43 不在启动的时候锁定内存
    network.host: 0.0.0.0                                 # 55 提供服务绑定的IP地址,0.0.0.0代表所有地址
    http.port: 9200                                       # 59 侦听端口为9200
    discovery.zen.ping.unicast.hosts: ["node1", "node2"]  # 68 集群发现通过单播实现

    (3)过滤查看修改的配置

    [root@node1 ~]# grep -v "^#" /etc/elasticsearch/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"]

    3.5、创建数据存放路径并授权

    [root@node1 ~]# mkdir -p /data/elk_data
    [root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/ 

    3.6、启动elasticsearch是否成功开启

    [root@node1 ~]# systemctl start elasticsearch.service     # 启动慢
    [root@node1 ~]# netstat -anpt | grep 9200
    tcp6       0      0 :::9200                 :::*                    LISTEN      54502/java     

    3.7、查看节点信息,用谷歌浏览器查看

    在这里插入图片描述

    node2 节点配置

    1:与 node1 节点操作相同,只需更改 elasticsearch主配置文件的节点名字为 node2

    2:过滤查看修改的配置

    [root@node2 ~]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
    cluster.name: my-elk-cluster
    node.name: node2
    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"]

    3:查看节点信息,用谷歌浏览器查看
    在这里插入图片描述

    3.7、集群检查健康和状态

    (1)检查群集健康情况

    在这里插入图片描述
    (2)检查群集状态信息

    在这里插入图片描述

    3.8、安装elasticsearch-head插件

    上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head插件后,来管理集群

    node1 节点与 node2 节点操作相同

    3.8.1、编译安装 node
    • 解压缩
    [root@node1 ~]# tar zxvf node-v8.2.1.tar.gz
    • 配置编译安装
    [root@node1 node-v8.2.1]# ./configure
    [root@node1 node-v8.2.1]# make && make install
    3.8.2、安装phantomjs 前端框架
    • 解压缩
    [root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
    • 拷贝文件
    [root@node1 ~]# cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
    3.8.3、安装 elasticsearch-head 数据可视化工具
    • 解压缩
    [root@node1 ~]# tar zxvf elasticsearch-head.tar.gz
    • 安装
    [root@node1 ~]# cd elasticsearch-head/
    [root@node1 elasticsearch-head]# npm install

    3.9、修改 elasticsearch 主配置文件

    [root@node1 ~]# vi /etc/elasticsearch/elasticsearch.yml            # 配置文件末尾添加
    http.cors.enabled: true                                # 开启跨域访问支持,默认为false
    http.cors.allow-origin: "*"                            # 跨域访问允许的域名地址    
    3.9.1、重新启动服务
    [root@node1 ~]# systemctl restart elasticsearch.service

    4.0、启动 elasticsearch-head 服务

    4.0.1、启动服务
    [root@node1 ~]# cd elasticsearch-head/
    [root@node1 elasticsearch-head]# npm run start &        # 切换到后台启动
    [1] 101339
    [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
    4.0.2、查看状态
    [root@node1 ~]# netstat -anpt | grep 9100
    tcp        0      0 0.0.0.0:9100            0.0.0.0:*            LISTEN      101349/grunt        
    [root@node1 ~]# netstat -anpt | grep 9200
    tcp6       0      0 :::9200                 :::*                 LISTEN      101608/java

    4.1、谷歌浏览器登录查看

    4.1.1、登录前端框架

    在这里插入图片描述

    4.2、新建索引

    4.2.1、谷歌浏览器新建索引

    在这里插入图片描述

    4.2.2、node1 节点创建索引
    • 创建
    [root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"lisi","mesg":"hello world"}'
    • 完成
    {
      "_index" : "index-demo",             # 索引名称
      "_type" : "test",                    # 索引类型
      "_id" : "1",
      "_version" : 1,
      "result" : "created",                # 创建
      "_shards" : {
        "total" : 2,                       # 总量
        "successful" : 2,
        "failed" : 0
      },
      "created" : true
    }
    4.2.3、进入谷歌浏览器刷新

    在这里插入图片描述

    4.3、apache 服务器配置

    4.3.1、安装 apache 服务
    [root@apache ~]# yum -y install httpd
    4.3.2、开启 apache 服务
    [root@apache ~]# systemctl start httpd

    4.4、检查 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)

    4.5、安装 logstash

    4.5.4、解压缩
    [root@apache ~]# rpm -ivh logstash-5.5.1.rpm 
    4.5.2、启动服务
    [root@apache ~]# systemctl start logstash.service 
    [root@apache ~]# systemctl enable logstash.service 
    4.5.3、建立 logstash 软连接
    [root@apache ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

    4.6、输入采用标准输入,输出采用标准输出

    [root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }' 
                      省略
    09:02:20.499 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
    
    www.baidu.com           # 输入
    2021-01-07T01:04:14.008Z apache www.baidu.com      # 输出

    4.7、使用rubydebug显示详细输出

    [root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
              省略
    The stdin plugin is now waiting for input:
    09:10:19.822 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
    
    www.baidu.com                                     # 输入
    {
        "@timestamp" => 2021-01-07T01:11:16.829Z,     # 详细输出
          "@version" => "1",
              "host" => "apache",
           "message" => "www.baidu.com"
    }          

    4.8、使用logstash将信息写入elasticsearch中

    4.8.1、写入
    [root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["20.0.0.11:9200"] } }'
                省略
    The stdin plugin is now waiting for input:
    09:15:23.436 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}            
    4.8.2、输入
    www.baidu.com
    www.sina.com
    www.google.com
    4.8.3、谷歌浏览器对接查看

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

    4.9、apache 服务器收集系统日志

    4.9.1、对日志文件授权

    (1)查看日志文件

    [root@apache ~]# ll /var/log | grep messages
    -rw-------  1 root         root   218981 17 09:33 messages

    (2)授权

    [root@apache ~]# chmod o+r /var/log/messages
    [root@apache ~]# ll /var/log | grep messages
    -rw----r--  1 root         root   241485 17 09:37 messages

    4.9.2、创建配置文件,系统日志收集

    4.9.1、创建配置文件
    [root@apache ~]# vi /etc/logstash/conf.d/system.conf
    input {
           file{
           path => "/var/log/messages"
           type => "system"
           start_position => "beginning"
           }
         }
    output {
           elasticsearch {
           hosts => ["20.0.0.11:9200"]
           index => "system-%{+YYYY.MM.dd}"
           }
         }
    4.9.2、重启服务
    [root@apache ~]# systemctl restart logstash.service 
    4.9.3、谷歌浏览器查看索引

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

    5.0、在node1 节点安装 kibana

    5.0.1、安装并修改配置文件
    [root@node1 ~]# rpm -ivh kibana-5.5.1-x86_64.rpm 
    [root@node1 ~]# vi /etc/kibana/kibana.yml 
    server.port: 5601                                # 2 kibana 打开的端口
    server.host: "0.0.0.0"                           # 7 kibana 侦听的地址
    elasticsearch.url: "http://20.0.0.11:9200"       # 21 和elasticsearch 建立联系
    kibana.index: ".kibana"                          # 30 在elasticsearch中添加.kibana索引 
    5.0.2、开启 kibana 服务
    [root@node1 ~]# systemctl start kibana.service 
    [root@node1 ~]# systemctl enable kibana.service

    5.1、谷歌浏览器登录 kibana 展示页面

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

    5.2、在 apache 服务器创建 apache 日志配置

    [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.11:9200"]
           index => "apache_access-%{+YYYY.MM.dd}"
           }
         }
         if [type] == "error" {
         elasticsearch {
         hosts => ["20.0.0.11:9200"]
         index => "apache_error-%{+YYYY.MM.dd}"
          }
         }
    }
    5.2.1、指定 apache_log.conf 配置文件收集日志
    [root@apache conf.d]# logstash -f apache_log.conf
          省略
    10:22:49.702 [[main]-pipeline-manager] INFO  logstash.pipeline - Pipeline main started
    10:22:49.744 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9601}      
    5.2.2、查看日志
    [root@apache ~]# ls /etc/httpd/logs/
    access_log  error_log
    5.2.3、谷歌浏览器查看

    在这里插入图片描述

    5.3、创建 apache 的 access 和 error 日志索引

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

    总结

    工作原理

    在需要收集日志的所有服务上部署logstash,其中logstash agent ( logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到 logstash indexer ,logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch ,可以用Elasticsearch进行自定义搜索,通过Kibana来结合自定义搜索进行页面展示。

    展开全文
  • ELK 日志分析系统

    2019-12-24 19:08:29
    一、ELK 日志分析系统简介: 日志服务器: 提高安全性; 集中存放日志; 缺陷:对日志的分析困难 ELK日志处理步骤: 将日志进行集中格式化; 将日志格式化(logstash)并输出到 Elasticsearch; 对格式化后...
  • 运维必备——ELK日志分析系统

    千次阅读 热门讨论 2021-03-30 08:45:10
    目录一、ELK日志分析系统概述(1 一、ELK日志分析系统概述 (1 日志分析是运维工程师解决系统故障、发现问题的主要手段
  • 理论+实验:ELK日志分析系统

    千次阅读 2020-10-28 16:28:48
    目录一、ELK日志分析系统简介1.1 ELK日志分析系统简介-11.2 ELK日志分析系统简介-2二、Elasticesarch介绍三、Logstash介绍四、Kibana介绍五、部署ELK日志分析系统 一、ELK日志分析系统简介 1.1 ELK日志分析系统简介-...
  • ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。...它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包
  • ELK日志分析系统详解

    2020-11-29 04:43:17
    ELK日志分析系统详解一、ELK日志分析系统简介日志服务器日志分析系统日志处理步骤二、Elasticsearch介绍Elasticsearch概述Elasticsearch核心概念三、Logstash介绍Logstash介绍LogStash主要组件四、Kibana介绍Kibana...
  • windows系统安装ELK日志分析系统,主要包括elasticsearch,logstash,kibana,nssm,nxlog

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,644
精华内容 7,857
关键字:

elk日志分析系统使用