Prometheus+Grafana监控cmdb
前言
Prometheus是从云原生计算基金会(CNCF)毕业的项目。是由前google员工2015年正式发布的开源监控系统,采用Go语言开发。整套系统由监控服务、告警服务、时序数据库等几个部分,及周边生态的各种指标收集器(Exporter)组成,是在当下主流的监控告警系统。
exporter:广义上向prometheus提供监控数据的程序都可以成为一个exporter的,一个exporter的实例称为target, exporter来源主要2个方面,一个是社区提供的,一种是用户自定义的。
Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。
一、实验环境
软件 | 版本 |
---|---|
磐维主 | (PanWeiDB(openGauss) 1.0.0 build 9a7e96bc) |
磐维备1 | (PanWeiDB(openGauss) 1.0.0 build 9a7e96bc) |
磐维备2 | (PanWeiDB(openGauss) 1.0.0 build 9a7e96bc) |
Prometheus | prometheus-2.49.0-rc.0.linux-amd64 |
Grafana | grafana-enterprise-8.5.27-1.x86_64 |
cmdb_exporter | v1.1 |
二、基于 Prometheus + Grafana 的监控解决方案
整体思想:exporter为部署在服务器的探针;prometheus远程收集exporter的数据,存在时序数据库中;grafana从prometheus获取数据并展现,实现监控数据的可视化。
三、实施步骤
3.1 获取安装包
安装包文件名为:cmdb_exporter.v1.1.tar.gz
3.2 数据库安装用户部署安装包
数据库安装的系统用户,登录到主机。上传安装包到$HOME目录下
解压 tar -zxf cmdb_exporter.v1.1.tar.gz 会得到 exporter 目录。
里面的文件,见1.2节的内容。
3.3 启动文件修改
主要是修改run_cmdb_exporter 启动文件。
最重要的,是输出日志改向。因为日志内容较多,可以输出到空间大的数据盘,在正常运行后可以输出到 /dev/null.
修改语句为第32行:
export DATA_SOURCE_NAME="host=192.168.1.51 user=cmdb_exporter password=cmdbExportrt@1234 port=17800 dbname=ogexporter sslmode=disable"
修改第42行的nohup改向操作
nohup $HOME/exporter/cmdb_exporter --config=$ConFile --log.level=debug &
3.4 示例
#!/bin/bash
source ~/.bash_profile
#检测进程是否存在,已经存在时,就退出不执行
Num=`ps -ef | grep cmdb_exporter | wc -l`
echo Num=$Num
# 假设原来有1个进程,加上本身的进程,就是2个以上,所以判断大于1
if [ $Num -gt 2 ]; then
exit 0
fi
# 配置文件
ConFile=/home/omm/enmo/exporter/cmdb_query.yaml
# 连接参数, 注意修改IP地址,端口等
DATA_SOURCE_NAME="host=192.168.1.51 user=cmdb_exporter password=xxxxx port=17700 dbname=postgres sslmode=disable"
# 日志文件, 注意要修改
LogFile=/home/omm/enmo/exporter/cmd_export.log
# 启动程序
nohup /home/omm/enmo/exporter/PanWeiDB_exporter_linux_amd64 --config=$ConFile --parallel=1 --log.level=debug --url="$DATA_SOURCE_NAME" > $LogFile 2>&1 &
3.5 增加crontab
每1分钟检测一次进程是否在,在就退出
*/1 * * * * ~/exporter/run_cmdb_exporter >/dev/null 2>&1
3.6 部署检测
查看进程是否在
ps -ef | grep cmdb_exporter
提取数据:
http://192.168.1.51:9187/metrics
3.7 安装prometheus
(1)下载
https://github.com/prometheus/prometheus/releases/download/prometheus-2.49.0-rc.0.linux-amd64.tar.gz
(2)解压
tar -xzvf prometheus-2.49.0-rc.0.linux-amd64.tar.gz
(3)启动
进入解压目录,执行 ./prometheus --config.file=prometheus.yaml &
3.8 安装 grafana
[root@localhost ~]# yum install -y grafana-enterprise-8.5.27-1.x86_64.rpm
[root@localhost ~]#
[root@localhost ~]# systemctl start grafana-server
[root@localhost ~]# systemctl enable grafana-server
[root@localhost ~]# systemctl status grafana-server
3.9 修改数据库参数
Last login: Thu Jan 4 14:16:46 2024 from 133.96.123.50
[omm@panweidb2 ~]$ gs_guc reload -I all -N all -c "password_encryption_type=1"
The gs_guc run with the following arguments: [gs_guc -I all -N all -c password_encryption_type=1 reload ].
Begin to perform the total nodes: 3.
Popen count is 3, Popen success count is 3, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 3, Command success count is 3, Command failure count is 0.
Total instances: 3. Failed instances: 0.
ALL: Success to perform gs_guc!
[omm@panweidb2 ~]$
[omm@panweidb2 ~]$
[omm@panweidb2 ~]$ gsql -r
select * from pg_node_env;
gsql ((PanWeiDB(openGauss) 1.0.0 build 9a7e96bc) compiled at 2022-11-08 20:51:50 commit 0 last mr )
NOTICE : The password has been expired, please change the password.
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
PanWeiDB=# select * from pg_node_env;
node_name | host | process | port | installpath | datapath | log_directory
-------------------+-------------------------+---------+-------+-------------------+---------------------------+--------------------------------------
dn_6001_6002_6003 | localhost,133.96.123.51 | 6949 | 17700 | /opt/panweidb/app | /opt/panweidb/cmdata/data | /opt/panweidb/log/omm/pg_log/dn_6002
(1 row)
PanWeiDB=# show password_encryption_type;
password_encryption_type
--------------------------
1
(1 row)
PanWeiDB=# CREATE USER cmdb_exporter WITH PASSWORD 'Bcv_1308' MONADMIN;
NOTICE: The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
PanWeiDB=# grant usage on schema dbe_perf to cmdb_exporter;
grant select on pg_stat_replication to cmdb_exporter;
GRANT
PanWeiDB=# grant select on pg_stat_replication to cmdb_exporter;
GRANT
PanWeiDB=# grant ALL PRIVILEGE to cmdb_exporter;
ALTER ROLE
PanWeiDB=#
四、 导入json 文件到Grafana
最后展示结果