前言

只所以会有这么复杂的架构,是因为现实生产环境一般有复杂的网络隔离,filebeat或logstash采集好的日志不能直接推送到zabbix,所以中间要用kafka中转一下。

测试环境

  • Ubuntu 18.04 on WSL2
  • Python 3.7.9
  • Diagrams 0.20.0

实战开始

部署diagrams的依赖和其本身,以Ubuntu系统为例,apt命令自行替换为yum,包名貌似通用,

sudo apt install  graphviz
sudo apt install  xdg-utils
sudo pip3 install diagrams

另外,如果架构图中有中文的话会乱码,参考这篇博客解决。

实战代码

# -*- coding:utf-8 -*-
from diagrams import Diagram, Cluster
from diagrams.elastic.elasticsearch import Beats, Logstash
from diagrams.onprem.queue import Kafka
from diagrams.onprem.monitoring import Zabbix
from diagrams.onprem.network import Nginx

with Diagram("Logstash消费kafka数据推送到zabbix的架构图", outformat="jpg", filename="logstash_architecture", show=False):
    nginx = Nginx('Nginx服务器\n192.168.1.2')
    filebeat = Beats('Filebeat服务器\n192.168.1.2')
    with Cluster("Kafka集群"):
        kafka_cluster = [Kafka("Kafka节点1\n192.168.1.3"),
                   Kafka("Kafka节点2\n192.168.1.4"),
                   Kafka("Kafka节点3\n192.168.1.5")]


    logstash_server_cloud=Logstash('Logstash服务器\n192.168.1.6')
    zabbix_server_cloud=Zabbix('Zabbix服务器\n192.168.1.7')

    nginx >> filebeat >> kafka_cluster << logstash_server_cloud >> zabbix_server_cloud

实际效果

最后修改:2021 年 08 月 27 日 12 : 32 PM