• EFLK日志收集


    ELK

    一、什么是ELK

    ELK是一套日志几种处理解决方案,包含了ElasticSearchLogstash 和 Kibana 三个开源工具。

    二、ELK组件

    ElasticSearch
    • 是基于Lucene(全文检索引擎的架构)开发的分布式存储检索引擎,用来存储日志
    • 是一个java开发的,可通过RESTful Web 接口,让用户通过浏览器与ElasticSearch交互
    • ElasticSearch是一个实时的、分布式的可扩展搜索引擎,允许进行全文、结构化搜索,通常用于索引和搜索大容量的日志数据,也可以用于搜索许多不同类型的文档
    Kiabana:

    ​ Kiabana常与ElasticSearch一起部署,Kibana可以为ElasticSearch提供图形化web界面。

    Logstash:
    • Logstash作为数据收集引擎它可以动态的从各种数据源搜集数据,并对数据机进行过滤、分析、统一格式等操作,然后存储到用户指定的位置,一般会发送给ElasticSearch
    • 它是由Ruby语言编写,运行在java虚拟机上的一款数据处理工具,可以实现数据传输,格式处理,格式输出。
    Filebeat:

    ​ 是一款轻量级的开源日志数据搜索器,相对于Logstash来说,不需要安装JDK环境,对性能的占用相对较小,一般的架构是Filebeat替代了原先Logstash的职责对日志进行手机然后交付给Logstash进行解析或直接发给ES存储

    Filebeat+Logstash的优点

    1.通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力
    2.从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取
    3.将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
    4.使用条件数据流逻辑组成更复杂的处理管道
    5.日志的集中化管理 beats 包括四种工具

    三、日志集中化管理beats的四种工具

    1. Packetbeat(搜索网络数据流量)
    2. Topbeat(搜索系统、进程和文件系统级别的CPU和内存使用情况等数据)
    3. Filebeat(搜索文件数据)
    4. Winlogbeat(搜索Window时间日志数据)

    四、什么是缓存/消息队列

    对高并发日志数据进行流量削峰,防止大量并发直接冲击站点,而且这样的可以在一定程度上保证数据不会丢失,并对整个架构解耦。

    五、ELK工作原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MkhPew8T-1663518520739)(C:/Users/mogu/Downloads/%E6%9C%AA%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%20(7)].png)

    AppServer集群产生的日志由Logstash收集,Logstash把收到的日志数据格式化后转存到ES数据库内,通过Kiabana查看ES数据库内索引中的数据并展示到Bower端

    六、ELFK日志分析部署

    ​ 实验环境配置

    服务器主机IP职责环境部署
    node1192.168.226.123作为ES数据库节点JDK1.8.0_342ElasticSearch Kibana
    node2192.168.226.122作为ES数据库节点JDK1.8.0_342ElasticSearch
    apache192.168.226.121连接通道JDK1.8.0_342Logstash Apache
    filebeat192.168.226.124数据收集JDK1.8.0_342Filebeat

    (1)配置两个ES数据库

    ​ ①配置DNS本地域名解析

    echo "192.168.226.123 node1" >>/etc/hosts
    echo "192.168.226.122 node2" >>/etc/hosts
    
    • 1
    • 2

    ​ ②安装ElasticSearch

    rpm -ivh elasticsearch-5.5.0.rpm
    systemctl daemon-reload && systemctl enable elasticsearch.service  //刷新后台并加载系统
    
    • 1
    • 2

    ​ ③修改ElasticSearch主配置文件

    cp /etc/elasticsearch/elasticsearch.yml  /etc/elasticsearch/elasticsearch.yml.bak	//讲之前的配置文件做备份
    
    vim /etc/elasticsearch/elasticsearch.yml
    ##17行,取消注释,指定群集名称
    cluster.name: my-elk-cluster
    ##23行,取消注释,指定节点名称(node1节点为node1,node2节点为node2)
    node.name: node1
    ##33行,取消注释,指定数据存放路径
    path.data: /data/elk_data
    ##37行,取消注释,指定日志存放路径
    path.logs: /var/log/elasticsearch/
    ##43行,取消注释,不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
    bootstrap.memory_lock: false
    ##55行,取消注释,设置监听地址,0.0.0.0代表所有地址
    network.host: 0.0.0.0
    ##59行,取消注释,ES服务的默认监听端口为9200
    http.port: 9200
    ##68行,取消注释,集群发现通过单播实现,指定要发现的节点node1、node2
    discovery.zen.ping.unicast.hosts: ["node1", "node2"]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    ​ ④检查下配置文件修改是否一致

    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"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    ​ ⑤创建数据存放路径并授权

    mkdir -p /data/elk_data
    chown elasticsearch:elasticsearch /data/elk_data/	//给数据库对这个数据存放地点执行权限
    
    • 1
    • 2

    ​ ⑥启动elasticsearch

    systemctl start elasticsearch.service		//这玩意启动慢等会
    
    • 1

    (2)安装Elasticsearch—head插件

    ​ ①编译安装node

    yum install -y gcc gcc-c++ make
    tar zxvf node-v8.2.1.tar.gz 
    cd node-v8.2.1/
    ./configure
    make -j 4 && make install
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ​ ②安装phantomjs

    cd /opt
    tar jxvf 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

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

    cd /opt
    tar -zxvf elasticsearch-head.tar.gz -C /usr/local/src/
    cd /usr/local/src/elasticsearch-head/
    npm install
    
    • 1
    • 2
    • 3
    • 4

    ​ ④修改Elasticsearch主配置文件

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

    ​ ⑤启动elasticsearch-head 服务

     cd /usr/local/src/elasticsearch-head/
     npm run start &
    
    • 1
    • 2

    ​ ⑥插个索引测试下

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

    (2)配置filebeat服务器

    ​ ①安装filebeat

    wget http://101.34.22.188/ELK/filebeat-6.2.4-linux-x86_64.tar.gz -P /opt
    cd /opt
    tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz
    mv filebeat-6.2.4-linux-x86_64 /usr/local/filebeat
    
    • 1
    • 2
    • 3
    • 4

    ​ ②修改filebeat配置文件

    cd /usr/local/filebeat	
    cp filebeat.yml filebeat.yml.bak
    vim filebeat.yml
    
    filebeat.prospectors:
    ##21行,指定log类型,从日志文件中读取消息
    - type: log
    ##24行,开启日志收集功能,默认为false
      enabled: true
    ##28行,指定监控的日志文件
        - /var/log/*.log
    ##29行,添加收集/var/log/messages
        - /var/log/messages
    ##31行,添加以下内容,注意格式
      fields: 
        service_name: filebeat
        log_type: log
        service_id: 192.168.226.124       #指向的是本机地址,当然filebeat作为一个轻量化的只能对本地的日志收集当然就没input了
    #-------------------------- Elasticsearch output ------------------------------
    该区域内容全部注释
    #----------------------------- Logstash output --------------------------------
    ##157行,取消注释
    output.logstash:
    ##159行,取消注释,指定logstash的IP和端口号
      hosts: ["192.168.223.13:5044"]
     
    [root@filebeat filebeat]# ./filebeat -e -c filebeat.yml
    #启动filebeat,-e记录到stderr并禁用syslog /文件输出,-c指定配置文件
    
    • 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

    (3)配置logstash服务器

    ​ ①安装apache

    hostnamectl set-hostname apache
    bash
    yum install -y httpd
    systemctl start httpd && systemctl enable httpd
    
    • 1
    • 2
    • 3
    • 4

    ​ ②安装JDK

    yum install -y java
    
    • 1

    ​ ③安装logstach

    cd /opt
    rpm -ivh logstash-5.5.1.rpm 
    systemctl start logstash.service     
    systemctl enable logstash.service
    ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
    logstash -e 'input { stdin{} } output { stdout{} }'			//测试下
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ​ ④在logstash组件上建一个logstash配置文件

    cd /etc/logstash/conf.d/
    vim logstash.conf
    input {
        beats {
            port => "5044"
        }
    }
    output {
        elasticsearch {
            hosts => ["192.168.226.123:9200", "192.168.226.124:9200"]
            index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
        }
        stdout {
            codec => rubydebug
        }
    }
    /usr/share/logstash/bin/logstash -f logstash.conf_log.conf 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    (4)浏览器验证

    192.168.226.123:9
    
    • 1

    => [“192.168.226.123:9200”, “192.168.226.124:9200”]
    index => “%{[fields][service_name]}-%{+YYYY.MM.dd}”
    }
    stdout {
    codec => rubydebug
    }
    }
    /usr/share/logstash/bin/logstash -f logstash.conf_log.conf

    
    (4)浏览器验证
    
    
    • 1
    • 2
    • 3

    192.168.226.123:9

    
    
    • 1
  • 相关阅读:
    两个星期学会软件测试?我震惊了!
    基于DMF推荐算法的推荐系统 代码+数据 (可作为毕设)
    我要进大厂第三讲:阿里面经第一篇
    C#对字典容器Dictionary<TKey, TValue>内容进行XML序列化或反序列化报错解决方法
    数据库和缓存的一致性如何保证
    迅为LS2K0500开发板动态电源管理龙芯自主指令架构
    【spring】BeanFactory的实现
    C++ 运算符
    Kurator v0.3.0版本发布
    软件测试面试题:缺陷记录应包含的内容?
  • 原文地址:https://blog.csdn.net/weixin_52190986/article/details/126925715