我正在尝试在 Google Cloud Monitoring 中创建一个警报,该警报在 Cloud SQL 数据库 (postgresql) 上运行自定义计数查询并返回结果。 例如: SELECT count(*) FROM your_table WHERE [field] IS NULL OR LTRIM(RTRIM([field])) = ''
主要目标是在警报中创建一个阈值,当警报通过时将激活它。
我在 GCP 中没有看到任何允许此类 sql 查询的内置选项。有没有其他解决方案? (使用第三方、云函数或 mql 查询?)
您可以在 Google Cloud Monitoring 中设置警报政策,根据所需条件创建基于日志的指标,将数据库日志导出到 Cloud Logging,根据基于日志的指标创建触发警报的阈值,并监控Google Cloud SQL 数据库。该策略参考了云监控的标准实践,并利用基于日志的分析。
是的,有一些替代解决方案可以在 Google Cloud Monitoring 中创建警报,这些解决方案在 Cloud SQL 数据库 (PostgreSQL) 上运行自定义计数查询并返回结果。
云函数
实现此目的的一种方法是使用云函数。您可以创建一个运行自定义 SQL 查询并返回结果的 Cloud Function。然后,您可以在云监控中创建警报,当云函数的结果超过某个阈值时触发警报。
要创建运行自定义 SQL 查询的云函数,您可以使用以下步骤:
import psycopg2
def my_function(request):
"""Runs a custom SQL query on a Cloud SQL database and returns the result."""
# Connect to the Cloud SQL database.
conn = psycopg2.connect(host='<YOUR_DATABASE_HOST>', database='<YOUR_DATABASE_NAME>', user='<YOUR_DATABASE_USER>', password='<YOUR_DATABASE_PASSWORD>')
# Create a cursor.
cur = conn.cursor()
# Run the custom SQL query.
cur.execute('SELECT count(*) FROM <YOUR_TABLE_NAME> WHERE <YOUR_FIELD> IS NULL OR LTRIM(RTRIM(<YOUR_FIELD>)) = ''')
# Fetch the result of the query.
result = cur.fetchone()[0]
# Close the cursor and connection.
cur.close()
conn.close()
# Return the result of the query.
return result
部署云函数后,您可以在云监控中创建警报,当云函数的结果超过特定阈值时触发警报。
要在云监控中创建提醒,您可以使用以下步骤:
sum(resource.labels.function_name = "<YOUR_FUNCTION_NAME>")
现在,当您的云函数结果超过您指定的阈值时,就会触发警报。
最适合您的解决方案将取决于您的具体需求和要求。如果您需要一个易于设置的简单解决方案,那么使用 Cloud Functions 是一个不错的选择。如果您需要提供更多功能的更强大的解决方案,那么您可能需要考虑使用第三方解决方案。