Red de conocimiento informático - Espacio del host - ¿Cómo superviso 60 bases de datos Redis y RDS de Alibaba Cloud a través de zabbix?

¿Cómo superviso 60 bases de datos Redis y RDS de Alibaba Cloud a través de zabbix?

Prólogo:

He estado monitoreando cosas recientemente, por lo que no entraré en detalles sobre algunas cosas básicas donde básicamente hay información. Sin embargo, monitorear la base de datos de Alibaba Cloud realmente me deja perplejo. He estado estudiando la API de Alibaba Cloud durante mucho tiempo. Aunque escribí el código, encontré un problema, así que cambié de opinión y usé redis y mysqladmin para conectarme a la base de datos, respectivamente. pero no pude obtener el uso de CPU de la instancia. Me tomó unos días eliminar finalmente todos los obstáculos y lograr los resultados que quería. El proceso de implementación específico es el siguiente:

Texto:

Las siguientes tres características principales han sido. agregado: Defina la clave. La primera es conectar redis a través del cliente redis_cli para obtener datos estadísticos. La segunda es conectarse a mysql a través de mysqladmin para obtener datos estadísticos. datos El tercero es conectarse a mysql a través de mysqladmin para obtener datos estadísticos. El tercero es la clave para obtener información de la instancia a través del monitoreo en la nube, que he estado usando durante varios días. De forma predeterminada, el RDS de aliCloud obtiene datos de monitoreo cada 5 minutos. Algunas bases de datos importantes se pueden configurar para obtener datos de monitoreo una vez cada 1 minuto. Sin embargo, hay una tarifa. Al principio, pensé que todos los datos de monitoreo se obtenían una vez cada 60 segundos, por lo que cuando obtuve datos del monitoreo en la nube a intervalos de 60 segundos, algunos servidores pudieron obtener datos y algunos servidores no pudieron obtener datos de manera inexplicable. Entonces, la solución final es ajustar el intervalo de tiempo, obtener algunos datos más y luego obtener los últimos datos.

#zabbix_agentd.conf

UserParameter=redis.get[*],/usr/local/sbin/redis_get.sh$1|grep-Po'$2:\K[.\ d]+'

UserParameter=rds.password'|grep-Po'2[^\d]+\K\d+'

UserParameter=rds.get_from_cms[*], /usr/local/sbin/database_api.py$1$2$3|grep-Po'Average":\K[.

#!

#!/bin/bash

#/usr/local/sbin/redis_get.sh

shadow=/usr/local/sbin/redis_shadow

address=`awk-vn=$1'n~ $NF {print$1}'$shadow`

contraseña=`awk-vn=$1'n~$NF{print$2}'$shadow`

redis-cli-h $address -a$passwordinfo guarda la información de Redis en un archivo separado, que puede ser modificado directamente por la nueva instancia de Redis

#/usr/local/sbin/redis_shadow

redis- connect-address-connect-password-instance-name El contenido anterior es relativamente simple, pero hay un problema **** Hay 60 servidores en total y cada servidor tiene 3 puntos que deben monitorearse, por lo que 180 ARTÍCULOS. Necesita ser creado, ya que no puedo colocar el cliente zabbix en redis y rds, solo puedo obtener la información de monitoreo de 60 bases de datos directamente a través del servidor de monitoreo.

Es realmente estúpido y lindo ~ Así que luego usé la API de Zabbix para agregar proyectos en lotes para monitorear el uso de la CPU, y el efecto fue excelente ~ Pero antes de eso, echemos un vistazo a cómo obtener el uso de la CPU de la base de datos a través de Alibaba Cloud. API.

#!

#api para monitoreo en la nube

importtime

importys

importjson

iflen(sys.argv) ! =4:

imprimir'\tusage:pythondatabase_api.py

print'\thelpfromhelp.aliyun.com/document_detail/28619.html\ n'

exit()

clt= client.AcsClient('your_access_key','your_key_password','region_id')

#Primero debes crear la clave de acceso y region_id puede ver la lista de region_ids, por ejemplo, cuál es el ID del norte de China 1, etc.

request=QueryMetricListRequest.QueryMetricListRequest()

request.set_accept_format('json')

request.set_Project(sys.argv[1])

# El proyecto establecido aquí se utiliza para definir si es redis, ecs o rds. Consulte el documento: /document_detail/28619.html?spm=5176 doc28615.6.627.vlxOtm

. request.set_Metric( sys.argv[2])

#Aquí está el elemento de monitoreo cuyo valor desea obtener. También puede consultar la documentación anterior

start_time=time. strftime( '% Y-%m-%d%H:%M:%S',time.localtime(time.timestamp_start=int(time.mktime(time.strptime(start_time,"%Y-%m-%d %H:% M:%S")))*1000

request.set_StartTime(timestamp_start)

request.set_Dimensions("{'instanceId':'%s'}" %sys.loads (resultado)

#printfloat(resultado2['Puntos de datos'][-1]['Promedio'])

/usr/local/sbin/database_api.py $1$2$3| grep-Po'Average":\K[.\d]+'|tail-1

interpreta la segunda mitad de la clave personalizada por separado. Al crear el proyecto, Database_api.py recuperarse de la palabra clave

p>

Obtenga tres valores de Proyecto, Métrica e ID de instancia, luego use grep para extraer el valor correspondiente a Promedio en la cadena json y use tail para obtener el último valor, porque es posible obtener

Múltiples valores.

NOTA: El problema principal es la hora de inicio anterior; si no puede obtener ese valor, simplemente restablezcalo a algo más grande. El siguiente es el código para agregar artículos en lotes. Se basa principalmente en el código de otras personas. Una cosa a tener en cuenta es que obtuve el ID de la aplicación manualmente. Puede conectarse a zabbix y pasar zapi.application.get({"filter":{'name':["APPLICATION_NAME"]})[0]['application_id': ["APPLICATION_NAME"]})[0]['application_id':["APPLICATION_NAME"]} Obtener. })[0]['applicationid'] Obtiene el ID de la aplicación, donde APPLICATION_NAME es el nombre de la aplicación. Si no necesita ingresar una aplicación, puede eliminar la entrada de la aplicación.

#! /usr/bin/python

#-*-coding:utf8-*-

importsys

fromzabbix_apiimportZabbixAPI

server="/ 8193303/1906412

¿Cómo ingresar a zabbix? ¿Cómo monitoreo 60 bases de datos de Alibaba Cloud RDS y redis a través de zabbix?

Etiqueta: Alibaba Cloud apizabbix monitoreando rdsredis