Centos7.4 implementa la plataforma LNMP y Zabbix para implementar el monitoreo, y escribe scripts de Python para lograr un control rápido

1. Implemente la plataforma LNMP

yum -y instalar gcc gcc-c ++ hacer automake php php-mysql openssl-devel pcre-devel

cd nginx-1.12.2

useradd -s / sbin / nologin nginx

./configure --prefix = / usr / local / nginx --with-http_ssl_module
make && make install
rpm -ivh php-fpm-5.4.16-42.el7.x86_64.rpm 

systemctl reiniciar php-fpm
systemctl habilitar php-fpm

cd / usr / local / nginx / conf /

vim nginx.conf

ln -s / usr / local / nginx / sbin / nginx / sbin / nginx

vim /usr/local/nginx/html/test.php

Instale mysql, cree la biblioteca zabbix, autorización, etc.

Segundo, despliega zabbix

tar -xf zabbix-3.4.4.tar.gz 

cd zabbix-3.4.4 /
./configure --enable-server --enable-proxy --enable-agent --with-mysql = / usr / bin / mysql_conf --with-net-snmp --with-libcurl
make && hacer instalar

Vaya al directorio de la base de datos para importar la tabla de la base de datos y vaya al directorio front-end para copiar el contenido de la página web a nginx. Establecer permisos.

Modificar el archivo de configuración del servidor zabbix y el archivo de configuración del agente

useradd -s / sbin / nologin zabbix

Visita nginx

http://192.168.122.10/index.php

Configuración completa de zabbix

La cuenta es admin y la contraseña es zabbix

Tres, escribe el script de Python

1. Visite el sitio web oficial de zabbix, encuentre información relacionada con la API, obtenga el número de versión de zabbix

El código es el siguiente:

solicitudes de
importación json de importación

url = 'http://192.168.122.10/api_jsonrpc.php'
headers = {'Content-Type': 'application / json-rpc'}
data = {
    "jsonrpc": "2.0",
    "method": "apiinfo. version ",
    " params ": [],
    " id ": 1
}

r = request.post (url = url, encabezados = encabezados, datos = json.dumps (datos))
resultado = r.json ()
print ('La versión de Zabbix es% s'% result ['result'])

2. Visite el sitio web oficial de zabbix, encuentre información relacionada con la API, obtenga el token zabbix

El código es el siguiente:

solicitudes de
importación json de importación

url = 'http://192.168.122.10/api_jsonrpc.php'
headers = {'Content-Type': 'application / json-rpc'}
data = {
    "jsonrpc": "2.0",
    "method": "user. login ",
    " params ": {
        " usuario ":" Admin ",
        " contraseña ":" zabbix "
    },
    " id ": 1
}

r = request.post (url = url, encabezados = encabezados, datos = json.dumps (datos))
resultado = r.json ()
print ('El token de Zabbix es% s'% resultado ['resultado'])

1. Visite el sitio web oficial de zabbix, encuentre información relacionada con la API y cree un host

El código es el siguiente:

#! / usr / bin / env python3
solicitudes de
importación import json

def get_token (url, encabezados):
    data = {
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "Admin",
            "password": "zabbix"
        } ,
        "id": 1
    }
    r = request.post (url = url, encabezados = encabezados, datos = json.dumps (datos))
    devuelve r.json () ['resultado']

def get_hosts (token, url, encabezados):
    data = {
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "filter": {
        }
    },
    "auth": token,
    "id": 5
}

    r = request.post (url = url, encabezados = encabezados, datos = json.dumps (datos))
    n = r.json () ['resultado']
    para el elemento en n:
        print (elemento ['hostid'], elemento ['anfitrión'])

def get_groups (token, url, encabezados):
    data = {
    "jsonrpc": "2.0",
    "method": "hostgroup.get",
    "params": {
        "output": "extend",
        "filter": {
        }
    },
    "auth": token,
    "id": 2
}

    r = request.post (url = url, encabezados = encabezados, datos = json.dumps (datos))
    b = r.json () ['resultado']
    para el elemento en b:
        print (elemento ['groupid'], elemento ['nombre'])

def get_tamp (token, url, encabezados):
    data = {
    "jsonrpc": "2.0",
    "method": "template.get",
    "params": {
        "output": "extend",
        "filter": {
        }
    },
    "auth": token,
    "id": 1
}

    r = request.post (url = url, encabezados = encabezados, datos = json.dumps (datos))
    c = r.json () ['resultado']
    para el elemento en c:
        print (elemento ['templateid'], elemento ['anfitrión'])

def create_host (token, url, headers):
    hostname = input ('Ingrese el nombre de host de monitoreo que desea crear:')
    ip = input ('Ingrese la IP del host de monitoreo que desea crear:')
    gid = input (' Ingrese el GID del host de monitoreo que desea crear: ')
    tempid = input (' Ingrese el TEMPID del host de monitoreo que desea crear: ')  
    data = {
    "jsonrpc": "2.0",
    "method": "host.create ",
    " params ": {
        " host ": nombre de host,
        " interfaces ": [
            {
                " type ": 1,
                " main ": 1,
                " useip ": 1,
                " ip ": ip,
                " dns ":" ",
                "puerto ":" 10050 "
            }
        ],
        " grupos ": [
            {
                "groupid": gid
            }
        ],
        "templates": [
            {
                "templateid": tempid
            }
        ],
        "Inventory_mode": 0,
        "Inventory": {
        }
    },
    "auth": token,
    "id": 4
}

    r = request.post (url = url, encabezados = encabezados, datos = json.dumps (datos))

def show_memu (token, url, encabezados):
    cmds = {'1': get_groups, '2': get_tamp, '3': create_host, '0': get_hosts}
    prompt = '' '(0) enumera los hosts existentes ID y nombre de host
(1) Listar la ID de grupo y el grupo de host
(2) Listar la ID de plantilla y la plantilla
(3) Crear el host de monitoreo
(4) Salir
Seleccione la función que necesita de 1234, la creación del host de monitoreo requiere completar la ID del grupo , ID de plantilla, dirección IP y otra información: '' '
    while True:
        opción = input (prompt)
        if choice ==' 4 ':
            break
        if choice no en' 0123 ':
            print (' ¡inválido!, Seleccione la función correcta ' )
        cmds [opción] (token, url, encabezados)

if __name__ == '__main__':
    url = 'http://172.17.2.187/api_jsonrpc.php'
    headers = {'Content-Type': 'application / json-rpc'}
    token = get_token (url, headers)
    show_memu ( token, url, encabezados)

 

Publicado 73 artículos originales · elogiado 4 · 20,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/qq_27592485/article/details/102490634
Recomendado
Clasificación