username = “ a dmin”
password = “ password “
zapi = ZabbixAPI(zabbix_url)
zapi.login(username, password)

獲取所有模板

templates = zapi.template.get(output=”extend”)

此代碼用于從Zabbix 服務器獲取模板信息。通過 template.get API,我們可以獲取包括監控項、觸發器等在內的模板詳細數據。

3.2 調用 Local LLM 進行翻譯

假設我們有一個本地部署的LLM 服務,地址為 http://127.0.0.1:11434/,使用模型 mistral:7b-instruct。我們將通過 API 將模板中的文本傳遞給 LLM,獲得翻譯后的內容。

LLM API的URL

llm_url = http://127.0.0.1:11434/api/generate

準備翻譯請求

def translate_text(text, short_version=False):
prompt = f”你是一個專業的計算機相關語言翻譯者,幫助我翻譯語言為中文,除了翻譯結果,不需要其他內容和解釋。請注意 , 當你接收到內容為空時,回復內容為空。請將以下文本翻譯成中文:

\“{text}\“”
if short_version:
prompt += “ 重新翻譯,去掉備注,不要輸出翻譯結果外的內容。”
payload = {
“model”: “mistral:7b-instruct”,
“prompt”: prompt,
“max_tokens”: 100,
“stream”: False
}
response = requests.post(llm_url, json=payload)
try:
result = response.json()
if result.get(‘done’):
return result.get(‘response’, ‘’).strip()
else:
return “翻譯未完成”
except requests.exceptions.JSONDecodeError as e:
print(f”JSON 解析失敗: {e}”)
return text
def check_and_translate(text, max_length=50):
translated_text = translate_text(text)
while len(translated_text) > max_length:
print(f”翻譯內容過長 ({len(translated_text)} 字符),重新生成簡短版本…”)
translated_text = translate_text(text, short_version=True)
return translated_text

此處的translate_text 函數將傳入的模板文本發送到本地 LLM 服務進行翻譯,并返回翻譯后的內容。

3.3 更新 Zabbix 模板

翻譯完成后,我們將通過Zabbix API 更新模板。如下代碼展示了如何使用 template.update 接口將翻譯后的模板信息更新到 Zabbix 服務器:

def update_template():
translated_name = check_and_translate(template_name, max_length=50)
translated_description = check_and_translate(template_description, max_length=3000)
try:
update_result = zapi.template.update(
templateid=template_id,
name=translated_name,
description=translated_description
)
print(f”模板的名稱更新成功: {update_result}”)
except Exception as e:
print(f”跳過模板的名稱更新: {translated_name},原因: {str(e)}”)
def update_items():
items = zapi.item.get(templateids=template_id, output=[‘itemid’, ‘name’, ‘description’])
for item in items:
item_name = item[‘name’]
item_description = item.get(‘description’, ‘No Description’)
translated_item_name = check_and_translate(item_name, max_length=50)
translated_item_description = check_and_translate(item_description, max_length=3000)
try:
update_item_result = zapi.item.update(
itemid=item[‘itemid’],
name=translated_item_name,
description=translated_item_description
)
print(f”監控項更新成功: {update_item_result}”)
except Exception as e:
print(f”跳過監控項更新: {translated_item_name},原因: {str(e)}”)
def update_triggers():
triggers = zapi.trigger.get(templateids=template_id, output=[‘triggerid’, ‘description’, ‘comments’])
for trigger in triggers:
trigger_description = trigger[‘description’]
trigger_comments = trigger.get(‘comments’, ‘No Comments’)
translated_trigger_description = check_and_translate(trigger_description, max_length=255)
translated_trigger_comments = translate_text(trigger_comments)
try:
update_trigger_result = zapi.trigger.update(
triggerid=trigger[‘triggerid’],
description=translated_trigger_description,
comments=translated_trigger_comments
)
print(f”觸發器更新成功: {update_trigger_result}”)
except Exception as e:
print(f”跳過觸發器更新: {trigger_description},原因: {str(e)}”)
def update_discovery_rules():
discovery_rules = zapi.discoveryrule.get(templateids=template_id, output=[‘itemid’, ‘name’, ‘description’])
for rule in discovery_rules:
rule_name = rule[‘name’]
rule_description = rule.get(‘description’, ‘No Description’)
translated_rule_name = check_and_translate(rule_name, max_length=50)
translated_rule_description = check_and_translate(rule_description, max_length=3000)
try:
update_rule_result = zapi.discoveryrule.update(
itemid=rule[‘itemid’],
name=translated_rule_name,
description=translated_rule_description
)
print(f”自動發現規則更新成功: {update_rule_result}”)
except Exception as e:print(f”跳過自動發現規則更新: {translated_rule_name},原因: {str(e)}”)

4. 實現效果

4.1 獲取Zabbix模板信息

4.2 翻譯Zabbix模板信息

4.3 翻譯前后對比

5. 總結

通過結合Zabbix API 與 Local LLM,我們實現了 Zabbix 模板的自動化翻譯。這一解決方案通過自動獲取模板、調用本地語言模型進行智能翻譯,并最終更新 Zabbix 模板的全流程自動化,極大提升了翻譯效率,減少了手動操作帶來的錯誤風險。

這種方法不僅適用于Zabbix 模板的翻譯,還可以擴展至其他類似場景,例如配置文件的翻譯、監控規則的國際化等。通過結合自動化和 AI 技術,企業可以更高效地應對全球化的運維需求。

本文章轉載微信公眾號@twt企業IT社區

上一篇:

大語言模型友好的 API:借助集體智慧構建更好的軟件架構

下一篇:

Elasticsearch Inference API 增加對阿里云 AI 的支持
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費