前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SQLServer采集data和log的体积推送到prometheus

SQLServer采集data和log的体积推送到prometheus

原创
作者头像
保持热爱奔赴山海
发布于 2024-10-01 01:25:37
发布于 2024-10-01 01:25:37
9500
代码可运行
举报
文章被收录于专栏:数据库相关数据库相关
运行总次数:0
代码可运行

生产上需要采集各个库的datasize和logsize,便于DBA提前介入优化(例如数据文件最近为啥体积暴涨、事务日志为啥一直在涨or收缩失败?)

这种情况下,可以使用下面的脚本采集下datasize和logsize,并推送到pushgateway中:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# -*-coding:utf-8 -*-

import datetime
import json
import os
import sys

import requests

import pymssql
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway


def get_db_list(host, port, db, user, passwd):
    conn = pymssql.connect(
        host=host, port=port, user=user, password=passwd, database=db, charset="utf8"
    )
    cursor = conn.cursor()
    sql = """select database_id,name,state from sys.databases where [state] not in(1,2,3,4,6) and name not in ('master','model','tempdb','msdb') ORDER BY name asc"""

    cursor.execute(sql)
    res = cursor.fetchall()

    db_list = []

    for i in res:
        db_list.append(i[1])

    return db_list


def push_metrics(host, port, db, user, passwd, db_list):
    for db in db_list:
        # print(db)
        conn = pymssql.connect(
            host=host,
            port=port,
            user=user,
            password=passwd,
            database='master',
            charset="utf8",
        )
        cursor = conn.cursor()

        detail_sql = "USE [" + str(db) + "];" +  """
            SELECT
                DB_NAME() AS [Database Name]
                ,SUM(size * 8.0 / 1024) AS [Total_Size]
                ,SUM(CASE WHEN type_desc = 'ROWS' THEN size * 8.0 / 1024 ELSE 0 END) AS [Data Size]
                ,SUM(CASE WHEN type_desc = 'LOG' THEN size * 8.0 / 1024 ELSE 0 END) AS [Log Size]
                ,@@SERVERNAME as instance
            FROM sys.master_files 
            WHERE type in (0,1) AND state = 0 AND database_id = DB_ID('""" + str(db) + "');"

        try:
            cursor.execute(detail_sql)
        except:
            continue

        res = cursor.fetchall()

        for row in res:            
            Database_Name = str(row[0])
            Total_Size = str(row[1])
            Data_Size = str(row[2])
            Log_Size = str(row[3])
            instance = str(row[4])

            print(f"节点 {instance}, 库名 {Database_Name}, Total_Size: {Total_Size}, Data_Size: {Data_Size}, Log_Size: {Log_Size} ")

            # 把指标格式化成prometheus识别的格式
            labels = ["Metrics"]

            registry = CollectorRegistry()

            db_metrics = Gauge("Data_Size", "MSSQL基础指标", labels, registry=registry)
            db_metrics.labels("Data_Size").set(Data_Size)

            db_metrics = Gauge("Log_Size", "MSSQL基础指标", labels, registry=registry)
            db_metrics.labels("Log_Size").set(Log_Size)


            push_to_gateway(
                gateway='http://192.168.31.181:9091',
                job="MSSQLBasicMetrics",
                # 注意这里的grouping_key是关键,写的有问题会导致不同instance的指标覆盖
                grouping_key={
                    "instance": instance,
                    "Database_Name":Database_Name
                },
                registry=registry,
                timeout=5,
            )
            

if __name__ == "__main__":
    port = "1433"
    db = "master"
    user = "sa"
    passwd = "Abcd1234"

    host_list = ["192.168.31.181","192.168.31.17"]

    for host in host_list:
        print("当前解析的是 ---- ",host)
        db_list = get_db_list(host, port, db, user, passwd)

        push_metrics(host, port, db, user, passwd, db_list)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
API简介-OpenAI API系统快速入门
OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或代码的任务。我们提供一系列具有不同能力模型以适用于不同的任务,允许您微调并定制自己的专用模型。这些模型可用于从内容生成到语义搜索和分类的所有内容。
jack.yang
2025/04/05
1110
如何发送请求-OpenAI API系统快速入门
您可以将以下命令粘贴到终端中以运行您的第一个 API 请求。确保替换为您的私有 API 密钥-YOUR_API_KEY
jack.yang
2025/04/05
690
一文看懂大模型核心参数调优用法与实战
目前大部分集成大模型开发用作后端响应,基本上生产环境用的都是OpenAI Python 的SDK,我也推荐大家用OpenAI Python 的SDK,统一、规范易于理解。OpenAI的SDK是现在大模型生态建设的相对完善而且比较全面的,开发者能够更方便地与模型交互。而且目前市面上的模型基本都兼容OpenAI的SDK,能容易集成其他大模型的API打造多模态大模型并用ASWL,因此本文将主要探讨OpenAI SDK的一些常用参数在创建大模型对话是可以使用哪些参数来强化优化回答效果。
fanstuck
2025/04/25
554
一文看懂大模型核心参数调优用法与实战
Code completion-OpenAI API系统快速入门
Codex 模型系列是我们的GPT-3系列的后代,该系列经过自然语言和数十亿行代码的训练。它最擅长Python,精通十几种语言,包括JavaScript,Go,Perl,PHP,Ruby,Swift,TypeScript,SQL甚至Shell。在最初的有限测试期内,Codex 使用是免费的。了解更多。
jack.yang
2025/04/05
680
Completions-OpenAI API系统快速入门
POST https://api.openai.com/v1/completions
jack.yang
2025/04/05
850
研究人员模型索引-OpenAI API系统快速入门
模型一般用于研究目的和生产中的开发人员使用。研究人员经常从已发表的论文中了解OpenAI的模型,但OpenAI API中可用的内容与论文中发表的内容之间通常没有完全匹配。
jack.yang
2025/04/05
460
Text completion-OpenAI API系统快速入门
完成终结点可用于各种任务。它为我们的任何模型提供了一个简单但功能强大的界面。您输入一些文本作为提示,模型将生成一个文本补全,尝试匹配您为其提供的任何上下文或模式。例如,如果你给 API 提示,“正如笛卡尔所说,我认为,因此”,它将以很高的概率返回完成“我是”。
jack.yang
2025/04/05
530
Text completion-OpenAI API系统快速入门
开发私有chatGPT(一)openai接口文档介绍
OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或代码的任务。我们提供一系列具有不同功率水平的型号,适用于不同的任务,并能够微调您自己的定制模型。这些模型可用于从内容生成到语义搜索和分类的所有内容。
唯一Chat
2023/02/12
2.8K0
Embeddings-OpenAI API系统快速入门
嵌入是浮点数的向量(列表)。两个向量之间的距离衡量它们的相关性。小距离表示高相关性,大距离表示低相关性。
jack.yang
2025/04/05
900
ChatGPT与微信聊天机器人
最近大家都在讨论ChatGPT的应用,而且形形色色的段子都出来了,为了验证各种说法的对错,当然也未能免俗,决定做个尝试,第一步是让代码先跑起来,第二步是实现微信聊天机器人,第三步是实现自己想要的东西,呵呵
python与大数据分析
2023/03/02
1.2K0
ChatGPT与微信聊天机器人
GPT生成情人节表白情话,AI撩骚情人卡很搞笑!
不管是永远孤寂的万年单身宅,还是等着另一半奉上例行年敬的有情人,抑或是憎恶商业化节日物化人性的愤怒野狼,都会预期在今天看到铺天盖地的量产单调情话。
新智元
2022/02/24
1.1K0
GPT生成情人节表白情话,AI撩骚情人卡很搞笑!
fine-tuning-OpenAI API系统快速入门
GPT-3 已经对来自开放互联网的大量文本进行了预训练。当给出一个只有几个例子的提示时,它通常可以直观地判断你正在尝试执行什么任务并生成一个合理的完成。这通常被称为“少镜头学习”。
jack.yang
2025/04/05
1210
开发私有chatGPT(二)openai前景展望
GPT-3可以执行各种自然语言任务、Codex 可以将自然语言转换为代码的 ,DALL·E,用于创建和编辑原始图像。
唯一Chat
2023/02/12
7280
开发私有chatGPT(二)openai前景展望
普通用户玩不起的GPT-3 API,已在300多个应用中部署了
机器之心报道 编辑:小舟、维度 江湖中没有真正的 GPT-3 模型,但已经有了 300 多种 GPT-3 加持的应用。 2020 年 6 月,OpenAI 推出了一个用于访问自家开发的新 AI 模型 GPT-3 的 API——OpenAI API。与其他大多数设计用于单一用例的 AI 系统不同,该 API 提供了一个通用的「text in, text out」界面,用户可以在任何英文任务上试用。这是 OpenAI 首个商用产品。 9 个月过去了,如今已有超过 300 个应用在使用 GPT-3,全球数万用户
机器之心
2023/03/29
6970
普通用户玩不起的GPT-3 API,已在300多个应用中部署了
少数派实测报告:AI巨无霸模型GPT-3 | 附送API 调用方法「AI核心算法」
编者按:在今年5月29日,OpenAI 发表了一篇关于 GPT-3 的论文,论文描述了他们的下一代基于 Transformers 的文本生成神经网络。其中最值得注意的是,与之前 GPT-2 迭代的 15 亿个参数相比,新模型有 1750 亿个参数:模型尺寸扩大了近 117倍!要知道,今年2月微软推出的深度学习模型 Turing NLG 的参数规模是 170亿,是前任“史上最大语言模型英伟达“威震天”(Megatron)的两倍,但只有GPT-3的十分之一。不过,在围观群众的一片惊呼声中,GPT-3 却没有引起广泛的技术性讨论,模型参数和对算力的要求都太过惊人,大部分群众只能远观而无法上手。
用户7623498
2020/08/27
1.8K0
少数派实测报告:AI巨无霸模型GPT-3 | 附送API 调用方法「AI核心算法」
OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs
在最新的 OpenAI 官方 APIs 文档中,Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。
叶庭云
2023/12/27
2.3K0
OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs
深入了解Prompt工程及其在GPT-3中的应用
"prompt工程"时,实际上是指如何设计和构建与大语言模型进行交互的输入方式,通常是通过给模型一个简短的提示(prompt)来引导其生成期望的输出。这个过程有点像和计算机进行对话,你提供一个问题或指令,模型回应一个相关的答案或生成一段文本。
GeekLiHua
2025/01/21
1000
​解密prompt系列5. APE+SELF=自动化指令集构建代码实现
上一章我们介绍了不同的指令微调方案, 这一章我们介绍如何降低指令数据集的人工标注成本!这样每个人都可以构建自己的专属指令集, 哈哈当然我也在造数据集进行时~
风雨中的小七
2023/04/09
3.4K0
​解密prompt系列5. APE+SELF=自动化指令集构建代码实现
OpenAI 真的 Open 了,GPT-3 使用将更加开放
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) OpenAI,这次真的要 Open 了。 OpenAI 在 2020 年 6 月开放了 GPT-3 API 接口,但只是开放商用,随即吸引了大量的公司:客服、视频游戏、辅导服务和心理健康应用程序等。 近日,OpenAI宣布,将取消访问其自然语言处理程序GPT-3 API 的等候名单。 GPT-3 是一种大型语言模型,可以自动编写电子邮件和文章、撰写诗歌、跨十几种编程语言创建代码等等。从11月18日开始,对于受任何支持国家/地区的开发者都
AI科技大本营
2023/04/14
6080
OpenAI 真的 Open 了,GPT-3 使用将更加开放
OpenAI的GPT-3说话了,请听!
还记得那个在Reddit上灌水一周才被发现的机器人/u/thegentlemetre吗?
新智元
2021/03/10
5920
OpenAI的GPT-3说话了,请听!
推荐阅读
相关推荐
API简介-OpenAI API系统快速入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验