
Автоматическое выключение хостов в 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» завершена.