阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

通过Zabbix监控60台阿里云的RDS和redis数据库

473次阅读
没有评论

共计 5193 个字符,预计需要花费 13 分钟才能阅读完成。

前言:

最近一直在做监控方面的东东,一些基本的东西基本到处都有资料也就不多说了。但是,让监控阿里云的数据库真是把我难住了。研究了许久的阿里云 api,虽然代码写出来了,但是遇到一个坑,所以转换了思路,分别用 redis 和 MySQLadmin 连接数据库,获取连接数和请求数,但是却获取不到实例的 CPU 使用率。又只好回头研究阿里云的 api。花了几天终于踩完所有坑,达到自己想要的效果,具体实现过程如下:

正文:

主要添加了以下三条自定义 key,第一条通过 redis_cli 客户端连接 redis 获取统计数据,第二条通过 mysqladmin 连接 mysql 获取统计数据,第三条就是坑我好几天的,通过云监控获取实例信息的 key。阿里云的 RDS 默认是 5 分钟获取一条监控数据,部分重要的数据库可以设置为 1 分钟获取一次。不过这个是要收费的。最开始以为都是 60 秒获取一次监控数据,所以从云监控获取数据时,时间间隔是 60 秒,就莫名奇妙的出现,有的服务器能获取数据,有的服务器不能获取数据。所以最后的解决思路是,把时间间隔调大,获取好几条数据,然后取最后一条数据就可以了。

#zabbix_agentd.conf
UserParameter=redis.get[*],/usr/local/sbin/redis_get.sh $1 | grep -Po ‘$2:\K[.\d]+’
UserParameter=rds.get[*],mysqladmin -h $1 -P 3306 -u db_username  extended-status -p’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[.\d]+’ |tail -1

为了自已想象中的安全,我把 redis 服务器的密码单独放在某个文件中,然后通过自己写的脚本读取 redis 的连接地址,连接密码,和实例名称,这样在增加 item 的时候只用添加一个实例名称就好,下面脚本会自己通过实例名称获取 redis 地址和密码。

#!/bin/bash
#/usr/local/sbin/redis_get.sh
shadow=/usr/local/sbin/redis_shadow
address=`awk -vn=$1 ‘n ~ $NF{print $1}’ $shadow`
password=`awk -vn=$1 ‘n ~ $NF{print $2}’ $shadow`
redis-cli -h $address -a $password info

保存 redis 的信息放在一个单独的文件中,有新增的 redis 实例就直接修改这个配置文件就可。

#/usr/local/sbin/redis_shadow
redis 连接地址 连接密码 实例名称

上面的比较简单。但是有个问题。总共 60 台服务器,每个服务器有 3 条需要监控的点,所以就得创建 180 个 item,因为 redis 和 rds 里面不能放 zabbix 客户端,所以我就直接通过监控服务器获取 60 台数据库的监控信息。我真的手动添加了 180 个 item。。。。真是傻的可爱~ 所以后面监控 cpu 使用率我就用 zabbix 的 api 来批量添加 item,顿时爽炸了~ 不过在此之前,先看看如何通过阿里云的 api 获取数据库的 cpu 使用率把。

#!/usr/local/bin/Python
from aliyunsdkcore import client
from aliyunsdkcms.request.v20160318 import QueryMetricListRequest
    #用的云监控的 api
import time
import sys
import json
if len(sys.argv) != 4:
        print ‘\tusage: python database_api.py <your_PrijectName> <your_Metric> <your_instanceId> ‘
        print ‘\thelp from help.aliyun.com/document_detail/28619.html\n’
        exit()
clt = client.AcsClient(‘your_access_key’,’your_key_password’,’region_id’)
    #得先创建 access_key 哟,region_id 可以看 region_id 的列表,比如华北 1 是什么 id 呀之类的。
request = QueryMetricListRequest.QueryMetricListRequest()
request.set_accept_format(‘json’)
request.set_Project(sys.argv[1])
    #此处设置 Project 用来定义你是 redis 还是 ecs 还是 rds,具体看查看文档:https://help.aliyun.com/document_detail/28619.html?spm=5176.doc28615.6.627.vlxOtm
request.set_Metric(sys.argv[2])
    #此处就是你要获取值的监控项,也可以查看上面的文档
start_time = time.strftime(‘%Y-%m-%d %H:%M:%S’,time.localtime(time.time()-350))
    #设置一个时间为当前时间的前 350 秒处
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.argv[3])
    #此处要设置实例 id。
request.set_Period(’60’)
result = clt.do_action(request)
print result
    #最后得到的是一个 json 格式的字符串,然后在自定义的 key 中通过 grep 获取到对应的值
#result2 = json.loads(result)
#print float(result2[‘Datapoints’][-1][‘Average’])

———————————————————————————————–

/usr/local/sbin/database_api.py $1 $2 $3 | grep -Po ‘Average”:\K[.\d]+’ |tail -1
单独把自定义 key 的后半部分解释一下。在创建 item 时,database_api.py 会通过 key 获取到三个值
分别是 Project,Metric 和实例 id。然后通过 grep 提取 json 字符串中 Average 对应的值,因为有可能获取
很多值,所以用 tail 获取最后一个值。

注:主要的坑就是上面的哪个 start_time,如果获取不到值就再设置大点就好。下面就是批量增加 item 的代码。大致参考的是别人的。其中需要注意 的一点就是我是手动获取 applicationid 的,可以连接上 zabbix 后通过 zapi.application.get({“filter”:{‘name’:[“APPLICATION_NAME”]}})[0][‘applicationid’] 获取 application 的 id。其中 APPLICATION_NAME 就是你的 application 的名字咯。如果并不需要放入某个 application,可以删掉其中的 applications 那一项。

#!/usr/bin/python
#-*- coding:utf8 -*-
import sys
from zabbix_api import ZabbixAPI
server = “http://YourZabbixServerAddress”
username = “Admin”
password = “password”
zapi = ZabbixAPI(server=server, path=””, log_level=0)
zapi.login(username, password)
 
def get_hostinfo():
        #主要用来获取 host 的 id,接口的 id,其中 HOST_NAME 就是你想往哪个 host 里面增添 item。
    host_info=zapi.host.get({“selectInterfaces”:[“interfaceid”],”filter”:{“host”:[“HOST_NAME”]}})
    hostid = host_info[0][‘hostid’]
    interfaceid =  host_info[0][‘interfaces’][0][‘interfaceid’]
    return (hostid,interfaceid)
 
def create_item(name,key):
    a = get_hostinfo()
    hostid = a[0]
    interfaceid = a[1]
    create_item=zapi.item.create(
        {
            “name”:name,
            “key_”:key,
            “hostid”:hostid,
            “type”:0,
            “value_type”:0,#0 是 float,3 是整数
            “interfaceid”:interfaceid,
            “date_type”:0,
            “delay”:60,
            “history”:7,
            “trends”:90,
            “status”:0,
            “applications”:[#如果不放入某个 applications 可以删掉此项
                “2311”
            ]
        }
    )
    return “item create success”
if __name__ == “__main__”:
    arg1=’CpuUsage’
    with open(‘conf’) as f:
            #从 conf 文件中读取实例 id 和实例名称。
        for i in f:
            rds=i.split()
            key=”rds.get_from_cms[acs_rds,%s,%s]”%(arg1,rds[0])
            name=”%s-%s”%(rds[1],arg1)
            print key,name
            result=create_item(name,key) #调用添加函数。
            print result

 

#conf
实例 id 实例名称

一些 Zabbix 相关教程集合

Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装  http://www.linuxidc.com/Linux/2015-05/117657.htm

CentOS 7 LNMP 环境搭建 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140134.htm

Ubuntu 16.04 安装部署监控系统 Zabbix2.4  http://www.linuxidc.com/Linux/2017-03/141436.htm

Zabbix 监控安装部署及警报配置  http://www.linuxidc.com/Linux/2017-03/141611.htm

Ubuntu 16.04 下安装部署 Zabbix3.0  http://www.linuxidc.com/Linux/2017-02/140395.htm

CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm

CentOS 7 下 Zabbix 3.0 安装详解 http://www.linuxidc.com/Linux/2017-03/141716.htm

64 位 CentOS 6.2 下安装 Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm

ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141919.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5193字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7992920
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...