共计 1015 个字符,预计需要花费 3 分钟才能阅读完成。
前言
只所以会有这么复杂的架构,是因为现实生产环境一般有复杂的网络隔离,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
实际效果
正文完