prometheus从入门到实践(3)——Node Exporter&CAdvisor Exporter&mysql Exporter

一、简介

Exporter返回的样本数据,主要由三个部分组成:样本的一般注释信息(HELP),样本的类型注释信息(TYPE)和样本。Prometheus会对Exporter响应的内容逐行解析:
如果当前行以# HELP开始,Prometheus将会按照以下规则对内容进行解析,得到当前的指标名称以及相应的说明信息:

# HELP <metrics_name> <doc_string>

如果当前行以# TYPE开始,Prometheus会按照以下规则对内容进行解析,得到当前的指标名称以及指标类型:

# TYPE <metrics_name> <metrics_type>

Exporter响应的HTTP头信息,可指定规范版本等:

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Length: 2906
Content-Type: text/plain; version=0.0.4
Date: Sat, 17 Mar 2018 08:47:06 GMT

二、CAdvisor Exporter

CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行CAdvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。
在本地运行CAdvisor也非常简单,直接运行一下命令即可:

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

通过访问http://localhost:8080可以查看,当前主机上容器的运行状态,如下所示:
在这里插入图片描述

多主机情况下不方便,默认只保存2分钟监控数据。但是CAdvisor内置了对prometheus的支持:
访问http://localhost:8080/metrics
在这里插入图片描述

下面表格中列举了一些CAdvisor中获取到的典型监控指标:

指标名称类型含义
container_cpu_load_average_10sgauge过去10秒容器CPU的平均负载container_cpu_usage_seconds_totalcounter容器在每个CPU内核上的累积占用时间 (单位:秒)
container_cpu_system_seconds_totalcounterSystem CPU累积占用时间(单位:秒)
container_cpu_user_seconds_totalcounterUser CPU累积占用时间(单位:秒)
container_fs_usage_bytesgauge容器中文件系统的使用量(单位:字节)
container_fs_limit_bytesgauge容器可以使用的文件系统总量(单位:字节)
container_fs_reads_bytes_totalcounter容器累积读取数据的总量(单位:字节)
container_fs_writes_bytes_totalcounter容器累积写入数据的总量(单位:字节)
container_memory_max_usage_bytesgauge容器的最大内存使用量(单位:字节)
container_memory_usage_bytesgauge容器当前的内存使用量(单位:字节)
container_spec_memory_limit_bytesgauge容器的内存使用量限制
machine_memory_bytesgauge当前主机的内存总量
container_network_receive_bytes_totalcounter容器网络累积接收数据总量(单位:字节)
container_network_transmit_bytes_totalcounter容器网络累积传输数据总量(单位:字节)

与prometheus集成:
修改prometheus.yml,将CAdvisor添加监控数据采集任务目标当中:
在这里插入图片描述

重启prometheus:

[root@prometheus ~]# docker run -d -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /etc/prometheus/prometheus.rules.yml:/etc/prometheus/prometheus.rules.yml prom/prometheus

prometheus UI界面查看:
在这里插入图片描述

当能够正常采集到cAdvisor的样本数据后,可以通过以下表达式计算容器的CPU使用率:

sum(irate(container_cpu_usage_seconds_total{image!=""}[1m])) without (cpu)

在这里插入图片描述

查询容器内存使用量(单位:字节):

container_memory_usage_bytes{image!=""}

查询容器网络接收量速率(单位:字节/秒):

sum(rate(container_network_receive_bytes_total{image!=""}[1m])) without (interface)

查询容器网络传输量速率(单位:字节/秒):

sum(rate(container_network_transmit_bytes_total{image!=""}[1m])) without (interface)

查询容器文件系统读取速率(单位:字节/秒):

sum(rate(container_fs_reads_bytes_total{image!=""}[1m])) without (device)

查询容器文件系统写入速率(单位:字节/秒):

sum(rate(container_fs_writes_bytes_total{image!=""}[1m])) without (device)

三、部署Mysql Exporter

1、安装mysql

[root@prometheus mysql]# yum install mariadb-server -y
[root@prometheus mysql]# systemctl start mariadb
[root@prometheus mysql]# systemctl enable mariadb
[root@prometheus mysql]# mysql_secure_installation
[root@prometheus mysql]# mysql -uroot -pwestos
MariaDB [(none)]> CREATE USER 'exporter'@'%' IDENTIFIED BY 'westos';
MariaDB [(none)]> GRANT PROCESS,REPLICATION CLIENT ON *.* TO 'exporter'@'%';
MariaDB [(none)]> GRANT SELECT ON performance_schema.* TO 'exporter'@'%';

2、docker安装mysqld-exporter

[root@prometheus mysql]# docker pull prom/mysqld-exporter
[root@prometheus mysql]# docker run -d -p 9104:9104  -e DATA_SOURCE_NAME="exporter:westos@(10.0.2.41:3306)/" prom/mysqld-exporter

注意:我设置的数据库密码是westos
监控的是所有数据库,可在后面指定/mysql只监控mysql数据库。
3、浏览器查看mysqld_exporter是否正常连接到mysql
http://localhost:9104/metrics
在这里插入图片描述

4、结合prometheus
修改prometheus.yml
在这里插入图片描述

5、重启prometheus

[root@prometheus mysql]# docker run -d -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /etc/prometheus/prometheus.rules.yml:/etc/prometheus/prometheus.rules.yml -v prom/prometheus

6、浏览器访问:http://localhost:9090/classic/targets
在这里插入图片描述

7、监控数据库吞吐量
在MySQL内部通过一个名为Questions的计数器,当客户端发送一个查询语句后,其值就会+1。
在这里插入图片描述

MySQLD Exporter中返回的样本数据中通过mysql_global_status_questions反映当前Questions计数器的大小:
在这里插入图片描述

通过以下PromQL可以查看当前MySQL实例查询速率的变化情况,查询数量的突变往往暗示着可能发生了某些严重的问题,因此用于用户应该关注并且设置响应的告警规则,以及时获取该指标的变化情况:

rate(mysql_global_status_questions[2m])

在这里插入图片描述

用户可以通过以下PromQL查看当前MySQL实例写操作速率的变化情况:

sum(rate(mysql_global_status_commands_total{command=~"insert|update|delete"}[2m])) without (command)

8、连接情况
在MySQL中通过全局设置max_connections限制了当前服务器允许的最大客户端连接数量。一旦可用连接数被用尽,新的客户端连接都会被直接拒绝。 因此当监控MySQL运行状态时,需要时刻关注MySQL服务器的连接情况。用户可以通过以下指令查看当前MySQL服务的max_connections配置:
在这里插入图片描述

MySQL默认的最大链接数为151。临时调整最大连接数,可以通过以下指令进行设置:

SET GLOBAL max_connections = 200;

如果想永久化设置,则需要通过修改MySQL配置文件my.cnf,添加以下内容:

max_connections = 200

通过Global Status中的Threads_connected、Aborted_connects、Connection_errors_max_connections以及Threads_running可以查看当前MySQL实例的连接情况。
例如,通过以下指令可以直接当前MySQL实例的连接数:
在这里插入图片描述

当所有可用连接都被占用时,如果一个客户端尝试连接至MySQL,会出现“Too many connections(连接数过多)”错误,同时Connection_errors_max_connections的值也会增加。为了防止出现此类情况,你应该监控可用连接的数量,并确保其值保持在max_connections限制以内。同时如果Aborted_connects的数量不断增加时,说明客户端尝试连接到MySQL都失败了。此时可以通过Connection_errors_max_connections以及Connection_errors_internal分析连接失败的问题原因。

Innodb_buffer_pool_read_requests记录了正常从缓冲池读取数据的请求数量。

mysql> SHOW GLOBAL STATUS LIKE "Innodb_buffer_pool_read_requests";

当缓冲池无法满足时,MySQL只能从磁盘中读取数据。Innodb_buffer_pool_reads即记录了从磁盘读取数据的请求数量。

mysql> SHOW GLOBAL STATUS LIKE "Innodb_buffer_pool_reads";

通过以下PromQL可以得到各个MySQL实例的缓冲池利用率。一般来说还需要结合Innodb_buffer_pool_reads的增长率情况来结合判断缓冲池大小是否合理:

(sum(mysql_global_status_buffer_pool_pages) by (instance) - sum(mysql_global_status_buffer_pool_pages{state="free"}) by (instance)) / sum(mysql_global_status_buffer_pool_pages) by (instance)

9、监控查询性能——慢查询
MySQL还提供了一个Slow_queries的计数器,当查询的执行时间超过long_query_time的值后,计数器就会+1,其默认值为10秒,可以通过以下指令在MySQL中查询当前long_query_time的设置:

mysql> SHOW VARIABLES LIKE 'long_query_time'; 
mysql> SHOW GLOBAL STATUS LIKE "Slow_queries";  #查看当前慢查询个数

通过监控Slow_queries的增长率,可以反映出当前MySQL服务器的性能状态,可以通过以下PromQL查询Slow_queries的增长情况:

rate(mysql_global_status_slow_queries[2m])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要安装 Prometheus Node Exporter,可以按照以下步骤进行操作: 1. 首先,从 Prometheus 的官方网站下载 Node Exporter 的二进制文件。选择适合您系统的版本,比如Linux的amd64版本。下载地址:https://prometheus.io/download/#node_exporter 2. 解压文件到一个目录中,比如 `/opt/node_exporter`: ``` tar -xvf node_exporter-1.2.1.linux-amd64.tar.gz -C /opt/node_exporter/ ``` 3. 进入目录,并查看文件是否正确解压: ``` cd /opt/node_exporter/ ls -l ``` 4. 创建一个用户以运行 Node Exporter: ``` sudo useradd --no-create-home --shell /bin/false node_exporter ``` 5. 更改文件权限,使得该用户可以访问 Node Exporter: ``` sudo chown node_exporter:node_exporter /opt/node_exporter ``` 6. 启动 Node Exporter: ``` sudo -u node_exporter /opt/node_exporter/node_exporter ``` 7. 可以通过浏览器访问 `http://your-server-ip:9100/metrics` 来检查 Node Exporter 是否正在运行。如果一切正常,您应该能够看到一个包含各种指标的文本输出。 8. 将 Node Exporter 添加到 Prometheus 的配置文件中。打开 Prometheus 的配置文件(通常是 `/etc/prometheus/prometheus.yml`),并添加以下行: ``` - job_name: 'node_exporter' scrape_interval: 5s static_configs: - targets: ['your-server-ip:9100'] ``` 9. 重新启动 Prometheus 服务,使配置生效: ``` sudo systemctl restart prometheus ``` 现在,您已经成功安装了 Prometheus Node Exporter,并将其添加到 Prometheus 的监控配置中,可以使用 Prometheus 监控服务器的各种指标了。 ### 回答2: 要安装 PrometheusNode Exporter,可以按照以下步骤进行操作: 1. 首先,确保已经安装了 Node.js 运行环境。如果未安装,请先安装 Node.js。 2. 在要安装 Node Exporter 的服务器上创建一个新的目录,比如 /opt/node_exporter。 3. 切换到该目录,并使用以下命令从 Github 下载 Node Exporter 的安装包: ``` $ git clone https://github.com/prometheus/node_exporter.git ``` 4. 进入下载的目录: ``` $ cd node_exporter ``` 5. 安装 Node Exporter 的依赖包。在该目录下运行以下命令: ``` $ npm install ``` 6. 安装完成后,可以通过以下命令启动 Node Exporter: ``` $ node index.js ``` Node Exporter 将会在默认端口 9100 上运行。 7. 在浏览器中输入服务器的 IP 地址和端口号,例如 http://服务器IP地址:9100。这将显示 Node Exporter 的实时指标。 8. 如果需要将 Node Exporter 添加到 Prometheus 的监控配置中,可以按照 Prometheus 配置文件的格式将 Node Exporter 的 IP 地址和端口添加到 Prometheus 的配置文件中。例如: ``` scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['Node_Exporter的IP地址:9100'] ``` 以上就是安装 PrometheusNode Exporter 的步骤。安装完成后,您将能够使用 Prometheus 监控服务器上的各种系统指标。 ### 回答3: 要安装 PrometheusNode Exporter,可以按照以下步骤进行操作: 1. 首先,确保您的操作系统上已经安装了 Prometheus。可以从 Prometheus 官方网站下载适用于您的操作系统的最新版本。 2. 在 Prometheus 的安装目录中,找到 `prometheus.yml` 配置文件,并编辑它。 3. 在 `prometheus.yml` 文件中,添加以下内容来配置 Node Exporter 的监控目标: ```yaml scrape_configs: - job_name: 'node_exporter' static_configs: - targets: ['localhost:9100'] ``` 这个配置指定了 Node Exporter 的默认地址和端口(localhost 的 9100 端口)作为监控目标。 4. 保存并关闭 `prometheus.yml` 文件。 5. 下载 Node Exporter 软件包。您可以从 Prometheus 官方网站上找到适用于您的操作系统的最新版本。 6. 将下载的 Node Exporter 软件包解压到您选择的目录中。 7. 在解压后的目录中,找到 Node Exporter 的可执行文件。 8. 在命令行界面中,使用管理员权限运行 Node Exporter。 9. 确保 Node Exporter 正在运行,并且没有出现任何错误。 10. 打开浏览器,输入 `localhost:9100/metrics` 地址来访问 Node Exporter 的指标页面。如果一切都设置正确,您将能够看到 Node Exporter 提供的监控指标。 11. 最后,在 Prometheus 的界面中,定期从 Node Exporter 获取指标数据,以便进行监控和可视化。 请注意,上述步骤仅为一种安装 Node Exporter 的方法,具体步骤可能会因您的操作系统和环境而有所不同。建议您查阅官方文档和指南,以确保正确安装和配置 Node Exporter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值