Docker Desktop 部署 mysql-exporter 监控(Prometheus,mysql-exporter)时遇到的一些问题

这篇具有很好参考价值的文章主要介绍了Docker Desktop 部署 mysql-exporter 监控(Prometheus,mysql-exporter)时遇到的一些问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker Desktop 部署 mysql-exporter 监控(Prometheus,mysql-exporter)时遇到的一些问题

本次使用 Prometheus 系列的监控组件,只部署了 mysql 相关组件:mysqlmysqld-exporterPrometheus

Docker 使用的是 Docker Desktop。

1. 前序

最开始部署时,docker-compose.yml 文件为:

version: '3.2'

networks:
  mysql-exporter-test:
    driver: bridge

services:
  mysql:
    image: mysql
    container_name: mysql-test
    volumes:
      - ./docker-volumes/mysql/db_data:/var/lib/mysql
      - ./docker-volumes/mysql/config/init:/docker-entrypoint-initdb.d/
    command: [
      '--character-set-server=utf8mb4',
      '--collation-server=utf8mb4_unicode_ci',
      '--default-time-zone=+8:00'
    ]
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: exporter
      MYSQL_PASSWORD: Prometheus
    ports:
      - 3306:3306
    networks:
      - mysql-exporter-test


  mysqld-exporter:
    image: prom/mysqld-exporter
    container_name: exporter-test
    ports:
      - 9104:9104
    environment:
      - DATA_SOURCE_NAME=exporter:Prometheus@(mysql-test:3306)/
    depends_on:
      - mysql
    networks:
      - mysql-exporter-test

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./docker-volumes/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./docker-volumes/prometheus/data/prometheus_data:/prometheus
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 9090:9090
    networks:
      - mysql-exporter-test

docker 部署 mysql 在这里就不细说,这里的配置只是我随便写的,只需要保证 mysql 能正常启动就行。

2. 问题

注意:这里使用自定义 networkmysql-exporter-test,在不指定名称(name,dirver 同级路径)下,使用 docker-compose up -d 启动,所创建的 network 的名称是:

[docker-compose 容器的名称]_mysql-exporter-test

这里最好是指定 name 属性。

2.1. mysqld-exporter

我这里使用的 mysqld-exporter 版本为:

"RepoDigests": [
            "prom/mysqld-exporter@sha256:6b693c6c003bf51ffc2305f3d1a35d16da678bf421bfccca48ecc6077073634e"
]
2.1.1. 启动失败

mysqld-exporter 启动失败,提示信息为:

ts=2023-08-31T09:30:55.551Z caller=mysqld_exporter.go:220 level=info msg="Starting mysqld_exporter" version="(version=0.15.0, branch=HEAD, revision=6ca2a42f97f3403c7788ff4f374430aa267a6b6b)"

ts=2023-08-31T09:30:55.551Z caller=mysqld_exporter.go:221 level=info msg="Build context" build_context="(go=go1.20.5, platform=linux/amd64, user=root@c4fca471a5b1, date=20230624-04:09:04, tags=netgo)"

ts=2023-08-31T09:30:55.551Z caller=config.go:150 level=error msg="failed to validate config" section=client err="no user specified in section or parent"

ts=2023-08-31T09:30:55.551Z caller=mysqld_exporter.go:225 level=info msg="Error parsing host config" file=.my.cnf err="no configuration found"

file=.my.cnf err="no configuration found":无法找到配置文件 .my.conf。

后续添加文件映射:

mysqld-exporter:
  image: prom/mysqld-exporter
  container_name: exporter-test
  ports:
    - 9104:9104
  environment:
    - DATA_SOURCE_NAME=exporter:Prometheus@(mysql-test:3306)/
    volumes:
      - ./docker-volumes/mysql-exporter/.my.cnf:/.my.cnf
  depends_on:
    - mysql1
  networks:
    - mysql-exporter-test

注意:这里在挂载到容器目录时,此版本的 .my.conf 文件是在根目录位置。否则还是会启动失败。

配置内容:

[client]
# 这里使用的容器名称。所有容器都指定在同一 network 中,docker 允许处在同一网络环境的容器使用容器名称项目访问。另外,容器启动时会随机分配 IP,所以这里使用容器名称最合适。当然也可以容器启动时,指定的 IP
host=mysql-test
port=3306
# mysql 用户名
user=exporter
# mysql 用户密码
password=Prometheus
2.1.2. 拒绝连接

经过上述处理后,成功启动。但是在访问 mysqld-export 时,提示 mysql 拒绝连接:

ts=2023-08-31T09:44:38.807Z caller=exporter.go:152 level=error msg="Error pinging mysqld" err="dial tcp 172.25.0.3:3306: connect: connection refused"

这是因为指定的mysql用户没有远程相应的权限,需要在 mysql 中配置:

grant process, replication client, select on *.* to '[用户名]'@'%'; 

至此,mysqld-exporter 启动问题解决。

2.2. Prometheus 启动失败

使用最开始的 docker-compose 配置启动 Prometheus 时,会直接启动失败。错误日志:

ts=2023-08-31T09:50:30.796Z caller=main.go:541 level=info msg="No time or size retention was set so using the default time retention" duration=15d

ts=2023-08-31T09:50:30.796Z caller=main.go:585 level=info msg="Starting Prometheus Server" mode=server version="(version=2.46.0, branch=HEAD, revision=cbb69e51423565ec40f46e74f4ff2dbb3b7fb4f0)"

ts=2023-08-31T09:50:30.796Z caller=main.go:590 level=info build_context="(go=go1.20.6, platform=linux/amd64, user=root@42454fc0f41e, date=20230725-12:31:24, tags=netgo,builtinassets,stringlabels)"

ts=2023-08-31T09:50:30.796Z caller=main.go:591 level=info host_details="(Linux 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 d1e01fc1a243 localdomain)"

ts=2023-08-31T09:50:30.796Z caller=main.go:592 level=info fd_limits="(soft=1048576, hard=1048576)"

ts=2023-08-31T09:50:30.796Z caller=main.go:593 level=info vm_limits="(soft=unlimited, hard=unlimited)"

ts=2023-08-31T09:50:30.798Z caller=query_logger.go:93 level=error component=activeQueryTracker msg="Error opening query log file" file=/prometheus/queries.active err="open /prometheus/queries.active: permission denied"

panic: Unable to create mmap-ed active query log


goroutine 1 [running]:

github.com/prometheus/prometheus/promql.NewActiveQueryTracker({0x7ffe0fc01ef1, 0xb}, 0x14, {0x3e97c00, 0xc00051d630})

/app/promql/query_logger.go:123 +0x42d

main.main()

/app/cmd/prometheus/main.go:647 +0x74d3

第 13 行提示无权限打开文件 /prometheus/queries.active

经过搜索,说是在挂在目录时,Prometheus 容器没有对应的权限,可以配置 root 权限来解决这个问题:

prometheus:
  image: prom/prometheus:latest
  container_name: prometheus
  user: root
  volumes:
    - ./docker-volumes/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml
    - ./docker-volumes/prometheus/data/prometheus_data:/prometheus
  environment:
    - TZ=Asia/Shanghai
  ports:
    - 9090:9090
  networks:
    - mysql-exporter-test

配置后,Prometheus 容器正常启动。文章来源地址https://www.toymoban.com/news/detail-775277.html

到了这里,关于Docker Desktop 部署 mysql-exporter 监控(Prometheus,mysql-exporter)时遇到的一些问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二进制部署Prometheus + Grafana监控集群,及各exporter安装

    Prometheus三大组件: Server 主要负责数据采集和存储,提供PromQL查询语言的支持。 Alertmanager 警告管理器,用来进行报警。 Push Gateway 支持临时性Job主动推送指标的中间网关。 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google B

    2024年02月13日
    浏览(35)
  • Linux 集群监控部署:prometheus + node-exporter + Grafana

    之前我们有用到top、free、iostat等等命令,去监控服务器的性能,但是这些命令,我们只针对单台服务器进行监控,通常我们线上都是一个集群的项目,难道我们需要每一台服务器都去敲命令监控吗?这样显然不是符合逻辑的,Linux中就提供了一个集群监控工具 – prometheus。

    2024年02月04日
    浏览(28)
  • 【大数据监控】Prometheus、Node_exporter、Graphite_exporter安装部署详细文档

    Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

    2023年04月08日
    浏览(28)
  • 基于Prometheus+Grafana搭建监控平台(Windows/Linux环境exporter部署)

    1.1 Prometheus是什么?Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。 Prometheus

    2024年01月19日
    浏览(68)
  • Prometheus+Mysqld_exporter+Grafana从0到1搭建MySQL的可视化监控

    1. 准备工作 安装 MySQL 数据库 安装 Prometheus 安装 Mysqld_exporter 安装 Grafana 在正式开始搭建之前,我们需要提前做好上面几个东西的安装,下面简单介绍一下这几个东西。 1.1 安装MySQL MySQL 数据库,这个就不过多赘述了,必须要有的,下载一个适合自己系统的版本,安装即可。

    2023年04月16日
    浏览(67)
  • Linux部署docker以及prometheus+node_exporter+mysqld-exporter+grafana+cadvisor+Alertmanager(告警)

    Linux安裝docker以及部署prometheus+node_exporter+mysqld-exporter+grafana+cadvisor+Alertmanager(告警) 1、官方安裝脚本自动安装docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 2、启动docker systemctl start docker 3、搜索镜像-例如搜索prometheus docker search prom/prometheus 4、拉取镜像--这里仅列出我

    2024年03月15日
    浏览(50)
  • 统信系统申威cpu 部署mysql、 portainer、node-exporter、Prometheus、AlertManager、grafana

    mysql容器部署 MySQL 是一款广泛使用的开源关系型数据库管理系统,用于存储、管理和检索结构化数据,并通过 SQL 语言支持高效率的数据操作和管理。   portainer容器部署  Portainer 是一款用于简化 Docker 及 Kubernetes 环境管理的可视化工具,它提供图形界面以方便用户进行容器、

    2024年01月25日
    浏览(27)
  • Prometheus常用exporter及其常用监控指标

    CPU相关指标: node_cpu_seconds_total{mode=\\\"idle\\\"} :CPU空闲时间(秒)的总和。这是评估CPU使用率的重要指标之一。 node_cpu_seconds_total{mode=\\\"system\\\"} 、 node_cpu_seconds_total{mode=\\\"user\\\"} 等:分别表示CPU在内核态和用户态的运行时间。 内存相关指标: node_memory_MemTotal_bytes :内存总量(以字节为

    2024年03月11日
    浏览(50)
  • 【监控】Linux部署postgres_exporter及PG配置(非Docker)

    下载地址 选一个amd64下载 上传至服务器,解压 进入解压后的目录 建立停止脚本 stop.sh 。注意unix编码 启动脚本start.sh 后面会建立postgres_exporter用户,密码为password –web.listen-address为监听的端口 –extend.query-path为自定义查询的文件 先根据命令在服务器上找到配置文件在哪 修改

    2024年02月09日
    浏览(33)
  • 【监控系统】Prometheus监控组件Node-Exporter配置实战

    这一节,我们来配置一下Node-Exporter,那么我们先来了解一下什么是Prometheus的Exporter? 任何向Prometheus提供监控样本数据的程序都可以被称为一个Exporter,它是一种用于将不同数据源的指标提供给Prometheus进行收集和监控的工具。运行在应用程序、计算机、网络设备或者其他系统

    2024年02月15日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包