• ELK日志分析系统的详细介绍与部署


    文章目录

    1. ELK的概述

    在这里插入图片描述

    1.1 简介

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearchLogstashKiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求

    1.2 使用ELK的理由

    集中化管理日志后,日志的统计和检索的效率降低。

    ELK 提供了一个完整的日志管理和分析解决方案,能够帮助用户更好地理解数据、监控系统性能并进行故障排除。

    1.3 ELK的主要组件

    基础组件:Elasticsearch、Logstash、Kibana

    扩展组件:Filebeat、Fluentd

    1.3.1 Elasticsearch

    Elasticsearch 提供了强大的搜索和分析引擎。

    Elasticsearch是一个实时的、分布式的可扩展的搜索引擎

    它基于 Lucene 搜索引擎库构建,具有分布式搜索、实时数据分析、高性能和高可伸缩性的特点。

    Elasticsearch 可以存储和索引大规模的数据(比如日志),并提供快速的全文搜索、条件过滤、聚合和分析功能

    1.3.2 Kibana

    Kibana 提供了可视化和交互式分析的界面。

    Kibana 是一个针对Elasticsearch的开源数据分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。

    使用Kibana,可以通过各种图表进行高级数据分析及展示,创建自定义仪表盘来展示关键指标和监控警报

    1.3.3 Logstash

    1.3.3.1 简介

    Logstash 实现了数据的收集和处理

    Logstash 是一个可扩展的数据收集、转换和传输工具。

    它可以从各种来源(如日志文件、消息队列、数据库等)收集数据,并将其转换为统一的格式,然后发送到 Elasticsearch 进行存储和分析。

    Logstash 提供了丰富的输入插件和输出插件,可以与各种数据源和目标进行集成。

    它还具有强大的过滤功能,可以对数据进行处理、过滤和转换,以满足不同的业务需求。

    1.3.3.2 Logstash常用相关命令选项
    #Logstash 命令常用选项
    
    -f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流
    
    -e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)
    
    -t:测试配置文件是否正确,然后退出。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.3.3.3 Logstash 的输入和输出流

    在这里插入图片描述

    #定义输入和输出流
    
    #输入采用标准输入
    #输出采用标准输出(类似管道)
    #新版本默认使用 rubydebug 格式输出
    logstash -e 'input { stdin{} } output { stdout{} }'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    使用 rubydebug 输出详细格式显示
    
    #codec 为一种编解码器
    logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
    
    • 1
    • 2
    • 3
    • 4
    #示例
    #键入内容(标准输入)
    www.baidu.com	
    
    
    
    #使用 `input` 插件来定义一个输入源#`stdin{}` 表示使用标准输入作为输入
    #然后使用 `output` 插件来定义一个输出目标
    #`stdout{ codec=>rubydebug }` 表示将数据打印到标准输出,并使用 `rubydebug` 编解码器来格式化输出。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    1.3.4 Logstash的相关配置文件

    Logstash 配置文件基本由三部分组成:inputoutput 以及 filter

    filter部分选择性添加,可以没有

    input部分

    #表示从数据源采集数据。
    
    #常见的数据源如Kafka、日志文件等。
    file beats kafka redis stdin
    
    #基本格式
    input {...}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    filter部分

    数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式。
    
    #基本格式
    filter {...}
    
    • 1
    • 2
    • 3
    • 4
    插件名功能
    grok对若干个大文本字段进行再分割成一些小字段 (?<字段名>正则表达式)字段名正则表达式匹配到的内容
    date对数据中的时间格式进行统一和格式化
    mutate对一些无用的字段进行剔除,或增加字段
    mutiline对多行数据进行统一编排,多行合并或拆分

    ouput部分

    表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。
    
    elasticsearch stdout
    
    #基本格式
    output {...}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    #补充说明
    
    在每个部分中,也可以指定多个访问方式font>#举个例子,若要指定两个日志来源文件,则格式如下:
    input {
    	file { path =>"/var/log/messages" type =>"syslog"}
    	file { path =>"/var/log/httpd/access.log" type =>"apache"}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.3.4 Filebeat

    1.3.4.1 简介

    轻量级的开源日志文件数据搜集器

    通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储。

    性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。

    常应用于 EFLK 架构当中。

    1.3.4.2 filebeat 结合 logstash 的优点
    1. 通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力;

    2. 从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取;

    3. 将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件;

    4. 使用条件数据流逻辑组成更复杂的处理管道。

    1.3.5 缓存/消息队列

    例如:redis、kafka、RabbitMQ等

    对高并发日志数据进行流量削峰和缓冲

    这样的缓冲可以一定程度的保护数据不丢失,还可以对整个架构进行应用解耦。

    1.3.6 Fluentd

    Fluentd是一个流行的开源数据收集器。

    由于 logstash 太重量级的缺点,Logstash 性能低、资源消耗比较多等问题,随后就有 Fluentd 的出现。

    相比较 logstash,Fluentd 更易用、资源消耗更少、性能更高,在数据处理上更高效可靠,受到企业欢迎,成为 logstash 的一种替代方案,常应用于 EFK 架构当中。

    1.4 ELK的工作原理

    在这里插入图片描述

    1. 在所有需要收集日志的服务器上部署Logstash,或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

    2. Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

    3. Elasticsearch 对格式化后的数据进行索引和存储。

    4. Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

    综上所述:

    logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。

    2. 部署ELK

    使用Logstash作为日志收集器

    2.1 前置准备

    ServerIPComponentsSystem
    apache192.168.67.100Logstash ApacheCentOS7.4(64 位)
    node1192.168.67.101Elasticsearch 、 KibanaCentOS7.4(64 位)
    node2192.168.67.102ElasticsearchCentOS7.4(64 位)

    2.2 环境搭建

    systemctl disable firewalld --now
    
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    #所有节点关闭防火墙和selinux
    
    • 1
    • 2
    • 3
    • 4
    #apache节点
    hostnamectl set-hostname apache
    
    #node1节点
    hostnamectl set-hostname node1
    
    #node2节点
    hostnamectl set-hostname node2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    #域名解析
    #node1和node2
    cat > /etc/hosts << EOF
    192.168.67.101   node1
    192.168.67.102   node2
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    #查看java环境
    
    #查看Java环境,如果没有安装,yum -y install java
    java -version
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.3 ELK ElasticSearch部署(node1和node2)

    2.3.1 rpm安装elasticsearch

    #上传elasticsearch-6.7.2.rpm到/opt目录下
    cd /opt
    rpm -ivh elasticsearch-6.7.2.rpm
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    #加载系统服务
    systemctl daemon-reload
    
    systemctl enable elasticsearch.service --now
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.3.2 修改elasticsearch主配置文件

    #node1
    
    yml格式的文件,冒号后要加空格。
    
    #先备份
    cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    vim /etc/elasticsearch/elasticsearch.yml
    #编辑配置文件
    
    #17行 取消注释,指定集群名字
    cluster.name: my-elk-cluster
    
    #23行 取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
    node.name: node1
    node.master: true
    node.data: true
    
    #33行 取消注释,指定数据存放路径
    path.data: /var/lib/elasticsearch/
    
    #37行 取消注释,指定日志存放路径
    path.logs: /var/log/elasticsearch/
    
    #43行 取消注释,改为在启动的时候不锁定内存
    bootstrap.memory_lock: false
    
    #55行 取消注释,设置监听地址,0.0.0.0代表所有地址
    network.host: 0.0.0.0
    
    #59行 取消注释,ES 服务的默认监听端口为9200
    http.port: 9200
    transport.tcp.port: 9300
    #68行 取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
    discovery.zen.ping.unicast.hosts: ["192.168.67.101:9300", "192.168.67.102:9300"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

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

    #查看所有配置项
    grep -v "^#" /etc/elasticsearch/elasticsearch.yml
    
    • 1
    • 2

    在这里插入图片描述

    #node2
    #将node1的配置文件传输到node2
    scp /etc/elasticsearch/elasticsearch.yml node2:/etc/elasticsearch/
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    #修改配置文件
    vim /etc/elasticsearch/elasticsearch.yml
    #23行 取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
    node.name: node2
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.3.3 es 性能调优参数(需重启生效)

    #优化最大内存大小和最大文件描述符的数量
    vim /etc/security/limits.conf
    ......
    *  soft    nofile          65536
    *  hard    nofile          65536
    *  soft    nproc           32000
    *  hard    nproc           32000
    *  soft    memlock         unlimited
    *  hard    memlock         unlimited
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    vim /etc/systemd/system.conf
    DefaultLimitNOFILE=65536
    DefaultLimitNPROC=32000
    DefaultLimitMEMLOCK=infinity
    
    
    
    ##详解## 
    - DefaultLimitNOFILE 表示每个进程可以打开的最大文件描述符数量。
    
    - DefaultLimitNPROC 表示每个用户可以创建的最大进程数量。
    
    - DefaultLimitMEMLOCK 表示每个进程可以锁定的内存量。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    #优化elasticsearch用户拥有的内存权限
    由于ES构建基于lucene, 而lucene设计强大之处在于lucene能够很好的利用操作系统内存来缓存索引数据,以提供快速的查询性能。
    
    lucene的索引文件segements是存储在单文件中的,并且不可变,对于OS来说,能够很友好地将索引文件保持在cache中,以便快速访问;因此,我们很有必要将一半的物理内存留给lucene ; 
    另一半的物理内存留给ES(JVM heap )。
    
    所以, 在ES内存设置方面,可以遵循以下原则:
    1.当机器内存小于64G时,遵循通用的原则,50%给ES,50%留给操作系统,供lucene使用;
    
    2.当机器内存大于64G时,遵循原则:建议分配给ES分配 4~32G 的内存即可,其它内存留给操作系统,供lucene使用。
    
    
    vim /etc/sysctl.conf
    #一个进程可以拥有的最大内存映射区域数,参考数据(分配 2g/262144,4g/4194304,8g/8388608)
    vm.max_map_count=262144
    
    sysctl -p
    sysctl -a | grep vm.max_map_count
    
    reboot
    #重启node1、noed2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    2.3.4 启动elasticsearch

    #创建数据存放路径并授权
    
    mkdir -p /data/elk_data
    
    
    chown elasticsearch:elasticsearch /data/elk_data/
    #修改属主和属组
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    #启动elasticsearch
    systemctl start elasticsearch.service
    
    ss -antp | grep 9200
    
    • 1
    • 2
    • 3
    • 4

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

    2.3.5 查看节点信息

    #查看节点 Node1、Node2 的信息
    #浏览器访问 
    http://192.168.67.101:9200 
    http://192.168.67.102:9200 
    
    • 1
    • 2
    • 3
    • 4

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

    2.3.6 查看集群信息

    #浏览器访问
    http://192.168.67.101:9200/_cluster/health?pretty
    
    http://192.168.67.102:9200/_cluster/health?pretty
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述
    使用以上方式查看状态并不友好,可以通过 elasticsearch-head插件来直接管理。

    2.4 安装 Elasticsearch-head 插件

    Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
    安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs

    node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
    phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
    
    • 1
    • 2

    2.4.1 编译安装 node

    上传软件包 node-v8.2.1.tar.gz 到/opt

    yum install gcc gcc-c++ make -y
    #安装依赖环境
    
    • 1
    • 2

    在这里插入图片描述

    #解压源码包
    cd /opt
    tar zxf node-v8.2.1.tar.gz
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    #编译安装
    cd node-v8.2.1/
    ./configure
    make -j2 && make install
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.4.2 安装 phantomjs

    上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt。

    #解压
    cd /opt
    tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
    
    cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
    
    cp phantomjs /usr/local/bin
    #复制相关文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    2.4.3 安装 Elasticsearch-head 数据可视化工具

    上传软件包 elasticsearch-head-master.zip 到/opt。

    #解压软件包
    cd /opt
    unzip elasticsearch-head-master.zip
    
    cd elasticsearch-head-master/
    npm install	
    #安装依赖包
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    2.4.4 修改 Elasticsearch 主配置文件

    vim /etc/elasticsearch/elasticsearch.yml
    ......
    --末尾添加以下内容--
    http.cors.enabled: true				#开启跨域访问支持,默认为 false
    http.cors.allow-origin: "*"			#指定跨域访问允许的域名地址为所有
    
    systemctl restart elasticsearch
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    2.4.5 启动 elasticsearch-head 服务

    #必须在解压后的 elasticsearch-head 目录下启动服务
    #进程会读取该目录下的 gruntfile.js 文件
    #否则可能启动失败
    cd /opt/elasticsearch-head-master/
    npm run start &
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    ss -natp |grep 9100
    #elasticsearch-head 监听的端口是 9100
    
    • 1
    • 2

    在这里插入图片描述

    2.4.6 通过 Elasticsearch-head 查看 Elasticsearch 信息

    #浏览器访问
    http://192.168.67.101:9100/ 
    连接群集
    #如果看到群集健康值为 green 绿色,代表群集很健康
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    2.4.7 插入索引

    #通过命令插入一个测试索引,索引为 index-demo,类型为 test。
    curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
    
    • 1
    • 2

    在这里插入图片描述

    #浏览器访问 
    http://192.168.67.101:9100/ 
    
    #查看索引信息
    可以看见索引默认被分片5个,并且有一个副本
    
    #点击“数据浏览”
    会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    2.5 ELK Logstash 部署

    在 Apache 节点上操作

    Logstash 一般部署在需要监控其日志的服务器

    在本案例中,Logstash 部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch

    2.5.1 安装logstash和相关服务

    #安装Apahce服务(httpd)
    
    yum -y install httpd
    systemctl start httpd
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    #安装Java环境
    
    yum -y install java
    java -version
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    #安装logstash
    
    上传软件包 logstash-6.7.2.rpm 到/opt目录下
    
    #rpm安装
    cd /opt
    rpm -ivh logstash-6.7.2.rpm                                               
    systemctl enable logstash.service --now
    
    ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
    #做软链接,方便使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    2.5.2 测试 Logstash,将信息写入 Elasticsearch 中

    #使用 Logstash 将信息写入 Elasticsearch 中
    logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.67.101:9200"] } }'
    			 输入				输出			对接
    ......
    www.baidu.com
    www.sina.com.cn	
    www.google.com
    
    #结果不在标准输出显示,而是发送至 Elasticsearch 中
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    浏览器访问 
    http://192.168.67.101:9100/ 
    查看索引信息和数据浏览
    
    • 1
    • 2
    • 3

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

    2.5.3 修改 logstash配置文件

    #修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中。
    chmod +r /var/log/messages
    #让 Logstash 可以读取日志
    
    cd /etc/logstash/conf.d/
    
    vim system.conf
    input {
        file{
            path =>"/var/log/messages"
            type =>"system"
            start_position =>"beginning"
    		# ignore_older => 604800
            sincedb_path => "/etc/logstash/sincedb_path/log_progress"
            add_field => {"log_hostname"=>"${HOSTNAME}"}
        }
    }
    output {
        elasticsearch {
        hosts => ["192.168.67.101:9200","192.168.67.102:9200"]
            index =>"system-%{+YYYY.MM.dd}"	
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    #配置文件详解
    #输入部分
    input {
        file{
            path =>"/var/log/messages"
            type =>"system"
            start_position =>"beginning"
    		# ignore_older => 604800
            sincedb_path => "/etc/logstash/sincedb_path/log_progress"
            add_field => {"log_hostname"=>"${HOSTNAME}"}
        }
    }
    #path表示要收集的日志的文件位置
    #type是输入ES时给结果增加一个叫type的属性字段
    #start_position可以设置为beginning或者end,beginning表示从头开始读取文件,end表示读取最新的,这个要和ignore_older一起使用
    #ignore_older表示了针对多久的文件进行监控,默认一天,单位为秒,可以自己定制,比如默认只读取一天内被修改的文件
    #sincedb_path表示文件读取进度的记录,每行表示一个文件,每行有两个数字,第一个表示文件的inode,第二个表示文件读取到的位置(byteoffset)。默认为$HOME/.sincedb*
    #add_field增加属性。这里使用了${HOSTNAME},即本机的环境变量,如果要使用本机的环境变量,那么需要在启动命令上加--alow-env
    
    ##输出
    output {
        elasticsearch {												#输出到 elasticsearch
            hosts => ["192.168.67.101:9200","192.168.67.102:9200"]	#指定 elasticsearch 服务器的地址和端口
            index =>"system-%{+YYYY.MM.dd}"							#指定输出到 elasticsearch 的索引格式
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    mkdir /etc/logstash/sincedb_path/
    
    touch /etc/logstash/sincedb_path/log_progress
    #新建文件路径
    
    chown logstash:logstash /etc/logstash/sincedb_path/log_progress
    #修改文件的属主属组
    
    logstash -f system.conf
    #使用logstash启动配置文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    浏览器访问 
    http://192.168.67.101:9100/ 
    查看索引信息
    
    • 1
    • 2
    • 3

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

    2.6 ELK Kiabana 部署

    在 Node1 节点上操作

    2.6.1 安装Kibana

    #上传软件包 kibana-6.7.2-x86_64.rpm 到/opt目录
    cd /opt
    rpm -ivh kibana-6.7.2-x86_64.rpm
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2.6.2 修改kibana主配置文件

    vim /etc/kibana/kibana.yml
    
    #2行 取消注释,Kiabana 服务的默认监听端口为5601
    server.port: 5601
    
    #7行 取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
    server.host: "0.0.0.0"
    
    #28行 取消注释,配置es服务器的ip,如果是集群则配置该集群中master节点的ip
    elasticsearch.url:  ["http://192.168.67.101:9200","http://192.168.67.102:9200"] 
    
    #37行 取消注释,设置在 elasticsearch 中添加.kibana索引
    kibana.index: ".kibana"
    
    #96行 取消注释,配置kibana的日志文件路径(需手动创建),不然默认是messages里记录日志
    logging.dest: /var/log/kibana.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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

    2.6.3 创建日志文件,启动 Kibana 服务

    touch /var/log/kibana.log
    #创建日志文件
    
    chown kibana.kibana /var/log/kibana.log
    #更改其属主和属组
    
    systemctl enable --now kibana.service
    ss -natp |grep 5601
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    2.6.4 验证 Kibana

    浏览器访问 
    http://192.168.67.101:5601
    
    • 1
    • 2

    在这里插入图片描述

    #第一次登录需要添加一个 Elasticsearch 索引
    Management -> Index Pattern -> Create index pattern
    
    • 1
    • 2

    在这里插入图片描述

    Index pattern 输入:system-*	
    #在索引名中输入之前配置的 Output 前缀“system”
    
    • 1
    • 2

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

    单击 “Discover” 按钮可查看图表信息及日志信息。
    数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果
    
    • 1
    • 2

    2.6.5 将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

    vim /etc/logstash/conf.d/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.67.101:9200","192.168.67.102:9200"]
                index => "apache_access-%{+YYYY.MM.dd}"
            }
        }
        if [type] == "error" {
            elasticsearch {
                hosts => ["192.168.67.101:9200","192.168.67.102:9200"]
                index => "apache_error-%{+YYYY.MM.dd}"
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    cd /etc/logstash/conf.d/
    /usr/share/logstash/bin/logstash -f apache_log.conf
    
    • 1
    • 2

    在这里插入图片描述

    浏览器访问 http://192.168.67.101:9100 查看索引是否创建
    
    • 1

    在这里插入图片描述

    浏览器访问 http://192.168.2.100:5601 
    
    登录 Kibana
    单击“Index Pattern -> Create Index Pattern”按钮添加索引
    在索引名中输入之前配置的 Output 前缀 apache_access-*,并单击“Create”按钮。
    再用相同的方法添加 apache_error-*索引。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    选择“Discover”选项卡
    在中间下拉列表中选择刚添加的 apache_access-* 、apache_error-* 索引, 可以查看相应的图表及日志信息。
    
    • 1
    • 2

    在这里插入图片描述

    3. Filebeat作为日志收集器

    在这里插入图片描述

    3.1 前置准备

    ServerIPComponentsSystem
    Apache192.168.67.100Logstash ApacheCentOS7.4(64 位)
    Node1192.168.67.101Elasticsearch 、 KibanaCentOS7.4(64 位)
    Node2192.168.67.102ElasticsearchCentOS7.4(64 位)
    Filebeat节点192.168.67.103FilebeatCentOS7.4(64 位)

    3.2 安装Filebeat(Node1节点)

    上传软件包 filebeat-6.7.2-linux-x86_64.tar.gz 到/opt目录

    #解压软件包
    tar zxvf filebeat-6.7.2-linux-x86_64.tar.gz
    
    mv filebeat-6.7.2-linux-x86_64/ /usr/local/filebeat
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3.3 修改filebeat的主配置文件(Node1节点)

    cd /usr/local/filebeat
    
    vim filebeat.yml
    filebeat.inputs:
    - type: log         
    #指定 log 类型,从日志文件中读取消息
      enabled: true
      paths:
        - /var/log/messages       
        #指定监控的日志文件
        - /var/log/*.log
      tags: ["sys"]		#设置索引标签
      fields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中
        service_name: filebeat
        log_type: syslog
        from: 192.168.67.103
        
        --------------Elasticsearch output-------------------
    (全部注释掉)
    
    ----------------Logstash output---------------------
    output.logstash:
      hosts: ["192.168.67.100:5044"]      #指定 logstash 的 IP 和端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

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

    在这里插入图片描述

    3.4 启动 filebeat

    #启动 filebeat
    nohup ./filebeat -e -c filebeat.yml
    #-e:输出到标准输出,禁用syslog/文件输出
    #-c:指定配置文件
    #nohup:在系统后台不挂断地运行命令,退出终端不会影响程序的运行
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    3.5 在 Logstash 组件所在节点上新建一个 Logstash 配置文件

    cd /etc/logstash/conf.d
    
    vim filebeat.conf
    input {
        beats {
            port => "5044"
        }
    }
    
    #filebeat发送给logstash的日志内容会放到message字段里面,logstash使用grok插件正则匹配message字段内容进行字段分割
    #Kibana自带grok的正则匹配的工具:http://:5601/app/kibana#/dev_tools/grokdebugger
    # %{IPV6}|%{IPV4} 为 logstash 自带的 IP 常量
    filter {
      grok {
        match => ["message", "(?%{IPV6}|%{IPV4})[\s\-]+\[(?.*)\]\s+\"(?\S+)\s+(?.+)\"\s+(?\d+) \d+ \"(?.+)\" \"(?.*)\""]
      }
    }
    
    output {
        elasticsearch {
            hosts => ["192.168.67.101:9200","192.168.67.102:9200"]
            index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
        }
        stdout {
            codec => rubydebug
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    logstash -f filebeat.conf
    #启动 logstash
    
    • 1
    • 2

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

    浏览器访问验证
    浏览器访问 http://192.168.67.101:5601 
    
    登录 Kibana
    单击“Create Index Pattern”按钮添加索引“filebeat-*”
    单击 “create” 按钮创建
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

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

  • 相关阅读:
    网络安全技术指南 103.91.209.X
    浅谈ES标准的演变
    Bootstrap Blazor 使用模板创建项目
    Vue中的query传参和动态路由传参
    linux服务器在后台运行程序
    WPF学习
    在线教程 | Stable Diffusion 3 Medium 现已开源,一键开启你的创作之旅!
    【秋招必备】JVM性能调优面试题(2022最新版)
    深度学习【DL介绍、神经网络介绍】
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
  • 原文地址:https://blog.csdn.net/m0_74170357/article/details/133873054