原标题:服务监控全面进阶之Exporter

一、背景介绍

前段时间小编给大家分享了:

1、《五分钟打造高逼格的监控系统》

2、《Prometheus服务监控进阶》

我们对Prometheus(普罗米修斯)监控体系有了整体的了解。监控的基础是对各类服务的信息、数据进行采样收集,这一重要的角色就是Prometheus里的Exporter。Exporter是我们最常打交道的模块,本节为大家介绍Exporter和其常用的组件。

二、Exporter详细介绍

广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据:

58af0fef63d6e9caedbb3f7bfa19edcc.png

从Exporter的来源上来讲,主要分为两类:

社区提供的 Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些Exporter可以实现大部分通用的监控需求。下表列举一些社区中常用的Exporter:

户自定义的 除了直接使用社区提供的Exporter程序以外,用户还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Promthues社区官方提供了对以下编程语言的支持:Go、Java/Scala、Python、Ruby。独立研发的产品,为了满足监控需求,一般采用自定义的Exporter形式。

三、常用Exporter

1、Mysql数据库exporter

主要监控Mysql数据库的稳定性、吞吐量、连接情况、缓冲池使用情况、查询性能等各项指标,是我们压测时常常需要监控的一些指标。

在已有Prometheus服务情况,Mysql数据库exporter安装部署方法如下:

下载&安装

# 最新版本下载链接https://prometheus.io/download/

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz

# 解压即可使用

tar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz

在Mysql中给mysqld_exporter 授权(赋予mysqld_exporter读取数据所需的权限)

# mysqld_exporter: 为数据库用户名,自行定义

# mysqld_exporter_password: 为数据库用户对应的密码,自行定义

>CREATE USER 'mysqld_exporter'@'%'IDENTIFIED BY 'mysqld_exporter_password'WITH MAX_USER_CONNECTIONS 3;

>GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'%';

>flush privileges;

配置mysql_exporter

# 在Mysql exporter目录下新建配置文件.my.cnf:

[client]

user=mysqld_exporter

password=mysqld_exporter_password

启动mysql_exporter

./mysqld_exporter --config.my-cnf=".my.cnf"&

在Prometheus配置中加入Mysql的监控配置(用于拉取数据嘛):

- job_name: mysql

static_configs:

- targets: ['localhost:9104']

labels:

instance: db1

2、Nginx服务exporter

主要监控Nginx服务的稳定性、性能、请求情况、响应时间等,可以对Nginx服务各项指标进行宏观地观察。

由于官方没有提供Nginx直接可用的exporter,Nginx的监控配置相对要复杂一些。这里使用的是三方提供的nginx-vts-exporter。

安装部署方法如下:

安装Nginx&nginx-module-vts模块 由于nginx-vts-exporter依赖于Nginx的nginx-module-vts模块,所以这里需要重新编译Nginx。

# 下载nginx-module-vts模块

git clonegit://github.com/vozlt/nginx-module-vts.git

# 重新编译nginx

./configure --add-module=/usr/local/nginx-module-vts/

make && make install

配置nginx(为监控提供接口)

http {

vhost_traffic_status_zone;

...

server {

...

location /status {

vhost_traffic_status_display;

vhost_traffic_status_display_format html;

}

}

}

下载安装nginx-vts-exporter

# 下载地址

wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

# 解压

tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz

启动nginx-vts-exporter

./nginx-vts-exporter --nginx.scrape_uri="http://127.0.0.1/status/format/json"&

在Prometheus配置中加入Nginx的监控配置:

- job_name: nginx

static_configs:

- targets: ['localhost:9913']

labels:

instance: web1

为了方便查看Nginx服务情况,我们可以在Grafana里添加数据异常模板

# 模板链接:https://grafana.com/grafana/dashboards/2949

# 模板使用方法:见《五分钟打造高逼格的监控系统》

面板展示结果如下:

7cc980b7cf060aa12da0918e20bf3173.png

四、小结

通过上述部署流程,我们总结一下Prometheus的Exporter部署使用方法:

1、下载解压Exporter;

2、配置Exporter;

3、在Prometheus配置中加入对Exporter数据的抓取;

4、启动Exporter和Prometheus服务;

5、在Grafana平台进行数据面板配置,并进行数据监控。

对于其他Exporter,我们亦可以进行举一反三进行部署安装使用,希望各位受用。

最后:部署监控系统遇到问题的可以直接留言或添加我们官方微信好友,我们竭诚为您服务(交流学习

2163123c68b7b8ec615aa4c5334a78c5.png

责任编辑:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐