首页 公告 项目 RSS

使用prometheus的azure_sd_config自动添加azure云主机到监控

August 26, 2021 本文有 670 个字 需要花费 2 分钟阅读

简介

监控最头疼的就是添加新加的机器了,所以如何自动化添加机器就成了话题,一般大家会使用consul,当一台机器启动之后可以自动向consul去注册自己,然后添加到监控系统中,prometheus原生提供了azure_sd_config去主动发现azure中的机器

操作

首先你要在Azure Active Directory中应用注册里面新注册一个prometheus的应用,然后在每个订阅的访问控制中把这个应用添加为读者权限

之后创建这个应用的客户端密码记录下客户端密码的值

接着配置prometheus

  - job_name: 'azure_windows_node'
    azure_sd_configs:
    - subscription_id: 123
      environment: AzureChinaCloud
      tenant_id: 123
      client_id: 123
      client_secret: 123
      refresh_interval: 600s

    relabel_configs:
    - source_labels: ['__meta_azure_machine_tag_public_ip']
      regex: (.+)
      target_label: __address__
      replacement: "$1:9182"
    - source_labels: ['__meta_azure_machine_name']
      target_label: instance
    - source_labels: ['__meta_azure_machine_tag_stop']
      regex: "true"
      action: drop
    - source_labels: ['__meta_azure_machine_os_type']
      regex: "Linux"
      action: drop

解释下参数

  • subscription_id 你的订阅id
  • environment 这个表示你的azure的地区,比如中国特色的azure就是写AzureChinaCloud,如果是全球地区的可以不用写
  • tenant_id 租户id
  • client_id prometheus的应用id
  • client_secret 就是刚才创建的prometheus的secret
  • refresh_interval 刷新时间,个人建议稍微时间长一点

relabel_configs 里面要注意一下我不知道为什么我获取不到publicip,所有的__address__都是内网ip,所以这个时候你就需要给每个虚拟机都打一个tag public_ip来relabel成__address__

当然你的主机不一定都是启动的也有可能是关闭的,所以可以把你关闭的主机打一个stop的标签来过滤掉

然后还有一个点是,如果你的虚拟机是比较多的,而且有windows和linux你也可以使用label去分组

如果配置都是对的话那么一般不会有什么其他的问题

欢迎关注我的博客www.bboy.app

Have Fun