踩坑指南:入门OpenTenBase之监控篇

[复制链接]
发表于 2024-5-16 23:33:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本次监控监控将接纳Prometheus、Grafana可视化工具以及postgres_exporter对OpenTenBase举行全面监控监控和优化。
安装监控监控

Docker安装

1、Docker要求 CentOs 系统的内核版本高于 3.10
通过 uname-r命令查看你当前的内核版本
uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove -y docker*
4、安装需要的软件包,yum-utl 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils
5、设置yum源,并更新yum 的包索引
  1. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  2. yum makecache
复制代码
6、安装docker
yum install -y docker-ce
8、启动并加入开机启动
systemctl start docker && systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
10、配置docker镜像
cd /etc/docker然后编辑vim daemon.json
  1. {
  2.   "registry-mirrors": ["https://jbw52uwf.mirror.aliyuncs.com"]
  3. }
复制代码
生存退出。
重启docker服务
  1. systemctl daemon-reload
  2. systemctl restart docker
复制代码
下载Prometheus

在举行监控优化时,您可以从Prometheus官方网站下载最新版:https://prometheus.io/download/
您可以选择下载源代码并解压使用,也可以通过Docker直接启动。本教程将重点介绍使用Docker举行快速部署。
执行命令:
docker run -d -p 9090:9090 -v /etc/prometheus:/etc/prometheus prom/prometheus
完成挂载后,请对配置文件举行必要的修改以确保系统正常监控。
vim prometheus.yml
  1. # my global config
  2. global:
  3.   scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  4.   evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  5.   # scrape_timeout is set to the global default (10s).
  6. # Alertmanager configuration
  7. alerting:
  8.   alertmanagers:
  9.     - static_configs:
  10.         - targets:
  11.           # - alertmanager:9093
  12. # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
  13. rule_files:
  14.   # - "first_rules.yml"
  15.   # - "second_rules.yml"
  16. # A scrape configuration containing exactly one endpoint to scrape:
  17. # Here it's Prometheus itself.
  18. scrape_configs:
  19.   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  20.   - job_name: "prometheus"
  21.     # metrics_path defaults to '/metrics'
  22.     # scheme defaults to 'http'.
  23.     static_configs:
  24.       - targets: ["192.168.56.10:9090"]
  25.   # 主要修改这里,添加文件形式的扫描
  26.   - job_name: "node"
  27.     file_sd_configs:
  28.     - refresh_interval: 10s
  29.       files:
  30.       - "/etc/prometheus/conf/node*.yaml"
复制代码
当前Prometheus的配置接纳文件情势举行服务发现。在修改配置时,无需重新启动,系统将自动更新并生效,更新间隔为10秒。
为了修改相干配置文件,首先创建一个名为conf的目次(mkdir conf)然后通过cd命令进入目次(cd /etc/prometheus/conf)接着使用vim编辑器来修改文件(vim node-ms.yaml)
  1. - targets:
  2.   - "ip:port"
  3.   labels:
  4.     hostname: pg
复制代码
为了自定义配置信息,请将相应的IP地址和主机名修改为您自己的信息。完成修改后,启动Prometheus服务,然后您可以通过访问http://您的IP地址:9090/ 来查看Prometheus的监控数据。
下载Grafana

为了确保配置的长期性,我们可以通过Docker容器以长期化情势启动Grafana。您可以使用以下命令来启动Grafana容器,并在容器重启后保存配置信息:
docker run -d -p 3000:3000 --name=grafana   --volume grafana-storage:/var/lib/grafana  grafana/grafana-enterprise
启动后,您可以在浏览器中输入http://您的IP地址:3000/
使用默认的用户名和密码admin/admin登录,以查看Grafana监控界面。
配置数据源


在这里,您只需填写URL(http://ip:9090/ )即可生存配置。这个URL指向Prometheus的地址,Grafana将通过该地址与Prometheus建立连接,从而获取数据用于展示监控面板。

下载Exporter

Prometheus官方提供了丰富的Exporter,您可以在https://prometheus.io/docs/instrumenting/exporters/ 找到相干信息。
我们可以安装postgres_exporter来监控数据库,官方地址为https://github.com/prometheus-community/postgres_exporter。
同样可以以Docker启动:
docker run  --net=host  -e DATA_SOURCE_NAME="postgresql://opentenbaseip:port/postgres?sslmode=disable"  quay.io/prometheuscommunity/postgres-exporter
ip和host修改为自己的信息即可,官方示例中对opentenbase用户并没有设置登录密码,我们也不设置密码举行登录。
启动后,我们首先登录到数据库中,然后举行数据库用户的相干设置。
  1. CREATE OR REPLACE FUNCTION __tmp_create_user() returns void as $$
  2. BEGIN
  3.   IF NOT EXISTS (
  4.           SELECT                       -- SELECT list can stay empty for this
  5.           FROM   pg_catalog.pg_user
  6.           WHERE  usename = 'postgres_exporter') THEN
  7.     CREATE USER postgres_exporter;
  8.   END IF;
  9. END;
  10. $$ language plpgsql;
复制代码
  1. SELECT __tmp_create_user();
  2. DROP FUNCTION __tmp_create_user();
  3. ALTER USER postgres_exporter WITH PASSWORD 'password';
  4. ALTER USER postgres_exporter SET SEARCH_PATH TO postgres_exporter,pg_catalog;
  5. GRANT CONNECT ON DATABASE postgres TO postgres_exporter;
  6. -- OpenTenBase中集成的PostgreSQL版本是10,所以可以执行以下语句,历史版本可前往开源地址进行查看。
  7. GRANT pg_monitor to postgres_exporter;
复制代码
postgres_exporter启动报错修复
  1. panic: Error converting setting "session_memory_size" value "3M" to float: strconv.ParseFloat: parsing "3M": invalid syntax
  2. goroutine 42 [running]:
  3. main.(*pgSetting).metric(0xc000081720, 0xc0000d5c50?)
  4.         /app/cmd/postgres_exporter/pg_setting.go:87 +0x325
  5. main.querySettings(0x0?, 0xc00010d290)
  6.         /app/cmd/postgres_exporter/pg_setting.go:56 +0x287
  7. main.(*Server).Scrape(0xc00010d290, 0xc000028011?, 0x90?)
  8.         /app/cmd/postgres_exporter/server.go:121 +0xcb
  9. main.(*Exporter).scrapeDSN(0xc0000000c0, 0x44d406?, {0xc000028011, 0x46})
  10.         /app/cmd/postgres_exporter/datasource.go:115 +0x1c5
  11. main.(*Exporter).scrape(0xc0000000c0, 0x0?)
  12.         /app/cmd/postgres_exporter/postgres_exporter.go:679 +0x16c
  13. main.(*Exporter).Collect(0xc0000000c0, 0xc00003ff60?)
  14.         /app/cmd/postgres_exporter/postgres_exporter.go:568 +0x25
  15. github.com/prometheus/client_golang/prometheus.(*Registry).Gather.func1()
  16.         /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/registry.go:457 +0xe7
  17. created by github.com/prometheus/client_golang/prometheus.(*Registry).Gather in goroutine 18
  18.         /go/pkg/mod/github.com/prometheus/[email protected]/prometheus/registry.go:547 +0xbab
复制代码
查看postgres_exporter其源码发现端倪:
  1. SELECT name, setting, COALESCE(unit, ''), short_desc, vartype FROM pg_settings WHERE vartype IN ('bool', 'integer', 'real') AND name != 'sync_commit_cancel_wait';
复制代码

确实是因为session_memory_size的显示问题,不外我已经提交了PR修复,官方修复后即可成功。

配置监控面板

一旦所有组件都成功启动,接下来我们需要前往市场探求我们想要的监控面板。你可以访问Grafana的官方仪表板市场:https://grafana.com/grafana/dashboards/?search=postgresql

一旦找到您喜好的面板,请点击此处举行导入。以下以ID:9628为示例举行导入操纵。
这里选择我们的数据源。

让我们来看一下效果怎样:

总结

本次监控将接纳Prometheus、Grafana可视化工具以及postgres_exporter对OpenTenBase举行全面监控和优化。首先,通过Docker安装了Prometheus,配置了必要的文件情势举行服务发现,实现了系统正常监控。接着,使用Docker启动Grafana,并配置数据源连接到Prometheus,展示监控面板。末了,安装了postgres_exporter以监控数据库,并解决了启动报错问题。在配置监控面板时,通过Grafana的仪表板市场找到了适合的监控面板,并成功导入使用。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表