本次监控将采用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 的包索引

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
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

{
"registry-mirrors": ["https://jbw52uwf.mirror.aliyuncs.com"]
}

保存退出。

重启docker服务

systemctl daemon-reload
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

# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s). # Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus" # metrics_path defaults to '/metrics'
# scheme defaults to 'http'. static_configs:
- targets: ["192.168.56.10:9090"]
# 主要修改这里,添加文件形式的扫描
- job_name: "node"
file_sd_configs:
- refresh_interval: 10s
files:
- "/etc/prometheus/conf/node*.yaml"

当前Prometheus的配置采用文件形式进行服务发现。在修改配置时,无需重新启动,系统将自动更新并生效,更新间隔为10秒。

为了修改相关配置文件,首先创建一个名为conf的目录(mkdir conf)然后通过cd命令进入目录(cd /etc/prometheus/conf)接着使用vim编辑器来修改文件(vim node-ms.yaml

- targets:
- "ip:port"
labels:
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://opentenbase:@ip:port/postgres?sslmode=disable" quay.io/prometheuscommunity/postgres-exporter

ip和host修改为自己的信息即可,官方示例中对opentenbase用户并没有设置登录密码,我们也不设置密码进行登录。

启动后,我们首先登录到数据库中,然后进行数据库用户的相关设置。

CREATE OR REPLACE FUNCTION __tmp_create_user() returns void as $$
BEGIN
IF NOT EXISTS (
SELECT -- SELECT list can stay empty for this
FROM pg_catalog.pg_user
WHERE usename = 'postgres_exporter') THEN
CREATE USER postgres_exporter;
END IF;
END;
$$ language plpgsql;
SELECT __tmp_create_user();

DROP FUNCTION __tmp_create_user();

ALTER USER postgres_exporter WITH PASSWORD 'password';

ALTER USER postgres_exporter SET SEARCH_PATH TO postgres_exporter,pg_catalog;

GRANT CONNECT ON DATABASE postgres TO postgres_exporter;

-- OpenTenBase中集成的PostgreSQL版本是10,所以可以执行以下语句,历史版本可前往开源地址进行查看。
GRANT pg_monitor to postgres_exporter;

postgres_exporter启动报错修复

panic: Error converting setting "session_memory_size" value "3M" to float: strconv.ParseFloat: parsing "3M": invalid syntax

goroutine 42 [running]:
main.(*pgSetting).metric(0xc000081720, 0xc0000d5c50?)
/app/cmd/postgres_exporter/pg_setting.go:87 +0x325
main.querySettings(0x0?, 0xc00010d290)
/app/cmd/postgres_exporter/pg_setting.go:56 +0x287
main.(*Server).Scrape(0xc00010d290, 0xc000028011?, 0x90?)
/app/cmd/postgres_exporter/server.go:121 +0xcb
main.(*Exporter).scrapeDSN(0xc0000000c0, 0x44d406?, {0xc000028011, 0x46})
/app/cmd/postgres_exporter/datasource.go:115 +0x1c5
main.(*Exporter).scrape(0xc0000000c0, 0x0?)
/app/cmd/postgres_exporter/postgres_exporter.go:679 +0x16c
main.(*Exporter).Collect(0xc0000000c0, 0xc00003ff60?)
/app/cmd/postgres_exporter/postgres_exporter.go:568 +0x25
github.com/prometheus/client_golang/prometheus.(*Registry).Gather.func1()
/go/pkg/mod/github.com/prometheus/client_golang@v1.17.0/prometheus/registry.go:457 +0xe7
created by github.com/prometheus/client_golang/prometheus.(*Registry).Gather in goroutine 18
/go/pkg/mod/github.com/prometheus/client_golang@v1.17.0/prometheus/registry.go:547 +0xbab

查看postgres_exporter其源码发现端倪:

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的仪表板市场找到了适合的监控面板,并成功导入使用。

踩坑指南:入门OpenTenBase之监控篇的更多相关文章

  1. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  2. [置顶] xamarin android toolbar(踩坑完全入门详解)

    网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...

  3. Spring WebSocket踩坑指南

    Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...

  4. 树莓派4B踩坑指南 - (15)搭建在线python IDE

    今天想在树莓派上自己搭一个在线的python IDE,于是找到了一篇教程--Fred913大神的从头开始制作OJ-在线IDE的搭建 自己尝试动手做了一下, 还是发现不少细节需要注意, 记录在此 如果不 ...

  5. Java 热更新 Groovy 实践及踩坑指南

    Groovy 是什么? Apache的Groovy是Java平台上设计的面向对象编程语言.这门动态语言拥有类似Python.Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用 ...

  6. 正则表达式 test 踩坑指南

    正则表达式 test 踩坑指南 test 只能使用一次,第二次返回的是错误结果! reg = /edg|edge/g; /edg|edge/g reg.test(`edg`) true reg.tes ...

  7. Taro 开发踩坑指南 (小程序,H5, RN)

    Taro 开发踩坑指南 (小程序,H5, RN) css taro 如何展示多行文本省略号 https://www.cnblogs.com/xgqfrms/p/12569057.html UI 设计稿 ...

  8. 小程序 & taro 踩坑指南

    小程序 & taro 踩坑指南 微信开发者工具, 不支持 react bug https://github.com/NervJS/taro/issues/5042 solution just ...

  9. Nuxt.js的踩坑指南(常见问题汇总)

    本文会不定期更新在nuxt.js中遇到的问题进行汇总.转发请注明出处,尊重作者,谢谢! 强烈推荐作者文档版踩坑指南,点击跳转踩坑指南 在Nuxt的官方文档中,中文文档和英文文档都存在着不小的差异. 1 ...

  10. Android applink 踩坑指南

    Android applink 踩坑指南 原理 接入步骤 将链接与activity关联起来 加入meta data 生成身份验证JSON 真机测试 结论 官方文档 原理 与url scheme不同的地 ...

随机推荐

  1. 【Azure API 管理】APIM如何配置客户端证书的CRL检测策略

    证书吊销列表 (Certificate Revocation List ,简称: CRL)  是 PKI 系统中的一个结构化数据文件,该文件包含了证书颁发机构 (CA) 已经吊销的证书的序列号及其吊销 ...

  2. TCP的链接和断开_wireShark实践

    目录 准备 TCP连接的三次握手 WireShark验证 TCP的四次挥手 WireShark验证 状态解释 其他的 # 概述 终于到了学习总结时间了 准备 TCP连接的三次握手 转自https:/ ...

  3. Android drawable与mipmap的区别(android资源文件放置位置)

    1.Drawable Android 把可绘制的对象抽象为Drawable,不同的图形图像代表着不同的darwable类型, 通常我们在代码中不会直接接触drawable实现类的,是由android ...

  4. Java -----多线程 创建线程的方式三: 实现Callable接口----JDK 5.0 新增

    1 package bytezero.thread2; 2 3 import java.util.concurrent.Callable; 4 import java.util.concurrent. ...

  5. 1、dubbo的简介

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候 ...

  6. Codeforces Round 651 (Div. 2)C. Number Game(数学思维数论)

    C. Number Game 我们考虑那些状态是必胜态 我的回合时n为奇数(除1外),直接除以n则必胜 下面偶数的情况稍复杂 偶数我们能进行的操作只有除以一个奇数,需要考虑怎么把当前状态变为对手的必败 ...

  7. Beckhoff 倍福 漏洞-整理(持续更新)

    工控漏洞整理网站 http://ivd.winicssec.com/index.php/Home/Search/search.html?keyword=Beckhoff

  8. 序列图 时序图 PlantUML vscode drawio 制作

    序列图 时序图 PlantUML vscode drawio 制作 需求 最近发现 序列图 很多文档都用到,而且很好用.经过研究用vscode,idea都可以编写.这里用vscode编写比较简单. d ...

  9. 修改 markdown 二级标题的编号 - 自动编号 autoNumber.js nodejs

    需求 我在写 https://www.vuejsdev.com/01FE/must-know-knowledge.html 这个页面的时候, 二级页面 标题前面有编号,但是有时候我会把顺序换下,每次手 ...

  10. 用json画图的画图软件 推荐 Balsamiq

    看这个库的时候发现的的这个软件 https://github.com/ironman1987/chinese-developer-roadmap 下载:https://www.zdfans.com/h ...