ZABBIX自定义模板
Foreword
需求,需要对腾讯云机器进行数据库的监控。
解决,通过API获取相关数据库CPU/Mem/Disk数值,制作模板,利用Zabbix监控。
01. Import Template
Template 可以随意从线上模板export出来一份即可
02. Template Config
需要提前定义好Zabbix模板所需要的item,tigger等信息,本次主要为:CPU利用率,内存使用,磁盘使用。
2.1 Item config
cpu_use_rate
memory_use
use_disk
2.2 Tigger config
cpu_tigger
03. SaltMaster Config
登陆salt机器配置zabbix,通过指定脚本来获取值
Zabbix统一安装目录:/usr/local/zabbix_agentd/
Zabbix统一配置文件:/usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/*.conf
3.1 Zabbix Scripts
示例,腾讯云CDB监控脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 7/18/2018 4:57 PM
# @Author : Fred Yang
# @File : qcloud_cdb_monitor.py
# @Role : 通过腾讯云监控获取CDB监控指标信息,参考官方文档:https://cloud.tencent.com/document/product/248/11006
import sys
import time
import datetime
import json
import random
import requests
from settings import TX_INFO
from qcloud_api import ApiOper
secret_key = TX_INFO['SecretKey']
secret_id = TX_INFO['SecretId']
# 对应的每一个接口都会一个单独的url地址
api_url = 'monitor.api.qcloud.com/v2/index.php?'
def get_dict(region,cdb_id,metrics):
"""
填写字典参数,公共参数+接口参数
:param region: str, 腾讯云区域
:param cdb_id: str, 数据库的实例ID
:param metrics: str,监控指标,如(CPU,Memory,Disk)
示例:python3 qcloud_cdb_monitor.py ap-shanghai cdb-extlv472 cpu_use_rate
:return: int, CPU利用率等
"""
end_time = datetime.datetime.now()
start_time = end_time - datetime.timedelta(minutes=10)
keydict = {
#公共参数部分
'Timestamp': str(int(time.time())),
'Nonce': str(int(random.random() * 1000)),
'Region': region,
'SecretId': secret_id,
# 'SignatureMethod': SignatureMethod,
#接口参数部分
'Action': 'GetMonitorData',
'namespace': 'qce/cdb',
'metricName': metrics,
'dimensions.0.name': 'uInstanceId',
'dimensions.0.value': cdb_id,
'startTime': start_time.strftime("%Y-%m-%d %H:%M:%S"),
'endTime': end_time.strftime("%Y-%m-%d %H:%M:%S")
}
return keydict
def get_response(result_url):
"""
发送get请求
:param result_url: 获取base64加密后的签名
:return: 获取数据
"""
res = requests.request('get', result_url)
response = json.loads(res.text)
#return response
if len(response['dataPoints']) > 0:
#print(response['dataPoints']) # 返回得到的数据值
print(max(response['dataPoints']))
else:
print("-0.00")
def index():
if len(sys.argv) == 4:
region = sys.argv[1]
cdb_id = sys.argv[2]
metrics = sys.argv[3]
#填写字典内容,根据具体APi接口填写
keydict = get_dict(region,cdb_id,metrics)
#通过APi获得base64加密后的sign,获取请求的url
result_url = ApiOper.run(keydict, api_url, secret_key)
# 拿着base64加密后的签名请求资源
get_response(result_url)
if __name__ == '__main__':
index()
3.2 Params Config
#将脚本相关的文件cp到zabbix指定目录
$ cp qcloud_api.py settings.py qcloud_cdb_monitor.py /usr/local/zabbix_agent/script/
$ cat /usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/cdb-params.conf
UserParameter=cdb.ins.base[*],/usr/local/bin/python3 /usr/local/zabbix_agent/script/qcloud_cdb_monitor.py $1 $2 $3
3.3 Agentd Restart
$ /etc/init.d/zabbix_agentd restart
04. ZabbixServer Add Host
准备工作完成后,开始添加云数据到zabbix
4.1 Create Host
4.2 Link Templates
4.3 Macros Config
配置宏,这里需要传参到脚本 region,cdbid