部署prometheus在k8s上

promethueus 作为监控是目前市面上比较流行的方案

Prometheus 是一套开源的系统监控报警框架,用于收集、存储和查询时间序列数据。让我为你详细介绍一下 Prometheus 的架构。

  1. Prometheus Server:
    • Prometheus Server 是 Prometheus 组件中的核心部分。
    • 它负责实现对监控数据的获取、存储和查询。
    • Prometheus Server 可以通过静态配置管理监控目标,也可以使用服务发现动态管理监控目标。
    • 存储方面,Prometheus Server 本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘中。
    • 对外提供自定义的 PromQL 语言,用于查询和分析数据。
  2. Exporter:
    • 用于暴露已有的第三方服务的指标给 Prometheus。
    • Exporter 将监控数据通过 HTTP 服务暴露给 Prometheus Server。
  3. Push Gateway:
    • 主要用于短期的任务。
    • 一些任务可能在 Prometheus 拉取之前就消失了,因此这些任务可以直接向 Push Gateway 推送它们的指标。
  4. Grafana:
    • 第三方展示工具,可以编写 PromQL 查询语句,与 Prometheus 集成。
  5. AlertManager:
    • 从 Prometheus Server 接收到警报后,去除重复数据、分组,并路由到不同的接收方式,如电子邮件、钉钉、企业微信等。
  6. Client Library:
    • 为需要监控的服务生成相应的指标并暴露给 Prometheus Server。
    • 当 Prometheus Server 拉取时,直接返回实时状态的指标。

Prometheus 的工作流程包括指标采集、指标处理、指标展示和指标告警。它使用 pull 形式采集监控指标,存储在自身数据库中,并提供 HTTP 接口供展示系统使用。AlertManager 负责处理警报信息123

如果你想深入了解更多关于 Prometheus 的内容,欢迎继续提问!

image-20240426141346409

# 安装exporter

Prometheus Exporter 是一种用于将监控数据提供给 Prometheus 的组件。它允许各种应用程序、服务或系统将自身的监控指标暴露给 Prometheus,以便进行数据收集、分析和展示。

以下是关于 Prometheus Exporter 的一些重要信息:

  1. Exporter 是什么
    • Exporter 是可以向 Prometheus 提供监控样本数据的程序。
    • 每个 Exporter 实例被称为一个 target,Prometheus 通过轮询这些 target 定期获取样本数据。
    • Prometheus 已成为云原生应用监控的标准,许多流行的监控系统都已实现了 Prometheus 的监控接口。
  2. Exporter 分类
    • 社区提供的:例如 Node Exporter、MySQL Exporter、Fluentd Exporter 等。
    • 用户自定义的:用户可以基于 Prometheus 提供的 Client Library 创建自己的 Exporter 程序。
  3. Exporter 获取监控数据的方式
    • HTTP/HTTPS 方式:通过 HTTP 接口获取监控数据。
    • TCP 方式:直接从目标系统获取数据。
    • 本地文件方式:从文件系统读取数据。
    • 标准协议方式:遵循 Prometheus 规范返回数据。
  4. Exporter 规范
    • 所有的 Exporter 都需要按照 Prometheus 规范返回监控样本数据。
    • 样本数据包括一般注释信息(HELP)、类型注释信息(TYPE)和样本值。
  5. 自定义 Exporter
    • 用户可以基于 Prometheus 提供的 Client Library 创建自己的 Exporter 程序。
    • 使用不同编程语言的 Client Library,如 Go、Java、Python 等。

总之,Prometheus Exporter 允许各种应用程序和系统将监控数据暴露给 Prometheus,使其能够集中收集、分析和展示这些数据。1[1]2[2]3[3]44

如果您需要更详细的信息或有其他特定需求,请随时告知,我会为您提供更具体的帮助。

部署完成后,查看一下节点上 9100/metrics 上是否正常显示

image-20240426142545173

命令行查看负载。

image-20240426144232014

安装 prometheus server

参考文档: https://kangll.blog.csdn.net/article/details/136783153?spm=1001.2014.3001.5502

image-20240426144852901

安装 garafa

参考文档:

https://kangll.blog.csdn.net/article/details/137217639?spm=1001.2014.3001.5502

image-20240426150404617

image-20240426151106813

7362-mysql 为 grafana 的 id。

https://grafana.com/grafana/dashboards/7362-mysql-overview/

mysql_exporter 部署

my.cnf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[root@A bag]# cd ../mysqld_exporter
[root@A mysqld_exporter]# cat <<EOF>> my.cnf
[client]
host = 192.168.1.10
port = 3306
user = exporter
password = exporter@123
[mysqladmin]
host = 192.168.1.10
port = 3306
user = exporter
password = exporter@123
EOF

启动 mysql_exporter

1.supervisor 启动

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
yum install -y supervisor
systemctl enable supervisord --now
# 配置my.ini
cat <<EOF>> /etc/supervisord.d/my.ini
[program:mysqld_exporter]
directory=/data/mysqld_exporter
command=/data/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/mysqld_exporter/my.cnf --web.listen-address=0.0.0.0:9104 --collect.slave_status --collect.binlog_size --collect.info_schema.processlist --collect.info_schema.innodb_metrics --collect.engine_innodb_status --collect.perf_schema.file_events --collect.perf_schema.replication_group_member_stats
user=root
autostart=true
autorestart=true
startsecs = 2
redirect_stderr=true
stdout_logfile=/var/log/mysqld_exporter.log
EOF

启动

1
2
3
4
# 加载配置
supervisorctl update
# 查看状态
supervisorctl status

配置为系统服务

mysqld-exporter.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
cat <<EOF>>  /usr/lib/systemd/system/mysqld-exporter.service
[Unit]
Description=mysqld_exporter


[Service]
User=root
ExecStart=/data/mysqld_exporter/mysqld_exporter --config.my-cnf /data/mysqld_exporter/my.cnf --web.listen-address=0.0.0.0:9104 \
--collect.slave_status \
--collect.binlog_size \
--collect.info_schema.processlist \
--collect.info_schema.innodb_metrics \
--collect.engine_innodb_status \
--collect.perf_schema.file_events \
--collect.perf_schema.replication_group_member_stats
Restart=on-failure

[Install]
WantedBy=multi-user.targe
EOF

启动

1
2
3
4
systemctl daemon-reload
systemctl enable mysqld-exporter --now
systemctl status mysqld-exporter
systemctl stop mysqld-exporter

参考文档

https://blog.csdn.net/weixin_42434700/article/details/126732987

Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 06, 2025 05:52 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up