龙空技术网

Prometheus联邦集群

攻城狮Jasonlong 364

前言:

此时小伙伴们对“mysql集群监控”大约比较看重,我们都想要知道一些“mysql集群监控”的相关文章。那么小编同时在网上网罗了一些对于“mysql集群监控””的相关资讯,希望我们能喜欢,兄弟们快快来学习一下吧!

Prometheus联邦集群

通过Remote Storage可以分离监控样本采集和数据存储,解决Prometheus的持久化问题。

接下来,我们讨论如何利用联邦集群对Prometheus进行扩展,以适应不同规模的架构。

对于大部分监控规模而言,我们只需要在每一个数据中心(例如:EC2可用区,Kubernetes集群)安装一个Prometheus Server实例,就可以在各个数据中心处理上千规模的集群。

但是,一台Prometheus Server实例的性能终归有限,这个时候,我们就希望通过功能划分,有专门收集Node_exporter的,有专门收集mysql的,有专门收集jenkins的,最后有一个汇总的Prometheus Server实例,汇总上面各个Prometheus的数据。

Prometheus联邦集群

如上图所示,在每个数据中心部署单独的Prometheus Server,用于采集当前数据中心的监控数据。它是由一个中心的Prometheus Server负责聚合多个数据中心的监控数据。这一特性在Promthues中称为联邦集群。

联邦集群的核心在于每一个Prometheus Server都包含一个用于获取当前实例中监控样本的接口/federate。对于市中心Prometheus Server而言,无论是从其他的Prometheus实例还是Exporter实例中获取数据实际上并没有任何差异。

Prometheus联邦集群的实验

环境介绍:

在一台虚拟机上面启动3个Prometheus Server实例

P1实例: 端口9081,收集node_exporter数据

P2实例: 端口9082,P2收集mysql/jenkins数据

P3实例: 端口: 9083,收集P1和P2的数据,其中只收集node_exporter和mysql数据

这里Jenkins数据我们选择性的不收集。

1.创建Prometheus数据目录mkdir /data1 /data2 /data3chown prometheus:prometheus /data1chown prometheus:prometheus /data2chown prometheus:prometheus /data32.准备Prometheus配置文件# vi /etc/prometheus/prometheus1.ymlglobal:  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).scrape_configs:  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  - job_name: 'prometheus'    static_configs:    - targets: ['localhost:9081']  - job_name: 'node_exporter'    scrape_interval: 5s    static_configs:      - targets: ['localhost:9100']        labels:          name: node_exporter-------------------------------------------------------------# vi /etc/prometheus/prometheus2.ymlglobal:  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).scrape_configs:  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  - job_name: 'prometheus'    static_configs:    static_configs:    - targets: ['localhost:9082']  - job_name: 'mysql'    # 静态添加node    static_configs:    # 指定监控端    - targets: ['localhost:9104']      labels:        name: mysql  - job_name: "jenkins-plugin"    metrics_path: "/prometheus/"    scheme: http    bearer_token: bearer_token    static_configs:    - targets: ['192.168.0.107:8080']      labels:        name: jenkins-plugin            -------------------------------------------------------------# vi /etc/prometheus/prometheus3.ymlglobal:  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).scrape_configs:  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  - job_name: 'prometheus'    static_configs:    static_configs:    - targets: ['localhost:9083']   - job_name: 'federate'    scrape_interval: 15s    honor_labels: true    metrics_path: '/federate'    params:      'match[]':        - '{job="prometheus"}'        - '{__name__=~"node.*"}'        - '{__name__=~"mysql.*"}'    static_configs:      - targets:        - '192.168.0.107:9081'        - '192.168.0.107:9082'注意: match[]这里 - '{__name__=~"node.*"}' 是指P3收集P1中node开头的监控指标,- '{__name__=~"mysql.*"}' 是指P3收集P1中mysql开头的监控指标。-------------------------------------------------------------3.启动3个Prometheus Server实例# /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus1.yml --web.listen-address="0.0.0.0:9081" --storage.tsdb.path /data1# /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus2.yml --web.listen-address="0.0.0.0:9082" --storage.tsdb.path /data2# /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus3.yml --web.listen-address="0.0.0.0:9083" --storage.tsdb.path /data3说明:--config.file /etc/prometheus/prometheus1.yml 指定配置文件--web.listen-address="0.0.0.0:9081" 指定监控端口 --storage.tsdb.path /data1 指定存储目录

4.检查Prometheus联邦是否搭建成功。

查看P1

我们添加的标签,name=node_exporter

P1

查看P1

我们添加的Label ,name=mysql

P2

查看P1

P3联邦集群

看到federate这个Targets,说明我们集群联邦搭建成功了。

2个endpoint都是up状态。接下来,验证一下数据有没有过来。

我们在P3上面 查询一下,node_exporter指标

node_load1

mysql指标

mysql_global_status_connections

可以看到node_exporter和mysql的数据都已经收集到P3上了。

至此,Prometheus的联邦集群搭建完成。

标签: #mysql集群监控