美文网首页
Prometheus部署及监控

Prometheus部署及监控

作者: 青水山 | 来源:发表于2023-05-08 21:22 被阅读0次

    Prometheus 是一套开源的系统监控和报警系统。支持多种exporter采集数据,尤其是我们常见的MySQL、Redis、MongoDB,等等都有相关的exporter,对于DBA来说,可以非常方便的监控我们的数据库。

    这里我们就部署问题,做一些简单的整理。

    服务器及部署组件:

    10.2.17.137 Prometheus,redis,redis_exporter
    10.2.34.31 consul

    部署 Prometheus

    Prometheus部署也比较简单,官网有二进制包,下载后,直接解压就可以使用。

    Prometheus下载:
    https://prometheus.io/download/

    redis_exporter下载:
    https://github.com/oliver006/redis_exporter/releases

    选择对应的系统,我们使用的是Linux,amd64的二进制包。

    tar -zxf prometheus-2.44.0-rc.2.linux-amd64.tar.gz 
    mv prometheus-2.44.0-rc.2.linux-amd64 /usr/local/prometheus
    
    #启动
    /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus --web.listen-address=:9090 &
    
    

    启动成功,可以通过浏览器打开,进行数据查询
    http://10.2.17.137:9090/
    如:


    image.png

    到这里,简单的 prometheus server 就安装完成了,是不是灰常灰常的简单。

    监控

    监控具体的实例

    服务部署好了,下面就是监控数据了。
    打开配置文件 /usr/local/prometheus/prometheus.yml
    增加一个最简单的job:

      - job_name: "redis"
        static_configs:
          - targets: ["10.2.17.137:11210"]
    

    上面这个示例,就是监控10.2.17.137上11210的metrics,这个并不是redis 的实例地址,
    还需要启动 redis_exporter,11210 是exporter的监听端口

    redis_exporter -web.listen-address :11210 -redis.addr 10.2.17.137:6380 -redis.password xxx &
    
    #可以通过这个命令查看redis的监控指标
    curl http://10.2.17.137:11210/metrics
    

    自动发现式监控

    上面只是一个redis实例,如果我们的生产有上百上千套redis,总不能一个一个地址配置吧?
    这时候,我们就需要有自动发现式的监控。
    这里采用注册consul的方式。

    首先,我们在10.2.34.31上,部署consul

    wget https://releases.hashicorp.com/consul/1.6.1/consul_1.6.1_linux_amd64.zip
    unzip consul_1.6.1_linux_amd64.zip
    #测试情况,我们只启动一个单点consul
    ./consul agent -dev -client 10.2.34.31 -ui  >/tmp/consul.log 2>&1
    
    #浏览器打开consul,查看是否正常
    http://10.2.34.31:8500/
    

    重新配置prometheus.yml,再增加一个job

      - job_name: "consul"
        consul_sd_configs:
        - server: '10.2.34.31:8500'
          services: []
    
    #使用 consul_sd_configs 来配置使用Consul服务发现类型,server 为 Consul 的服务地址
    
    

    prometheus会更加consul中的redis地址来进行抓取数据,所以接下来,就是我们需要想办法,自动化的,把所有的redis实例,来启动对应的exporter(该部署省略了),同时注册到consul中。

    #注册consul
    curl -s -X PUT -d '{"id":"10.2.17.137:6381","name": "redis","address": "10.2.17.137","tags":["人民银行redis"],"port": 4444,"Meta": {"app": "redis","group": "北京分行", "project": "借贷","clusterid": "借贷redis"}}' http://10.2.34.31:8500/v1/agent/service/register
    
    image.png
    image.png
    #  此时我们从 http://10.2.17.137:9090/,查询 "redis_up",只能查到如下信息
    redis_up{instance="10.2.17.137:4444", job="redis"}
    

    默认情况下,只显示instance,job两个标签,我们自己打的很多标签都没有显示。而且看到的instance 不是redis端口,而是exporter的监听端口,怎么办?

     - job_name: "consul"
        consul_sd_configs:
        - server: '10.2.34.31:8500'
          services: []
    
        relabel_configs:
        - regex: __meta_consul_service_metadata_(.+)
          action: labelmap
        #通过正则,把匹配到的__meta_consul_service_metadata标签显示出来
    
        - source_labels: [__meta_consul_service_id]
          target_label: instance
          action: replace 
          # 我们希望在监控中看到的redis 实例标签 instance 是实例的ip:port,这里对标签 __meta_consul_service_id进行重写
    

    Prometheus允许用户在采集任务设置中通过relabel_configs来添加自定义的Relabeling过程。

    replace/labelmap/labelkeep/labeldrop对标签进行管理

    image.png

    重启 prometheus后,再次查看

    redis_up{app="redis", clusterid="借贷redis", group="北京分行", instance="10.2.17.137:6381", job="consul", project="借贷"}
    

    到这里,就是prometheus如何部署及监控redis的过程。

    图标展示

    那监控到的数据,如何展示?
    还需要配合grafana图标进行展示,这里不再赘述,上一章,我们主要讲了grafana李如何设置同比、环比的图标,数据源使用的是MySQL数据。
    原理是一样的,只需要把数据源 MySQL改为prometheus即可。

    相关文章

      网友评论

          本文标题:Prometheus部署及监控

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