os: ubuntu 16.04
zabbix: 3.4
pg_monz: 2.1

ip 规划
192.168.56.101 node1 pgsql 9.6 master
192.168.56.102 node2 pgsql 9.6 slave
192.168.56.103 node3 zabbix proxy
192.168.56.104 node4 zabbix server

本篇blog介绍在 node1、node2 节点上使用 pg_monz 监控 postgresql 的具体过程。

查看 zabbix_agentd.conf

# egrep ^[A-Z] /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.56.103
ServerActive=192.168.56.103
Hostname=node2
AllowRoot=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
LoadModulePath=/usr/lib/zabbix/modules

pg_monz 的简介

Directory/File name                         Function
Template                                      Monitoring template
usr-local-bin/*                             Backend scripts
usr-local-etc/*                             Configuration files for backend scripts
zabbix-agentd.d/userparameter_pgsql.conf      UserParameter configuration file for Zabbix Agent

Backend scripts
Usr-local-bin directory includes some backend scripts. These scripts are called by UserParameters which are defined at userparameter_pgsql.conf.

Configuration files
Usr-local-etc directory includes two configuration files. These scripts are used to executing backend scripts.

pgsql_funcs.conf : Configuration file of connection information to PostgreSQL server
pgpool_funcs.conf : Configuration file of connection information to pgpool-II

[Note] At version 1.0, this information is set to Zabbix MACRO. But, at version 2.0, this information is set to above files.

pg_monz 的模版说明

Template directory includes the following 5 monitoring template xml.

Template name                           Use
Template_App_PostgreSQL.xml             Monitoring for single PostgreSQL server
Template_App_PostgreSQL_SR.xml          Monitoring for Streaming Replication
Template_App_PostgreSQL_SR_Cluster.xml  Monitoring for the whole Streaming Replication cluster
Template_App_pgpool-II.xml              Monitoring for pgpool-II (pgpool-II 3.5 or earlier)
Template_App_pgpool-II-36.xml             Monitoring for pgpool-II (pgpool-II 3.6 or later)
Template_App_pgpool-II_watchdog.xml     Monitoring for the whole pgpool-II cluster

pg_monz下载、安装

Requirements
pg_monz requires the following software products: Also note that Zabbix Agent and Zabbix Sender must be installed on the monitoring target server since it utilizes the functions of Zabbix Agent and Zabbix Sender for acquiring PostgreSQL information.

Software name                               Version
Zabbix Server,Zabbix Agent,Zabbix Sender    2.0 or later
PostgreSQL                                9.2 or later
pgpool-II                                   3.4.0 or later

Since bc command is executed in pg_monz backend scripts, bc command must be installed on the monitoring target server.

安装 zabbix-sender

# apt install zabbix-sender bc# dpkg -l |grep -i zabbix
ii  zabbix-agent                        1:3.4.13-1+xenial                          amd64        Zabbix network monitoring solution - agent
ii  zabbix-release                      3.4-1+xenial                               all          Zabbix official repository configuration
ii  zabbix-sender                       1:3.4.13-1+xenial                          amd64        Zabbix network monitoring solution - sender

从git下载,node1、node2上都需要操作

# cd /tmp
# wget https://github.com/pg-monz/pg_monz/archive/2.1.tar.gz
# tar -zxvf ./2.1.tar.gz
# cd pg_monz-2.1/
# more quick-install.txt# cd pg_monz/
# cp usr-local-etc/* /usr/local/etc
# cp usr-local-bin/* /usr/local/bin
# cp zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d

zabbix 导入监控模版

zabbix web 页面操作

Configuration -> Templates -> Import

导入 pg_monz 模版 Template App PostgreSQL.xml、Template_App_PostgreSQL_SR.xml、Template_App_PostgreSQL_SR_Cluster.xml

zabbix 主机配置模板

zabbix web 页面操作
Configuration -> Host groups -> Create host group

输入 PostgreSQL,输入的这个名字对应 Template_App_PostgreSQL_SR_Cluste 模版的 {$PG_HOST_GROUP} 值

Configuration -> Hosts

点击某台机器,进去选择 Templates,
点击Select,选中 Template App PostgreSQL、Template_App_PostgreSQL_SR 或者Template_App_PostgreSQL_SR_Cluster ,点击页下面的 Select
点击 Add
点击 Update

参考:
http://pg-monz.github.io/pg_monz/index-en.html

https://github.com/pg-monz/pg_monz/releases
https://github.com/pg-monz/pg_monz/releases/tag/2.1

https://github.com/pg-monz/pg_monz

附录:

# ls -l /tmp/pg_monz-2.1/pg_monz/template
total 344
-rw-rw-r-- 1 root root  56856 Mar 30 17:32 Template_App_pgpool-II-36.xml
-rw-rw-r-- 1 root root   6216 Mar 30 17:32 Template_App_pgpool-II_watchdog.xml
-rw-rw-r-- 1 root root  53618 Mar 30 17:32 Template_App_pgpool-II.xml
-rw-rw-r-- 1 root root   7974 Mar 30 17:32 Template_App_PostgreSQL_SR_Cluster.xml
-rw-rw-r-- 1 root root  52620 Mar 30 17:32 Template_App_PostgreSQL_SR.xml
-rw-rw-r-- 1 root root 164024 Mar 30 17:32 Template_App_PostgreSQL.xml
# ls -l /tmp/pg_monz-2.1/pg_monz/usr-local-bin
total 88
-rwxrwxr-x 1 root root  747 Mar 30 17:32 find_dbname.sh
-rwxrwxr-x 1 root root 2064 Mar 30 17:32 find_dbname_table.sh
-rwxrwxr-x 1 root root 1363 Mar 30 17:32 find_pgpool_backend_ip.sh
-rwxrwxr-x 1 root root  841 Mar 30 17:32 find_pgpool_backend.sh
-rwxrwxr-x 1 root root  490 Mar 30 17:32 find_sr_client_ip.sh
-rwxrwxr-x 1 root root  406 Mar 30 17:32 find_sr.sh
-rwxrwxr-x 1 root root 1921 Mar 30 17:32 pgpool_backend_status.sh
-rwxrwxr-x 1 root root 2287 Mar 30 17:32 pgpool_cache.sh
-rwxrwxr-x 1 root root 1547 Mar 30 17:32 pgpool_connections.sh
-rwxrwxr-x 1 root root  433 Mar 30 17:32 pgpool_delegate_ip.sh
-rwxrwxr-x 1 root root  255 Mar 30 17:32 pgpool_simple.sh
-rwxrwxr-x 1 root root 2781 Mar 30 17:32 pgsql_db_funcs.sh
-rwxrwxr-x 1 root root  256 Mar 30 17:32 pgsql_primary.sh
-rwxrwxr-x 1 root root 4903 Mar 30 17:32 pgsql_server_funcs.sh
-rwxrwxr-x 1 root root  241 Mar 30 17:32 pgsql_simple.sh
-rwxrwxr-x 1 root root 4680 Mar 30 17:32 pgsql_sr_server_funcs.sh
-rwxrwxr-x 1 root root  249 Mar 30 17:32 pgsql_standby.sh
-rwxrwxr-x 1 root root 5368 Mar 30 17:32 pgsql_tbl_funcs.sh
-rwxrwxr-x 1 root root 1319 Mar 30 17:32 pgsql_userdb_funcs.sh
# ls -l tmp/pg_monz-2.1/pg_monz/usr-local-etc
total 8
-rw-rw-r-- 1 root root 119 Mar 30 17:32 pgpool_funcs.conf
-rw-rw-r-- 1 root root  65 Mar 30 17:32 pgsql_funcs.conf
# ls -l /tmp/pg_monz-2.1/pg_monz/zabbix_agentd.d
total 4
-rw-rw-r-- 1 root root 3108 Mar 30 17:32 userparameter_pgsql.conf

需要copy的东西

# cp /tmp/pg_monz-2.1/pg_monz/zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d
# cp /tmp/pg_monz-2.1/pg_monz/usr-local-bin/* /usr/local/bin
# cp /tmp/pg_monz-2.1/pg_monz/usr-local-etc/* /usr/local/etc

1、userparameter_pgsql.conf

# PostgreSQL user parameter# Discovery Rule
#
# Database Discovery
UserParameter=db.list.discovery[*],"$1"/find_dbname.sh "$2"
UserParameter=db_table.list.discovery[*],"$1"/find_dbname_table.sh "$2"
UserParameter=sr.discovery[*],"$1"/find_sr.sh "$2"
UserParameter=sr.status.discovery[*],"$1"/find_sr_client_ip.sh "$2"
UserParameter=sr.db.list.discovery[*],"$1"/find_dbname.sh "$2"# For pg_monz 2.0 psql monitoring
# $1: pgsql_*_funcs.sh directory path
# $2: pgsql_funcs.conf directory path
UserParameter=psql.running[*],"$1"/pgsql_simple.sh "$2"
UserParameter=psql.primary_server[*],"$1"/pgsql_primary.sh "$2"
UserParameter=psql.standby_server[*],"$1"/pgsql_standby.sh "$2"# For pg_monz 2.0
#---  PostgreSQL user parameter  -----------------------------------------------
# $1: pgsql_*_funcs.sh directory path
# $2: pgsql_funcs.conf directory path
# $3: hostname (which means the designated name specified on Zabbix Web UI)
# $4: zabbix_agentd.conf file path
# $5: DB name        (only for LLD) or  {$PGSLOWQUERY_TIME_THRESHOLD} ( only for pgsql.get.pg.slow_query )
# $6: DB schema name (only for LLD)
# $7: DB table name  (only for LLD)
#-------------------------------------------------------------------------------
UserParameter=pgsql.get.pg.transactions[*],"$1"/pgsql_server_funcs.sh pg.transactions "$2" "$3" "$4"
UserParameter=pgsql.get.pg.bgwriter[*],"$1"/pgsql_server_funcs.sh pg.bgwriter $2 "$3" "$4"
UserParameter=pgsql.get.pg.slow_query[*],"$1"/pgsql_server_funcs.sh pg.slow_query "$2" "$3" "$4" "$5"
UserParameter=pgsql.get.pg.stat_database[*],"$1"/pgsql_db_funcs.sh pg.stat_database "$2" "$3" "$4" "$5"
UserParameter=pgsql.get.pg.size[*],"$1"/pgsql_userdb_funcs.sh pg.size "$2" "$3" "$4" "$5"UserParameter=pgsql.get.pg.stat_table[*],"$1"/pgsql_tbl_funcs.sh pg.stat_table "$2" "$3" "$4" "$5" "$6" "$7"#---  PostgreSQL SR user parameter  --------------------------------------------
# $1: pgsql_*_funcs.sh directory path
# $2: pgsql_funcs.conf directory path
# $3: hostname (which means the designated name specified on Zabbix Web UI)
# $4: zabbix_agentd.conf file path
#-------------------------------------------------------------------------------
UserParameter=pgsql.get.pg.stat_replication[*],"$1"/pgsql_sr_server_funcs.sh pg.stat_replication "$2" "$3" "$4"
UserParameter=pgsql.get.pg.sr.status[*],"$1"/pgsql_sr_server_funcs.sh pg.sr.status "$2" "$3" "$4"#---  pgpool-II user parameter  --------------------------------------------
# Discovery Rule
UserParameter=backend.discovery[*],"$1"/find_pgpool_backend.sh "$2"
UserParameter=backend.status.discovery[*],"$1"/find_pgpool_backend_ip.sh "$2"#---  pgpool-II user parameter  --------------------------------------------
UserParameter=pgpool.running[*],"$1"/pgpool_simple.sh "$2"
UserParameter=pgpool.have_delegate_ip[*],"$1"/pgpool_delegate_ip.sh "$2"
UserParameter=pgpool.get.nodes[*],"$1"/pgpool_backend_status.sh pgpool.nodes "$2" "$3" "$4"
UserParameter=pgpool.get.connections[*],"$1"/pgpool_connections.sh pgpool.connections "$2" "$3" "$4"
UserParameter=pgpool.get.cache[*],"$1"/pgpool_cache.sh pgpool.cache $2 "$3" "$4"

2、pgsql_funcs.conf

PGHOST=127.0.0.1
PGPORT=5432
PGROLE=postgres
PGDATABASE=postgres

3、find_sr.sh

#!/bin/bash

PGSHELL_CONFDIR="$1"GETROW="select count(*) from pg_stat_replication"# Load the psql connection option parameters.
source $PGSHELL_CONFDIR/pgsql_funcs.confresult=$(psql -h $PGHOST -p $PGPORT -U $PGROLE -d $PGDATABASE -t -c "$GETROW" 2>&1)
if [ $? -ne 0 ]; thenecho "$result"exit
fiif [ $result -ge 1 ]; thenecho '{"data":[{"{#MODE}":"streaming"} ]}'
elseecho '{"data":[ ]}'
fi

4、find_sr_client_ip.sh

#!/bin/bash

PGSHELL_CONFDIR="$1"GETTABLE="select row_to_json(t) from (select client_addr as \"{#SRCLIENT}\" from pg_stat_replication) as t"# Load the psql connection option parameters.
source $PGSHELL_CONFDIR/pgsql_funcs.confresult=$(psql -h $PGHOST -p $PGPORT -U $PGROLE -d $PGDATABASE -t -c "${GETTABLE}" 2>&1)
if [ $? -ne 0 ]; thenecho "$result"exit
fiIFS=$'\n'
for row in $result; dosr_client_list="$sr_client_list,"${row# }
done
echo '{"data":['${sr_client_list#,}' ]}'

ubuntu 16.04 + zabbix 3.4 + postgresql pg_monz相关推荐

  1. ubuntu 16.04 + zabbix 3.4 + postgresql libzbxpgsql

    os: ubuntu 16.04 zabbix: 3.4 ip 规划 192.168.56.101 node1 pgsql 9.6 master 192.168.56.102 node2 pgsql ...

  2. Ubuntu 16.04安装Zabbix 3.2 版本

    系统环境:ubuntu16.04 注意:为了便于实验测试,需要关闭防火墙: parallels@zabbix-server:~$ sudo systemctl stop ufw   parallels ...

  3. ubuntu安装pr_在Ubuntu 16.04服务器上安装Zabbix 3.2

    监控服务器 - 什么是Zabbix Zabbix是企业级开源分布式监控服务器解决方案. 该软件监控网络的不同参数和服务器的完整性,还允许为任何事件配置基于电子邮件的警报. Zabbix根据存储在数据库 ...

  4. 入门系列之使用Sysdig监视您的Ubuntu 16.04系统

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由乌鸦 发表于云+社区专栏 介绍 Sysdig是一个全面的开源系统活动监控,捕获和分析应用程序.它具有强大的过滤语言和可自定义的输出,以 ...

  5. 入门系列之使用Sysdig监视您的Ubuntu 16.04系统 1

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由乌鸦 发表于云+社区专栏 介绍 Sysdig是一个全面的开源系统活动监控,捕获和分析应用程序.它具有强大的过滤语言和可自定义的输出,以 ...

  6. Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录

    本文主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录,以下是操作步骤(主要参考资料:https://about.gitlab.com/downloads/#ubuntu16 ...

  7. Ubuntu 16.04 安装后修改屏幕分辨率(xrandr: Failed to get size of gamma for output default)

    ubuntu 16.04 安装后分辨率只有一个选项 1024x768,使用 xrandr 命令出现错误: xrandr: Failed to get size of gamma for output ...

  8. Ubuntu 16.04 安装 Docker - Dependency failed for Docker Application Container

    Docker 安装 由于 apt 官方库里的 Docker 版本可能比较旧,所以先卸载可能存在的旧版本: sudo apt-get remove docker docker-engine docker ...

  9. 在Ubuntu 16.04.6 LTS上升级python 3.5到3.7.3实录

    缘由 我想安装一个python模块you-get,发现只能使用pip3安装,但是我发现我的Ubuntu 16.04.6 LTS上有python3.5,但是没有pip3,也无法成功安装,真是要了我的老命 ...

最新文章

  1. 拼多多面试:如何用 Redis 统计独立用户访问量?
  2. linux系统的通讯工具,Linux下即时通讯工具:Pidgin 2.5.0正式发布了
  3. Python 数据分析与展示笔记2 -- 图像手绘效果
  4. dependencies 和 devDependencies 区别
  5. 化零为整WCF(14) - 事务(Transaction)
  6. Ajax与CustomErrors的尴尬
  7. nginx log response_nginx优化配置大全
  8. NVIDIA将全面支持笔记本混合显卡技术
  9. Idea Marketplace 加载很慢 加载不出来
  10. established 太多_ss -s closed过多,NON_ESTABLISHED告警
  11. VMware-分配 vSphere 5.0 许可证密钥
  12. 知到网课教师口语艺术考试题库(含答案)
  13. [ZGC升级记录](to-space exhausted/Evacuation Failure)
  14. 想入门自学编程,应该怎么开始?
  15. php正则匹配一个汉字,php正则表达式匹配中文
  16. Redis集群(读写分离、哨兵机制、Cluster集群)
  17. 一图轻松搞懂吉利Basetech之OCC
  18. UE使用(UltraEdit)
  19. 设备厂商Plc远程上下载程序远程调试运维
  20. numpy之轴向统计API

热门文章

  1. PyCharm:选择性忽略 PEP8 警告
  2. java封装怎么写_java中封装怎么写
  3. 从一副去掉大小王的 52 张扑克牌中,请写出代码,用随机抽样的方法,分别估计出现 炸弹、顺子 (5张)、同花顺 (3 张)的概率。请使用自己的学号作为种子,得出最后的估计结果。
  4. 如何进行远程控制电脑
  5. Yen Threshoding
  6. Hive从入门到放弃——HiveQL表级别DDL设计的艺术性(五)
  7. 【源码】均衡优化器Equilibrium Optimizer(EO)
  8. SQL借助于NewSQL开始回归
  9. 台大-林轩田老师-机器学习基石学习笔记6
  10. 驾照科目一知识点——1、准驾车型