elk分布式日志管理系统搭建

elk分布式日志管理系统搭建

一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

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

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

ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。

ELK简介

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat隶属于Beats。目前Beats包含四种工具:

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

ELK架构图

elk分布式日志管理系统搭建_第1张图片

ELK流程图

elk分布式日志管理系统搭建_第2张图片

  • 日志生产
    服务通过日志框架输出的日志,Nginx产生的日志;也可以是任何形式输出的日志文件。
  • 日志抓取(filebeat)
    通过配置,监控抓取符合规则的日志文件,并将抓取到的每条数据发送给kafka
  • kafka
    主要起到削峰填谷,ELK高可用的关键作用;当流量过大,kafka可以起到很好的缓冲作用,降低下游的压力;当下游的logstash或ES故障,也可以很好保证数据的完整性
  • logstash
    消费kafka的数据,并将数据持久化到ES或者其他持久化框架
  • Elasticsearch
    持久化数据,并提供分布式检索功能
  • Kibana
    展示ES中的数据
  • xpack watch
    监控异常
  • 通知模块
    将监控到的告警通知给相关责任人

搭建

本次搭建原则 架构为: filebeat - kafka -logstash -es -kibana

Kafka 集群本次不做说明,需要自行安装:https://blog.csdn.net/uhb6577/article/details/120227131?spm=1001.2014.3001.5501

es 使用单节点安装

相关启动方式使用最简单启动命令,后台启动可在前面加 nohup

1.kafka 集群搭建启动

启动kafka集群

2.filebeat 安装使用

官网下载地址:https://www.elastic.co/cn/downloads/beats/filebeat

选择版本:filebeat-6.6.0-linux-x86_64.tar.gz

##上传解压
[hadoop@hadoop102 software]$ tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz -C /opt/module/
## 新建配置应用文件 (配置日志输入地址和 输出地址:按照架构图输出到kafka)
[hadoop@hadoop102 filebeat-6.6.0-linux-x86_64]$ vi filebeat_kafka.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
  	##监控输入日志地址
    - /opt/log/*.log
## 定义输出的方式
output.kafka:
  enabled: true    # 启动
  hosts: ["192.168.56.102:9092","192.168.56.103:9092","192.168.56.104:9092"]    #kafka的ip和port
  topic: 'log4jdemo'   #指定输出到的topicname 也就是上面定义的变量
  partition.hash:                  # 分区规则 hash
    reachable_only: true
  compression: gzip                # 数据压缩
  max_message_bytes: 1000000       # 最大的消息字节数
  required_acks: 1                 # kafka ack的方式 
logging.to_files: true   
## 	启动
[hadoop@hadoop102 filebeat-6.6.0-linux-x86_64]$ ./filebeat -e -c filebeat_kafka.yml -d "publish"
3.ElasticSearch 安装

官网下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

[hadoop@hadoop102 software]$ tar -zxvf elasticsearch-6.8.9.tar.gz  -C /opt/module/
[hadoop@hadoop102 module]$ xsync elasticsearch-6.8.9/
[hadoop@hadoop102 elasticsearch-7.4.0]$ vi config/elasticsearch.yml 
cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1:
##启动
[hadoop@hadoop102 elasticsearch-7.4.0]$ ./bin/elasticsearch
4.logstash 安装使用

官网下载地址 :https://www.elastic.co/cn/downloads/logstash

## 上传解压
[hadoop@hadoop102 software]$ tar -zxvf logstash-7.15.2-linux-x86_64.tar.gz -C /opt/module/
## 在logstash-7.15.2-linux-x86_64/config 下新建配置文件,输入为kafka 输出为 es
[hadoop@hadoop102 config]$ vi kafka-logstash-es-test.conf 
input {
        kafka {
        bootstrap_servers => ["192.168.56.102:9092,192.168.56.103:9092,192.168.56.104:9092"]
        topics => "log4jdemo"
        group_id => "log4jdemogroup"
        }
}

output {
  elasticsearch {
    hosts => ["192.168.56.102:9200"]
    index => "log4jdemo"
    #user => "elastic"
    #password => "changeme"
  }
}
## 启动
[hadoop@hadoop102 bin]$ ./logstash -f ../config/kafka-logstash-es-test.conf --config.reload.automatic
5.Kibana 安装使用

官网下载地址:

https://www.elastic.co/cn/downloads/kibana

注意:es 和 kibana 版本最好对应,不能相差太大,否则启动会报错

## 下载解压
[hadoop@hadoop102 root]$ tar -zxvf kibana-7.4.0-linux-x86_64.tar.gz -C /opt/module/
## 修改配置文件
[hadoop@hadoop102 kibana-7.4.0-linux-x86_64]$ ls
bin           config  LICENSE.txt  node_modules  optimize      plugins     src           x-pack
built_assets  data    node         NOTICE.txt    package.json  README.txt  webpackShims
[hadoop@hadoop102 kibana-7.4.0-linux-x86_64]$ cd config/
[hadoop@hadoop102 config]$ ls
kibana.yml
[hadoop@hadoop102 config]$ vi kibana.yml 
##允许远程访问的地址配置:属性名为:server.host默认为本机,如果我们需要把Kibana服务给远程主机访问,只需要在这个配置中填写远程的那台主机的ip地址,那如果我们希望所有的远程主机都能访问,那就填写0.0.0.0
server.host: "0000"
# Specifies locale to be used for all localizable strings, dates and number formats.
# Supported languages are the following: English - en , by default , Chinese - zh-CN .
i18n.locale: "zh-CN"
## 启动
[hadoop@hadoop102 bin]$ ./kibana

使用截图:
elk分布式日志管理系统搭建_第3张图片

你可能感兴趣的:(大数据,数据库,big,data,elk)