Google Cloud 中针对 postgresql 数据库自定义查询的警报

问题描述 投票:0回答:2

我正在尝试在 Google Cloud Monitoring 中创建一个警报,该警报在 Cloud SQL 数据库 (postgresql) 上运行自定义计数查询并返回结果。 例如: SELECT count(*) FROM your_table WHERE [field] IS NULL OR LTRIM(RTRIM([field])) = ''

主要目标是在警报中创建一个阈值,当警报通过时将激活它。

我在 GCP 中没有看到任何允许此类 sql 查询的内置选项。有没有其他解决方案? (使用第三方、云函数或 mql 查询?)

postgresql google-cloud-platform alert
2个回答
0
投票

您可以在 Google Cloud Monitoring 中设置警报政策,根据所需条件创建基于日志的指标,将数据库日志导出到 Cloud Logging,根据基于日志的指标创建触发警报的阈值,并监控Google Cloud SQL 数据库。该策略参考了云监控的标准实践,并利用基于日志的分析。


0
投票

是的,有一些替代解决方案可以在 Google Cloud Monitoring 中创建警报,这些解决方案在 Cloud SQL 数据库 (PostgreSQL) 上运行自定义计数查询并返回结果。

云函数

实现此目的的一种方法是使用云函数。您可以创建一个运行自定义 SQL 查询并返回结果的 Cloud Function。然后,您可以在云监控中创建警报,当云函数的结果超过某个阈值时触发警报。

要创建运行自定义 SQL 查询的云函数,您可以使用以下步骤:

  1. 创建一个新的云函数项目。
  2. 选择“运行时”选项卡并选择“Python (3.8)”。
  3. 单击“创建”按钮。
  4. 在“函数”编辑器中,输入函数的名称并粘贴以下代码:
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

  1. 单击“保存”按钮。
  2. 单击“部署”按钮。

部署云函数后,您可以在云监控中创建警报,当云函数的结果超过特定阈值时触发警报。

要在云监控中创建提醒,您可以使用以下步骤:

  1. 进入云监控控制台。
  2. 单击“警报”选项卡。
  3. 单击“创建策略”按钮。
  4. 在“条件”部分中,单击“添加条件”按钮。
  5. 选择“自定义”作为条件类型。
  6. 在“自定义条件”字段中,输入以下 MQL 查询:
sum(resource.labels.function_name = "<YOUR_FUNCTION_NAME>")
  1. 单击“添加”按钮。
  2. 在“触发”部分,选择“阈值”触发类型。
  3. 在“阈值”字段中,输入阈值。
  4. 单击“创建”按钮。

现在,当您的云函数结果超过您指定的阈值时,就会触发警报。

最适合您的解决方案将取决于您的具体需求和要求。如果您需要一个易于设置的简单解决方案,那么使用 Cloud Functions 是一个不错的选择。如果您需要提供更多功能的更强大的解决方案,那么您可能需要考虑使用第三方解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.