暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Prometheus监控神器-如何添加exporter

笑谈IT 2021-07-17
3086

系统环境:CentOS 7.9

项目介绍

我们昨晚上了解了如何安装node_exporter,但是还不知道如何将node_exporter去添加到Prometheus上面去,让Prometheus能够正常的接收node_exporter采集到的监控数据,所以这回我们将介绍如何将node_exporter接入到Prometheus里面。
Prometheus添加node_exporter的方式有多种,大致分为静态方式和自动发现方式,静态方式就是static_configs,而自动发现方式,则有N多种,我们今天只演示file_sd_configs
# List of Azure service discovery configurations.
azure_sd_configs:
[ - <azure_sd_config> ... ]

# List of Consul service discovery configurations.
consul_sd_configs:
[ - <consul_sd_config> ... ]

# List of DNS service discovery configurations.
dns_sd_configs:
[ - <dns_sd_config> ... ]

# List of EC2 service discovery configurations.
ec2_sd_configs:
[ - <ec2_sd_config> ... ]

# List of file service discovery configurations.
file_sd_configs:
[ - <file_sd_config> ... ]

# List of DigitalOcean service discovery configurations.
digitalocean_sd_configs:
[ - <digitalocean_sd_config> ... ]

# List of Docker Swarm service discovery configurations.
dockerswarm_sd_configs:
[ - <dockerswarm_sd_config> ... ]

# List of GCE service discovery configurations.
gce_sd_configs:
[ - <gce_sd_config> ... ]

# List of Kubernetes service discovery configurations.
kubernetes_sd_configs:
[ - <kubernetes_sd_config> ... ]

# List of Marathon service discovery configurations.
marathon_sd_configs:
[ - <marathon_sd_config> ... ]

# List of AirBnB's Nerve service discovery configurations.
nerve_sd_configs:
[ - <nerve_sd_config> ... ]

# List of OpenStack service discovery configurations.
openstack_sd_configs:
[ - <openstack_sd_config> ... ]

# List of Zookeeper Serverset service discovery configurations.
serverset_sd_configs:
[ - <serverset_sd_config> ... ]

# List of Triton service discovery configurations.
triton_sd_configs:
[ - <triton_sd_config> ... ]

静态的添加方式,需要每次添加完成后,重启或者热加载一次Prometheus服务,这对Prometheus的持续运营会带来不可预知的风险,有可能造成错误的告警信息传递。
而如果我们使用自动发现的方式,只需编辑自动发现的配置文件,然后通过Prometheus来定时的去扫描自动发现的配置文件里面的配置信息,即可自动将node_exporter节点添加至Prometheus的Targets里。
现在,我们就正式介绍下这两种添加方式。
  • 静态添加node_exporter

在prometheus.yml里创建一个job,然后将node_exporter信息进行写入
    $ vi usr/local/prometheus/prometheus.yml
    global:
    scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
    evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
    # scrape_timeout is set to the global default (10s).


    # Alertmanager configuration
    alerting:
    alertmanagers:
    - static_configs:
    - targets:
    # - alertmanager:9093


    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
    # - "first_rules.yml"
    # - "second_rules.yml"


    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
    # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
    - job_name: 'prometheus'


    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.


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


    # 以下为我们新增的一个job配置文件,需严格按照格式进行编写。


    - job_name : 'new_job'
    static_configs:
    - targets: ['192.168.226.133:9100']




    然后我们就可将Prometheus热加载下,即可看到我们新加的节点了。
      curl -X POST http://127.0.0.1:9090/-/reload

      但是我们为了后期在grafana的数据看板展示和alertmanager分层分类告警等可以做到更精细化的数据分类,我们可预先增加多项自定义的labels。

          - job_name : 'new_job'
        static_configs:
        - targets: ['192.168.226.133:9100']
        labels:
        Tag: 'Infrastructure'
                server: 'PDC'
                xxx: 'xxx'
        # labels的命名和值可随意发挥,不受任何限制
        画圈的即表示我们后面新增的labels名称

        • 自动发现node_exporter

        我们需先创建一个json文件,然后在json文件里面去添加我们的node_exporter信息
          $ vi /usr/local/prometheus/discovery.json
          [{
          "targets": ["192.168.226.133:9100"],
          "labels": {
          "Tag": "PDC",
          "server": "Infrastructure"
          }
          }]


          然后再到Prometheus里去添加发现方式和json路径
            $ vi /usr/local/prometheus/prometheus.yml
            - job_name : 'discovery_host'
            file_sd_configs:
            - files:
            - "/usr/local/prometheus/discovery.json"
            这样,因为我们修改过Prometheus的配置文件,所以第一次自动发现时,需热重启一遍Prometheus,如果后面我们还需要在discovery.json文件里面再去添加新的node_exporter的话,就不用再去热重启Prometheus了,就此就达到了我们这次配置自动发现的目的了。

            添加第二个node_exporter信息
              # 第一个node_exporter
              [{
              "targets": ["192.168.226.133:9100"],
              "labels": {
              "Tag": "PDC",
              "server": "Infrastructure"
              }
              },
              # 第二个node_exporter
              {
              "targets": ["192.168.226.135:9100"],
              "labels": {
              "tag": "mysql",
              "server": "database"
              }
              }]
              保存退出后,我们可直接在Prometheus的Targets里面直接就可以看到我们刚加的节点,无须再去热加载Prometheus服务了。

              文章转载自笑谈IT,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论