美文网首页
Prometheus架构从入门到实践(9) --通过{文件|co

Prometheus架构从入门到实践(9) --通过{文件|co

作者: 負笈在线 | 来源:发表于2021-12-08 13:35 被阅读0次

    1.基于文件服务发现

    prometheus配置

          # cd /root/prometheus-2.25.0.linux-amd64

          # cp -p prometheus.yml prometheus.yml.`date +%Y%m%d`

          # vi prometheus.yml

      在scrape_configs:下添加如下内容

      - job_name: node.search

        file_sd_configs:                                  #file_sd_configs代替static_configs,即为基于文件服务的发现

          - files:

            - targets/nodes/*.yml

            refresh_interval: 5m

      - job_name: mysql

        file_sd_configs:

          - files:

            - targets/db/*.yml

            refresh_interval: 5m

    创建文件目录

          # mkdir -p targets/{nodes,db}

    服务文件配置

          nodes.yml配置示例

    # cat <<- 'EOF' | tee -a targets/nodes/nodes.yml

    - targets:

      - '192.168.8.254:9100'

      labels:

        hostname: basefilesearchnode1

        job: nodes

    - targets:

      - '192.168.8.254:9100'

      labels:

        hostname: basefilesearchnode2

        job: nodes

    EOF

          mysql.yml配置示例

    # cat <<- 'EOF' | tee -a targets/db/mysql.yml

    - targets:

      - '192.168.8.254:9104'

      labels:

        hostname: basefilesearchmysqk1

        job: mysql

    EOF

    检查配置文件

          # ./promtool check config prometheus.yml

    Checking prometheus.yml

      SUCCESS: 2 rule files found

    Checking rules/linux_rule.yml

      SUCCESS: 8 rules found

    Checking rules/node_alerts.yml

      SUCCESS: 1 rules found

    重启prometheus

          # systemctl restart prometheus

          # systemctl status prometheus

    确认服务发现对象

          Web界面登陆查看:http://192.168.8.124:9090/service-discovery#

    2.基于Consul服务发现

    Consul简介

          Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。之前我们通过 Prometheus 实现监控,当新增一个 Target 时,需要变更服务器上的配置文件,即使使用 file_sd_configs 配置,也需要登录服务器修改对应 Json 文件,会非常麻烦。不过 Prometheus 官方支持多种自动服务发现的类型,其中就支持 Consul。

    Consul取得及解压

          # cd

          # mkdir -p consul/{data,conf}

          # wget https://releases.hashicorp.com/consul/1.10.3/consul_1.10.3_linux_amd64.zip

          # ll consul_1.10.3_linux_amd64.zip

          # unzip consul_1.10.3_linux_amd64.zip

    Consul配置

    # cat <<- 'EOF' | tee -a /root/consul/conf/nodes.json

    {

      "services":[

        {

          "ID": "node-exporter-8-100",

          "Name": "consultest1:192.168.8.100",

          "Address": "192.168.8.100",

          "Port": 9100,

          "Tags": ["nodes", "test"],

          "Meta": {

            "os": "linux",

            "group": "nodes",

            "project": "xxx.xxx"

          },

          "Check": [{

            "http": "http://192.168.8.100:9100/metrics",

            "interval": "60s"

          }]

        },

        {

          "ID": "node-exporter-8-101",

          "Name": "consultest1:192.168.8.101",

          "Address": "192.168.8.101",

          "Port": 9100,

          "Tags": ["nodes", "test"],

          "Meta": {

            "os": "linux",

            "group": "nodes",

            "project": "xxx.xxx"

          },

          "Check": [{

            "http": "http://192.168.8.101:9100/metrics",

            "interval": "60s"

          }]

        }

      ]

    }

    EOF

    # cat <<- 'EOF' | tee -a /root/consul/conf/prometheus.json

    {

      "services":[

        {

          "Id": "prometheus-000-090",

          "Name": "prometheus:192.168.8.124",

          "Address": "192.168.8.124",

          "Port": 9090,

          "Tags": ["prometheus", "test"],

          "Meta": {

            "os": "Linux",

            "version": "2.25.0",

            "group": "devops",

            "service": "prometheus",

            "roles": "server01",

            "project": "xxx.xxx"

          },

          "Check": [{

            "http": "http://192.168.8.124:9090/metrics",

            "interval": "60s"

          }]

        }

      ]

    }

    # cat <<- 'EOF' | tee -a /root/consul/conf/alertmanager.json

    {

      "services":[

        {

          "Id": "alertmanager-000-090",

          "Name": "alertmanager:192.168.8.124",

          "Address": "192.168.8.124",

          "Port": 9093,

          "Tags": ["alertmanager", "test"],

          "Meta": {

            "os": "linux",

            "version": "0.21.0",

            "group": "devops",

            "service": "alertmanager",

            "roles": "server01",

            "project": "xxx.ffcs"

          },

          "Check": [{

            "http": "http://192.168.8.124:9093/metrics/",

            "interval": "60s"

          }]

        }

      ]

    }

    EOF

    Consul启动文件制作

    # cat <<- 'EOF' | tee -a /lib/systemd/system/consul.service

    [Unit]

    Description=consul

    Documentation=https://www.consul.io/

    After=network.target

    [Service]

    Type=simple

    User=root

    Group=root

    ExecStart=/root/consul/consul agent -dev -ui -data-dir=/root/consul/data/ -config-dir=/root/consul/conf/ -client=0.0.0.0

    ExecReload=/usr/local/bin/consul reload

    Restart=on-failure

    LimitNOFILE=65535

    TimeoutSec=0

    PermissionsStartOnly=true

    RestartPreventExitStatus=1

    PrivateTmp=false

    [Install]

    WantedBy=multi-user.target

    EOF

          # systemctl daemon-reload

    设置Consul自动启动

          # systemctl enable consul

    启动Consul

          # systemctl start consul

          # systemctl status consul

    登陆Consul UI确认

          URL地址:http://192.168.8.124:8500/ui/

    各服务向consul注册,Prometheus监听consul中发现的服务。

    Prometheus设置

          # cd /root/prometheus-2.25.0.linux-amd64

          # cp -p prometheus.yml prometheus.yml.`date +%Y%m%d`

          # vi prometheus.yml

      在scrape_configs:下添加如下内容

      - job_name: "prometheus_consul-test"

        scrape_interval: 60s

        consul_sd_configs:                              #consul_sd_configs代替static_configs,即为基于consul服务的发现

        - server: "192.168.8.124:8500"

          services: []

          tags: ["prometheus", "test"]

          refresh_interval: 5m

    检查Prometheus配置文件

          # ./promtool check config prometheus.yml

    Checking prometheus.yml

      SUCCESS: 2 rule files found

    Checking rules/linux_rule.yml

      SUCCESS: 8 rules found

    Checking rules/node_alerts.yml

      SUCCESS: 1 rules found

    重启prometheus

          # systemctl restart prometheus

          # systemctl status prometheus

    相关文章

      网友评论

          本文标题:Prometheus架构从入门到实践(9) --通过{文件|co

          本文链接:https://www.haomeiwen.com/subject/ajrsxrtx.html