Prometheus、Grafana等使用配置随手记

举报
黄生 发表于 2025/01/07 17:02:31 2025/01/07
【摘要】 本文涵盖了 Prometheus、Grafana、Docker、PostgreSQL、Elasticsearch 等工具的配置与使用,以及系统资源管理、网络配置、文件系统操作等内容。关键点包括:Prometheus 和 Grafana 的监控系统配置与数据存储管理。Docker 容器的网络、存储、日志与调试。PostgreSQL 的安装、配置、数据目录初始化与远程连接设置。Elasticse...

本文涵盖了 Prometheus、Grafana、Docker、PostgreSQL、Elasticsearch 等工具的配置与使用,以及系统资源管理、网络配置、文件系统操作等内容。关键点包括:

  • Prometheus 和 Grafana 的监控系统配置与数据存储管理。
  • Docker 容器的网络、存储、日志与调试。
  • PostgreSQL 的安装、配置、数据目录初始化与远程连接设置。
  • Elasticsearch 的数据管理与索引操作。
  • 系统资源管理、LVM 逻辑卷操作、SELinux 配置等系统级操作。

1. Prometheus 和 Grafana 的监控系统配置

  • Prometheus 组件

    • node-exporter:用于收集宿主机的系统和硬件指标,如 CPU、内存、磁盘 I/O 等。
    • mysqld-exporter:用于收集 MySQL 数据库的性能指标。
    • cadvisor:用于监控容器的资源使用情况,如 CPU、内存、磁盘 I/O 等。
  • Prometheus 配置

    • 通过 prometheus.yml 配置文件定义抓取任务(job),如 node-exportercadvisor 的抓取配置。
    • 使用 relabel_configs 对抓取的数据进行标签重写,方便数据分类和查询。
  • Grafana 配置

    • Grafana 使用 Prometheus 作为数据源,通过 Dashboard 展示监控数据。
    • Dashboard 的 JSON 配置文件中包含 panelstemplating 部分,分别用于定义面板和变量。
    • Grafana 的 root_url 配置用于指定 Grafana 的公网访问地址,通常用于反向代理和子路径配置。(当Grafana的地址不能访问时,寻找发现原来Grafana被除名后集成到了某个系统里,访问地址有了变化)
  • 数据存储与清理

    • Prometheus 的数据存储在 /data 目录下,数据目录按时间分片存储,定期清理旧数据以避免磁盘空间不足。(直接删除掉,干净简洁)
    • Grafana 使用 MySQL 数据库存储用户、仪表板、报警规则等元数据。

2. Docker 和容器化部署

  • Docker Compose

    • 使用 docker-compose.yml 文件定义多容器应用程序的配置,包括服务、网络、卷等。
    • 通过 docker-compose updocker-compose down 命令快速启动和停止容器。(down和stop有区别,stop停止容器、而down停止后还会删除容器)
  • 容器网络配置

    • 使用 network_mode: "host" 让容器共享宿主机的网络栈,避免端口映射问题。
    • 使用 volumes 挂载宿主机的文件系统到容器中,确保数据持久化。
  • 容器日志与调试

    • 使用 docker logs 查看容器日志,使用 docker inspect 查看容器配置。
    • 通过 docker exec 在容器内执行命令,如 curl 请求 Prometheus 的 /reload 接口。

3. PostgreSQL 数据库部署与配置

  • PostgreSQL 安装与启动

    • 使用 yum 安装 PostgreSQL 13.16,并通过 postgresql-13.16-setup initdb 初始化数据库。
    • 使用 systemctl start postgresql-13.16 启动 PostgreSQL 服务。
  • 数据库配置

    • 修改 pg_hba.confpostgresql.conf 文件,允许来自任何主机的连接。
    • 使用 ALTER USER postgres WITH PASSWORD 'newpassword'; 设置 postgres 用户的密码。
  • 数据目录初始化

    • 使用 initdb -D /new/pgdata 在指定目录初始化 PostgreSQL 数据目录,并确保目录权限正确。

4. 系统与网络配置

  • SELinux 配置

    • 使用 setenforce 0 临时关闭 SELinux,或修改 /etc/selinux/config 文件永久关闭 SELinux。
  • LVM 逻辑卷管理

    • 使用 lvremovevgremove 删除不再使用的逻辑卷和卷组。
    • 使用 lvextend 扩展逻辑卷,并使用 resize2fs 调整文件系统大小。
  • 网络配置

    • 使用 docker run 启动容器时,通过 -p 参数映射端口,确保容器服务可以通过宿主机访问。

5. Elasticsearch 数据管理

  • Elasticsearch 概念

    • Shards:分片是 Elasticsearch 中数据分布和查询的基本单元,分为主分片和副本分片。
    • Indices:索引是存储相关文档的集合,类似于数据库中的“数据库”。(更像表)
    • Documents:文档是 Elasticsearch 中存储数据的基本单元,类似于数据库中的“行”。
  • 数据操作

    • 使用 curl 命令查询和更新 Elasticsearch 中的文档,如更新 microservices_name 字段的值。
    • 使用 DELETE 请求删除不再需要的索引,如 sop_event_log-2024.10.29-000001

6. 系统资源与性能监控

  • Prometheus 数据目录

    • Prometheus 的数据目录按时间分片存储,使用 du -sm */ 查看各分片目录的大小。
    • 使用 storage.tsdb.retention.time=180d 配置数据保留时间为 180 天。
  • Grafana 数据源

    • 通过 grafana.ini 配置文件设置 Grafana 的 root_urldisable_login_form 等参数,控制 Grafana 的访问和认证方式。

7. 容器与系统调试

  • 容器启动问题
    • 在 openEuler 上运行 Docker 容器时,可能遇到内存分配问题,需调整内核配置或 Docker 配置。(popen failure: cannot allocate memory。pg容器。同样的 Docker 容器运行命令在 CentOS 8.5 上可以正常运行)
    • 使用 docker logsjournalctl -u docker.service 查看容器和 Docker 守护进程的日志,排查问题。

9. 时间片与调度

  • 时间片(Time Slice)
    • 时间片是操作系统调度进程的基本单位,每个进程在时间片内获得 CPU 执行时间。
    • 在容器监控中,时间片用于衡量容器的 CPU 调度情况,如 enforcement period 表示容器的 CPU 时间配额。

10. 系统命令与工具

  • yum 命令
    • 使用 yum repolist 查看仓库信息,使用 yum install --downloadonly 下载 RPM 包。(注意,如果该rpm已经在系统内安装,则不会下载。很奇怪的行为。)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。