Автоматическое выключение хостов в zabbix
Пришла пора рассказать как я начал выключать неиспользуемые хосты в заббиксе.
Вот полезное чтиво по установке, настройке и тюнингу заббикса:
Установка Zabbix из исходников в FreeBSD
Установка Zabbix на Debian/Ubuntu/Linux Mint
Установка Zabbix на RedHat/CentOS/Fedora
Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux
Установка Zabbix-agent в Unix/Linux
Приступим….. Вот готовый скрипт:
$ cat Disable_Hosts_in_Zabbix.py
Вывод:
#!/bin/env python3
import re
import requests
import sys
import json
import time
import argparse
from pyzabbix import ZabbixAPI
from datetime import datetime
from slacker import Slacker
def main():
# SLACK
#Slack_Api_Token= 'xoxb-Your_TOKEN HERE'
#slack = Slacker(Slack_Api_Token)
#
parser = argparse.ArgumentParser()
parser.add_argument('--nodes', nargs='+', dest='nodes', help='Add nodes to disable')
parser.add_argument('--zabbix-host', dest='zabbix_host', help='Add zabbix host', default=None)
parser.add_argument('--zabbix-user', dest='zabbix_user', help='Add zabbix user', default=None)
parser.add_argument('--zabbix-password', dest='zabbix_password', help='Add zabbix password', default=None)
results = parser.parse_args()
# host, login, password to connect to zabbix-server
Zabbix_Host = results.zabbix_host
Zabbix_User = results.zabbix_user
Zabbix_Password = results.zabbix_password
Zabbix_User_for_HTTPBasicAuth = ''
Zabbix_Password_for_HTTPBasicAuth = ''
# You can use the Connection_Timeout
Connection_Timeout = 25
# Verify SSL
Verify_SSL = False
# Connect to zabbix-server
zapi = ZabbixAPI(Zabbix_Host, timeout=Connection_Timeout)
zapi.session.verify = Verify_SSL
if not Verify_SSL:
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
r = requests.get(Zabbix_Host, verify=Verify_SSL)
zapi.login(Zabbix_User,Zabbix_Password)
zapi.session.auth = (Zabbix_User, Zabbix_Password)
# re-define Connection_Timeout after
zapi.timeout = Connection_Timeout
Timestamp_Time_Now = datetime.fromtimestamp(int(time.mktime(datetime.now().timetuple()))).strftime('%d-%m-%Y-%H_%M')
Get_Hosts=zapi.host.get(filter={"name": results.nodes}, output=['hostid','host','name','status'])
for host in Get_Hosts:
zapi.host.update({"hostid":host['hostid'], "status":'1'})
Re_Name = host['name']+ '_'+ Timestamp_Time_Now
zapi.host.update({"hostid":host['hostid'], "host": Re_Name})
zapi.host.update({"hostid":host['hostid'], "name": Re_Name})
#slack.chat.post_message('@channel', 'The Disable_Hosts_in_Zabbix.py script has been done itself task with disabling hosts from zabbix server')
if __name__ == '__main__':
main()Скрипт готов, осталось заюзать костыль…..
Открываем веб-интерфейс и переходим: Configuration -> Actions. Справа вверху имеется «Event source» поле, выбираем — triggers:

Выбираем «Create action»:

Заполняем поля, придерживайтесь того — как у меня. После этого, переходим во вкладку «Operations»:

На выходи должны получить:
ip-10-134-23-12_05-08-2017-00_20 my_server_05-08-2017-00_20
Для удаления хостов, я написал другой скрипт:
Автоматическое удаление хостов в zabbix
Ознакомьтесь с ним и пользуйтесь 😉
А на этом, у меня все — статья «Автоматическое выключение хостов в zabbix» завершена.