Автоматическое выключение хостов в zabbix

Автоматическое выключение хостов в zabbix

Пришла пора рассказать как я начал выключать неиспользуемые хосты в заббиксе.

Вот полезное чтиво по установке, настройке и тюнингу заббикса:

Установка Zabbix из исходников в FreeBSD

Установка Zabbix на Debian/Ubuntu/Linux Mint

Установка Zabbix на RedHat/CentOS/Fedora

Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux

Установка Zabbix-agent в Unix/Linux

Оптимизация настроек Zabbix

Настройка Grafana с Graphite/Zabbix/Prometheus/MySQL/InfluxDB/Elasticsearch/CloudWatch для сбора и отображения метрик в Unix/Linux

Приступим….. Вот готовый скрипт:

Вывод:

#!/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:

disable host in zabbix

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

Disable old hosts in zabbix

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

disable host zabbix

На выходи должны получить:

ip-10-134-23-12_05-08-2017-00_20
my_server_05-08-2017-00_20

Для удаления хостов, я написал другой скрипт:

Автоматическое удаление хостов в zabbix

Ознакомьтесь с ним и пользуйтесь 😉

А на этом, у меня все — статья «Автоматическое выключение хостов в zabbix» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.