- 本作品采用知识共享署名 3.0 非移植许可协议授权
许可。
Tacker VNF 管理器中的应用监控 Zabbix 插件¶
启动板蓝图的URL
https://blueprints.launchpad.net/tacker/+spec/zabbix-plugin
在 Tacker VNF 管理器中开发一个 Zabbix 插件,用于监控当前 Tacker 监控驱动程序不支持的应用程序层参数。
问题描述¶
当前的 Tacker 监控驱动程序提供简单的监控功能,例如 Ceilometer 仅支持与硬件基础设施资源相关的参数(例如 CPU 或内存使用率)。Ping 和 http_ping 驱动程序也支持对 VNF 生存状态进行基本检查。为了保证 VNF 提供的网络服务的可用性和稳定性,需要在 VNF Tacker 管理器中集成另一种支持应用程序层参数的高级监控工具。
Zabbix 是最著名的监控工具之一,可以监控和跟踪各种类型的网络服务、应用程序、资源和服务器,以便快速通知管理员有关故障的信息。Zabbix 提供易于查看的简单 Web 页面和代理。
Zabbix 提供的监控目标如下。
cpu 内存 / 性能
操作系统性能
进程负载 / 数量
交换空间 / 内存空间
FTP、HTTP、MySQL、NTP、POP、SSH、Telnet、SMTP 等应用程序状态
自定义监控
Zabbix 提供的监控不仅包括 vnf 中的操作系统,还包括与应用程序相关的状态、内存占用、cpu 等。您可以通过 Zabbix 社区使用更多功能来创建所需的监控模板。
它还提供 API,为每个 VDU 提供准确且通用的监控功能。它通过代理收集数据,提供图形和地图等可视化监控,并根据收集的数据条件提供触发器和警报,以便在超过用户定义的阈值时及时通知。根据这些触发器,可以执行用户定义的命令以快速从故障中恢复。用户定义的命令可以通过 VDU 中的代理执行。
使用此功能,tacker 可以提供的 VNF 监控如下。
应用程序监控
VNF 中的资源、网络监控
VNF 中应用程序内的故障管理和恢复
执行预定义的命令
可以图形化显示收集的数据
可以设置自定义触发条件
拟议的变更¶
与 Zabbix 互操作需要模板策略、服务监控驱动程序和 Zabbix 插件。在 Tacker 中,VDU 的 IP 地址、名称等必须使用 API 请求传输到 Zabbix 服务器。此外,还需要通过 API 向服务器请求生成模板、项目、触发器、图形等用于监控。此外,应在 Tosca-Template 中定义服务监控策略,以允许用户定义有关监控应用程序、CPU 负载和状态的触发器通知的条件值。
Zabbix 可以使用安装在每个 VM 中的代理从 VNF 收集数据(CPU、RAM、磁盘、网络使用情况)。通过 Zabbix API,我们可以监控并从 Zabbix 控制面板获取所有信息,例如图形。
在 Tacker VNF 描述符中,用户通过用户数据定义 Zabbix 代理,还定义了 Zabbix 的策略和资源,例如阈值、将要监控的指标等。
Tacker 收集 VDU 的状态。如果 VDU 响应策略中的 Respwan 操作,或者需要为可扩展性创建额外的 VDU,则将有关附加 VDU 的信息注册为新的监控主机,方法是通过 Zabbix 插件向 Zabbix 服务器请求新 VDU 的 IP 信息。如果情况相反,则请求删除在 Zabbix 服务器中注册的现有 VDU 主机。
总体工作流程如下
+----------------------------+ +----------------------------+
| | | |
| Zabbix Web UI | | Tosca_zabbix_template.yaml |
| | | |
+----------------------------+ +--------------+-------------+
|
|
+----------------------------+ +---------------------v-------------------------+
| Zabbix | | Tacker |
| | | |
| +------------------+ | | +-----------------------------------------+ |
| | | | | | VNFM | |
| | Zabbix Frontend | | | | | |
| | | | | | +---------------+ +---------------+ | |
| +------------------+ | | | | | | Service | | |
| | | | | Zabbix Plugin | | Monitoring | | |
| +------------------+ | +----------+ <---+ Driver | | |
| | | | | | | | | | | | |
| | Zabbix Server | <------------+ | | +---------------+ +---------------+ | |
| | | | | | | |
| +------+-^----+---^+----+ | +-----------------------------------------+ |
| | | | | | +-----------------------------------------------+
+----------------------------+
| | | +-------------------------------------------------------+
| | | |
| | +-----------------------------------+ |
| +-------------------+ | |
| | | |
| | | |
+------------------------------------------------------------------------------------------+
| | | NFVI | | |
| +--------------------------------------------------------------------------------------+ |
| | | | VNF | | | |
| | +---------------------------------------+ +---------------------------------------+ | |
| | | | VDU | | | | VDU | | | |
| | | +-----v---------------------+-------+ | | +-----v-----------------------+-----+ | | |
| | | | Zabbix Agent | | | | Zabbix Agent | | | |
| | | +---------+--------------+----------+ | | +---------+--------------+----------+ | | |
| | | | | | | | | | | |
| | | +v--------------v+ | | +v--------------v+ | | |
| | | | Scripts | | | | Scripts | | | |
| | | +----+---------^-+ | | +----+---------^-+ | | |
| | | | | | | | | | | |
| | | |--------v---------+------+ | | |--------v---------+------+ | | |
| | | | Application Or OS Info | | | | Application Or OS Info | | | |
| | | | Or | | | | Or | | | |
| | | | User Define | | | | User Define | | | |
| | | +-------------------------+ | | +-------------------------+ | | |
| | +---------------------------------------+ +---------------------------------------+ | |
| +--------------------------------------------------------------------------------------+ |
+------------------------------------------------------------------------------------------+
Zabbix 服务器请求内置在每个 VDU 中的 Zabbix 代理监控要收集的项目,Zabbix 代理执行嵌入项目的监控脚本。收集的数据由 Zabbix 代理发送到 Zabbix 服务器,Zabbix 服务器确定是否生成触发器。触发器可以根据收集数据的平均值等生成。
Tacker VNFM 需要具有服务监控驱动程序和 Zabbix 插件的 Zabbix 服务器来进行 API 请求。这允许监控 VDU。服务监控驱动程序从 Tosca 模板中提取服务监控策略并将其转换为字典,然后将其传递给 Zabbix 插件。Zabbix 插件首先发送令牌请求 API 到 Zabbix 服务器以接收令牌。
Zabbix 插件请求 Zabbix 服务器主机创建 API,包括 IP 地址,以注册生成的 VDU 作为监控主机。然后,它请求一个生成 API,其中包含触发器值和应用程序信息,以对每个 VDU 执行监控。所有这些过程都需要令牌。以下是服务监控策略的示例。
app_monitoring_policy:
name: zabbix
zabbix_username: Admin
zabbix_password: zabbix
zabbix_server_ip: 192.168.11.53
zabbix_server_port: 80
parameters:
application:
appname: apache2
appport: 80
app_status:
condition: [down]
actioname: cmd
cmd-action: service apache2 restart
app_memory:
condition: [greater,22]
actioname: cmd
cmd-action: service apache2 stop
OS:
os_agent_info:
condition: [down]
actioname: cmd
cmd-action: service zabbix-agent restart
os_cpu_usage:
os_proc_value:
condition: [and less,30]
actioname: cmd
cmd-action: reboot
os_cpu_load:
condition: [greater,30]
actioname: cmd
cmd-action: reboot
我们可以在模板中输入 Zabbix 服务器的 ID / PASSWORD / IP / PORT,并使用此信息访问 zabbix 服务器(例如令牌)以执行监控操作。
zabbix_username & zabbix_password & zabbix_server_ip & zabbix_server_port:分别表示从 Zabbix 进行身份验证所需的信息,zabbix 用户的 ID 和密码,以及 Zabbix 服务器的 IP 和端口号。
Zabbix 监控由 Tacker 管理的 VNF 内部。从 Zabbix 的角度来看,VNF 就是我们正在操作的物理服务器。
因此,它监控 VNF 内部操作系统的 CPU / 内存和应用程序,并通知和修复故障的发生。所有这些都可以通过 Zabbix Web 通过 VNF 内部监控进行验证。Tacker 可以通过 Zabbix 运行稳定的 VNF。
这些服务监控策略应单独为每个 VDU 设置。这是因为每个 VDU 希望监控的范围和应用程序可能不同。参数分为应用程序和 VNF 内部操作系统监控。
name:开源监控工具的名称。
application & OS:有关应用程序和 VNF OS 相关监控的信息。
appname & appport:指定监控的应用程序和端口信息。
app_status & app_memory:它显示应用程序的状态和应用程序的内存(以字节为单位)。
os_cpu_usage & os_proc_value & os_cpu_load:cpu 表示 I / O 吞吐量、使用率和正在运行的进程数。
os_agent_info:os_agent_info 可以检查 zabbix 代理的状态。
输入有关 zabbix 服务器的多个身份验证信息,并从 zabbix 插件调用它与 Zabbix 服务器通信。结果,tacker 可以向 Zabbix 服务器发出各种监控请求。从安全角度来看,这是高效的。
可以为每个监控项目定义详细的比较值和相应的操作。这会在发生项目问题时通知您,并相应地定义其他操作。您可以通过在发生故障时执行定义的动作来提高 VNF 应用程序操作的稳定性。
可以为每个监控目标设置的详细信息如下。
condition: [comparison, value]
条件由比较和值组成。比较包括大于、小于、大于等于和小于等于,zabbix 根据与基线值的比较确定项目是否发生故障。
actioname: [action name]
cmd-action: [在 VNF 中执行的命令]
当前操作支持 cmd,并且将来会添加 respawn、scale 操作。如果条件中指定的条件为 true,则在 VNF 内部执行 cmd-action。
允许您响应故障执行操作。Zabbix 提供的操作包括远程命令、脚本执行等。这些命令可以设置为通过 Zabbix-agent 或通过 Zabbix-server 运行。使用 zabbix 提供的脚本执行来执行 cmd。
如果您选择 cmd,则必须定义 cmd-action。这是通过 zabbix-agent 在 vnf 中执行的 cmd - action 命令。总之,每个 cmd 的执行方式如下。
cmd:zabbix 服务器通过 vnf 中的 zabbix 代理自动执行操作,具体操作由用户 cmd-action 决定。
VDU 可以在其自身镜像上安装 Zabbix Agent,或者通过 Tosca 模板的用户数据会话创建自动监控环境。以下是用户数据中使用的脚本示例。
user_data: |
#!/bin/bash
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install zabbix-agent
sudo apt-get -y install apache2
sudo sed -i "2s/.*/`ifconfig [Interface name in VNF] | grep ""\"inet addr:\"""| cut -d: -f2 | awk ""\"{ print $1 }\"""`/g" "/etc/hosts"
sudo sed -i "s/Bcast/`cat /etc/hostname`/g" "/etc/hosts"
sudo sed -i "3s/.*/[Zabbix server's IP Address]\tmonitor/g" "/etc/hosts"
sudo /etc/init.d/networking restart
sudo echo 'zabbix ALL=NOPASSWD: ALL' >> /etc/sudoers
sudo sed -i "s/# EnableRemoteCommands=0/EnableRemoteCommands=1/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/Server=127.0.0.1/Server=[Zabbix server's IP Address]/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/ServerActive=127.0.0.1/ServerActive=[Zabbix server's IP Address:Port]/" "/etc/zabbix/zabbix_agentd.conf"
sudo sed -i "s/Hostname=Zabbix server/Hostname=`cat /etc/hostname`/" "/etc/zabbix/zabbix_agentd.conf"
sudo service apache2 restart
sudo service zabbix-agent restart
使用 apt-get 安装 Zabbix-agent。此外,在安装 zabbix-agent 后,使用 sed 命令替换配置文件。此过程在 VDU 初始化过程中执行。
通过此过程,Zabbix 提供了一个稳定的监控功能,允许 Tacker 为每个 VDU 设置详细的监控范围和目标,并为 VDU 提供的应用程序提供更稳定的支持。
如果同时使用应用程序监控策略和当前监控策略,则根据当前监控策略发生 respawn 或 scale 操作,现有的 respawn 或 scale 操作将按原样进行。但是,当这些操作发生时,应用程序监控策略不起作用。在当前提案的范围内,用户必须选择当前监控策略或应用程序监控策略。如果 repawn、scale 操作添加到与当前监控策略分离的应用程序监控级别,则可以解决此问题。
备选方案¶
提供 API 的开源监控工具(例如 nagios)
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
主要作者和联系方式。
MinWookKim <delightwook@dcn.ssu.ac.kr>
主要负责人
MinWookKim <delightwook@dcn.ssu.ac.kr>
工作项¶
监控_driver 中的 Zabbix-plugin
用于调用 Zabbix-plugin 的 VNFM 中的插件
用于接收来自 Zabbix 服务器的警报的警报接收器中的附加功能
在 tacker.conf 中定义用于从 Zabbix-plugin 请求 Zabbix 服务器的服务器 IP 地址、端口、ID、密码。
从 utils、translate_template 中提取模板中定义的 app_monitoring_policy
依赖项¶
Zabbix-Server 安装
Zabbix-Agent 安装
测试¶
为 vnf 服务监控添加功能测试
Zabbix 中 VNF 故障恢复和检测的性能测试
基于整体工作流程测试的服务监控策略
文档影响¶
无