前言
只所以会有这么复杂的架构,是因为现实生产环境一般有复杂的网络隔离,filebeat或logstash采集好的日志不能直接推送到zabbix,所以中间要用kafka中转一下。
测试环境
- Ubuntu 18.04 on WSL2
- Python 3.7.9
- Diagrams 0.20.0
实战开始
部署diagrams的依赖和其本身,以Ubuntu系统为例,apt命令自行替换为yum,包名貌似通用,
1 2 3 |
sudo apt install graphviz sudo apt install xdg-utils sudo pip3 install diagrams |
另外,如果架构图中有中文的话会乱码,参考这篇博客解决。
实战代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# -*- 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 |
实际效果