将Kafka日志发送到Kibana仪表板的方法

112 阅读2分钟

什么是日志?

日志是关于应用程序、其性能和用户活动的事件的良好解释记录。这些事件可以包括删除,或修改应用程序的文件。它们也包括系统配置的变化。

而日志文件则存储了关于这些事件发生的记录。因为它们是用来跟踪计算事件的信息。当涉及到识别问题和纠正问题时,它们就会很方便。

为了运送Kafka日志,我们将使用filebeat代理。filebeat代理是一个轻量级的运输工具,其目的是转发和集中日志数据。

为了让filebeat工作,你需要把它作为一个代理安装在所需的服务器上。然后,Filebeat监控日志文件,收集日志事件,并将它们转发到ElasticSearch或LogStash进行索引。

为了在服务器上安装filebeat代理,我们将使用ansible,因为它使代理的部署毫不费力。

Filebeat代理如何工作

当你启动filebeat代理时,它开始输入并查找你提到的日志位置。对于filebeat定位的每一条日志,都会启动一个收割机。此外,每一个收割机都会读取一个日志的新内容,并将新的日志数据发送到libbeat。Libbeat是一个用于数据转发的Go框架。Libbeat聚合事件并将收集的数据发送到你为Filebeat配置的输出。在我们的例子中,它是Kibana。

用于将Filebeat代理部署到Kafka服务器的Ansibleplaybook

- name: Run kafka logging role to deploy filebeat to kafka servers 
  hosts: <kafka_server_hosts>
  gather_facts: False 
  roles:
    - deploy-filebeat
  become: True
  become_method: sudo 

运行部署Filebeat的必要任务的角色

在你运行角色之前,确保你有filebeat.yml和kafka.yml文件,其中包括角色所需的配置变化,还有set-logstash-endpoint.sh脚本,它设置了logstash所需的端点。你可以将这两个文件存储在角色deploy-filebeat的文件目录中。

- name:  Install filebeat 6.2.4
  shell: |
    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-amd64.deb
    sudo dpkg -i filebeat-6.2.4-amd64.deb


- name: Upload filebeat.yml
  copy: 
    src: filebeat.yml
    dest: /etc/filebeat 
    owner: root
    group: root 
    mode: 644
  
- name: Install filebeat Kafka module
  shell: |
    filebeat modules enable kafka

- name: Upload set-logstash-endpoint.sh script
  copy: 
    src: set-logstash-endpoint.sh
    dest: /usr/local/bin/
    owner: root
    group: root
    mode: 755
  
- name: Upload filebeat Kafka module configuration
  copy: 
    src: kafka.yml
    dest: /etc/filebeat/modules.d/
    owner=root
    group=root
    mode=644
  notify:
    - restart filebeat

- name:  Set the logstash endpoint for this environment
  shell: |
    /usr/local/bin/set-logstash-endpoint.sh

- name:  Start filebeat
  shell: |
    sudo /etc/init.d/filebeat start

运行这个游戏手册后,你可以去检查你的kibana仪表盘端点,因为来自kafka服务器的kafka日志将开始弹出。

如果在本地运行,你可以去 -http://localhost:5601/app/logs/,检查这里的Kafka日志。

logs