SaltStack Config 公开了多个可用于监控和诊断的系统衡量指标。这些衡量指标在 SaltStack Config 用户界面仪表板上以图形形式提供,使用 /metrics http 端点时以计算机可读的形式提供。

此页面介绍了可用的衡量指标以及如何将第三方工具连接到 SaltStack Config 以检索衡量指标数据。有关在 SaltStack Config 用户界面中使用仪表板可视化报告的详细信息,请参见仪表板

计算机可读的衡量指标

SaltStack Config 能够以基于文本的 OpenMetrics 格式导出系统衡量指标。此格式可直接由 Prometheus 和其他监控和警示工具使用。有关详细信息,请参见配置 Prometheus 以连接到 SaltStack Config

SaltStack Config 衡量指标配置

要配置系统衡量指标收集,请在 /etc/raas/raas 配置文件中进行如下设置。显示了默认值。

# System metrics settings
metrics:
  enabled: true                         # If True, enable the collection of system metrics
  prometheus: false                     # If True, enable the Prometheus endpoint at /metrics
  prometheus_username:                  # Static username for retrieving /metrics
  prometheus_password:                  # Static password for retrieving /metrics
  snapshot_interval: 60                 # How often to record snapshot metrics, in seconds
  max_query_timedelta: 86400            # Maximum timedelta for a single call to get_system_metrics, in seconds
  keep: 30                              # How long to retain metrics data, in days

以下设置控制计算机可读系统衡量指标的处理:

  • 要禁用衡量指标收集,请设置 enabled:false。请注意,此操作还会禁用 SaltStack Config 的内置仪表板。
  • 要启用从 /metrics http 端点导出计算机可读的衡量指标,请设置 prometheus:true。此设置不影响 SaltStack Config 的内置仪表板。
  • /metrics http 端点的访问通过 http 基本身份验证使用在 prometheus_usernameprometheus_password 中配置的凭据进行控制。这些设置需要非空值才能启用 /metrics 端点。这些凭据仅存储在 /etc/raas/raas 配置文件中,不与任何 SaltStack Config 帐户关联,不能用于向 SaltStack Config 进行身份验证,只能用于访问 /metrics http 端点。

上面显示的其他设置与 SaltStack Config 的内置仪表板相关,不会影响收集或报告计算机可读的系统衡量指标。特别是,snapshot_interval 设置确定记录衡量指标以在仪表板上显示的频率(以秒为单位),keep 设置确定衡量指标数据修剪之前在数据库中保留的时间(以天为单位)。

尽管建议使用 /metrics http 端点从 SaltStack Config 收集计算机可读的衡量指标数据,但也可以使用 API (RaaS) 检索内置仪表板上显示的数据。通过 stats.get_system_metrics() API 调用,可以按衡量指标名称、源和日期范围查询衡量指标数据。配置项 max_query_timedelta 限制了进行单个 API 调用后 SaltStack Config 将返回的数据量。要获得更长时段的衡量指标数据,可以使用不同的开始日期和结束日期进行多个 API 调用。

Salt 主节点衡量指标配置

某些衡量指标的可用性取决于连接到 SaltStack Config 的 Salt 主节点的配置:

  • 仅当在 Salt 主节点上配置了 sseapi 返回程序时,有关 Salt 事件和作业返回数据的衡量指标才准确。衡量指标收集无法与 sse_pgjsonb(直接到数据库)返回程序一起正常工作。
  • SaltStack Config 将从配置中设置了 master_stats:true 的 Salt 主节点收集低级别函数运行时信息。该选项默认处于禁用状态。有关详细信息,请参见 Salt 文档中的 master_stats
  • 仅当在 Salt 主节点插件中启用了作业完成引擎时,有关 salt 作业状态的衡量指标才准确:
    engines:
       -jobcompletion:{}

    此引擎在 Salt 主节点插件的默认配置中处于启用状态。

配置 Prometheus 以连接到 SaltStack Config

可以通过将 scrape_configs 作业添加到您拥有的每个 API (RaaS) 服务器实例的 Prometheus 配置(通常为 prometheus.yml),使 Prometheus 服务器能够从 SaltStack Config 抓取衡量指标:

scrape_configs:
  - job_name: 'sse'

    metrics_path: '/metrics'
    scheme: 'http'

    static_configs:
        - targets: ['localhost:8080']

    basic_auth:
      username: prometheus
      password: metrics

Prometheus 配置中的凭据应与在 /etc/raas/raas 配置文件中指定的 prometheus_usernameprometheus_password 匹配,如上所述。

有关设置抓取目标和其他 Prometheus 配置主题的详细信息,请参见 Prometheus 项目文档

注: 作为 VMware 移除有问题术语计划的一部分,Salt 主节点术语将在 SaltStack Config 以及相关产品和文档中替换为更贴切的术语。此术语更新可能需要几个发布周期才能完全完成。

衡量指标描述

SaltStack Config 导出的计算机可读的衡量指标分为以下几类:

类别 衡量指标名称 衡量指标类型 标签 说明
Salt 主节点低级别衡量指标 salt_event_size_bytes 条形图 master_id Salt 事件大小(以字节为单位)
salt_master_cmd_duration_seconds 条形图 master_idcmd Salt 主节点命令持续时间(以秒表示)。仅当在 Salt 主节点上配置了 master_stats 时才进行报告。
         
Salt 主节点插件衡量指标 raas_master_commands_processed 计数器 master_id 已处理的 SSE 命令数
raas_master_master_grains_pushed 计数器 master_id 已推送到 SaltStack Config 的 Salt 主节点颗粒更新数
raas_master_minion_keys_pushed 计数器 master_id 已推送到 SaltStack Config 的工作节点密钥状态更新数
raas_master_minion_cached_pushed 计数器 master_id 已推送到 SaltStack Config 的工作节点缓存更新数
raas_master_masterfs_pushed 计数器 master_id 已推送到 SaltStack Config 的 MasterFS 更新数
raas_master_sseapi_engine_iteration_seconds 条形图 master_id API (RaaS) 引擎迭代持续时间(以秒为单位)
         
服务器衡量指标 redis_commands_executed 计数器 redis_instance 已执行的 Redis 命令数(系统缓存)
redis_memory_bytes 仪表图 redis_instance Redis 内存使用情况(系统缓存)
celery_tasks_queued 计数器 raas_instancetask 已排队的 Celery 任务数(后台作业)
celery_tasks_executed 计数器 raas_instancetask 已执行的 Celery 任务数(后台作业)
celery_queue_length 仪表图 raas_instance Celery 队列长度(正在等待的后台作业)
raas_rpc_request_duration_seconds 条形图 raas_instance SSE RPC API 调用持续时间(以秒为单位)
         
PostgreSQL 衡量指标 postgres_connections 仪表图 postgres_instance Postgres 连接数
postgres_transactions 计数器 postgres_instance 已提交 Postgres 事务
postgres_rows_read 计数器 postgres_instance 已读取的 Postgres 行数
postgres_rows_inserted 计数器 postgres_instance 已插入的 Postgres 行数
postgres_rows_updated 计数器 postgres_instance 已更新的 Postgres 行数
postgres_rows_deleted 计数器 postgres_instance 已删除的 Postgres 行数
         
系统衡量指标 sse_jobs_in_progress 计数器 正在进行的 SaltStack Config 作业数
sse_jobs_complete_all_successful 计数器 已完成且全部成功返回的 SaltStack Config 作业数
sse_jobs_complete_missing_returns 计数器 已完成但缺失一个或多个返回的 SaltStack Config 作业数
sse_jobs_complete_with_errors 计数器 已完成但存在一个或多个错误的 SaltStack Config 作业数
sse_masters 仪表图 SaltStack Config 中的 Salt 主节点总数
sse_minions 仪表图 SaltStack Config 中的工作节点总数
sse_minions_present 仪表图 master_id 配置的时间限制 raas_presence_expiration 内存在的工作节点数
sse_minions_lost 仪表图 master_id 时间限制内不存在的工作节点数
sse_minions_unknown 仪表图 master_id 未知的工作节点数(从未存在)
sse_users_authenticated 仪表图 已向 SaltStack Config 进行身份验证的用户数