服务监控全面进阶之Exporter

倾然丶 夕夏残阳落幕 提交于 2020-12-18 07:47:36

一、背景介绍 

前段时间小编给大家分享了: 
1、《五分钟打造高逼格的监控系统》 
2、《Prometheus服务监控进阶》 
我们对Prometheus(普罗米修斯)监控体系有了整体的了解。监控的基础是对各类服务的信息、数据进行采样收集,这一重要的角色就是Prometheus里的Exporter。Exporter是我们最常打交道的模块,本节为大家介绍Exporter和其常用的组件。

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

从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 clone git://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

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

面板展示结果如下:

四、小结 

通过上述部署流程,我们总结一下Prometheus的Exporter部署使用方法: 
1、下载解压Exporter; 
2、配置Exporter; 
3、在Prometheus配置中加入对Exporter数据的抓取; 
4、启动Exporter和Prometheus服务; 
5、在Grafana平台进行数据面板配置,并进行数据监控。 
对于其他Exporter,我们亦可以进行举一反三进行部署安装使用,希望各位受用。

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

本文分享自微信公众号 - 搜狗测试(SogouQA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!