当前位置: 首页 > postgresql > 正文

PEM agent 分析

EnterpriseDB 开发的postgresql管理工具PEM很是强大,这里对其主要的闭源部件pem_agent做一个简单的分析,看看它都有什么功能。

pem_agent在工作时,会出现四个线程(会和alert_threads有关),它们分别完成如下的工作

线程1

    LISTEN SNMP_SPOOL
    收到通知后,在 pem.snmp_spool 找 send_status = 'u' 的消息,处理SNMP消息的发送
    每小时一次

线程2

    LISTEN SMTP_SPOOL
    收到通知后,在 pem.smtp_spool 找 send_status = 'u' 的消息,处理SMTP消息的发送
    每小时一次

线程3

    pem.process_one_alert()
    向 pem.smtp_spool 放入消息, NOTIFY SMTP_SPOOL;
    每10秒一次

线程4

    继承了pgagent的功能,自带n个清理各种 log 的任务
        清理掉僵死后的任务
        查找和自己的相关的(内部)任务,取任务, 取步骤,做任务

    pem.do_heartbeat()更新 pem.do_heartbeat 的值(30s一次)

    表空间(pemdata.oc_tablespace)(300)【1】
    数据库(pemdata.oc_database)(300)【2】
    模式(pemdata.oc_schema)(300)【3】
    表(pemdata.oc_table)(300)【4】
    索引(pemdata.oc_index)(300)【5】
    外键(pemdata.oc_foreign_key)(300)【6】
    序列(pemdata.oc_sequence)(300)【7】
    函数(pemdata.oc_function)(300)【8】
    服务器信息(pemdata.server_info)(300)【9】
    数据库Statistics(pemdata.database_statistics)(1800)【10】
    表空间大小(pemdata.tablespace_size)(1800)【11】
    数据库大小(pemdata.database_size)(1800)【12】
    表Statistics(pemdata.table_statistics)(1800)【13】
    索引Statistics(pemdata.index_statistics)(1800)【14】
    数据库 FrozenID(pemdata.database_frozenxid)(43200)【15】
    表 FrozenID(pemdata.table_frozenxid)(43200)【16】
    函数Statistics(pemdata.function_statistics)(1800)【17】
    表膨胀 Bloat(pemdata.table_bloat)(1800)【18】
    表大小 (pemdata.table_size)(1800)【19】
    索引大小(pemdata.index_size)(1800)【20】
    后台写进程 Statistics(pemdata.background_writer_statistics)(300)【21】
    WAL Files数量 (pemdata.number_of_wal_files)(300)【22】
    Prepared 事务的数量(pemdata.number_of_prepared_transactions)(300)【23】
    数据库GUC参数(pemdata.settings)(300)【24】
    Session 信息 (pemdata.session_info)(300)【25】
    System Waits(pemdata.system_waits)(300)【26】***************
    Session Waits(pemdata.session_waits)(300)【27】***************
    用户信息 (pemdata.user_info)(1800)【28】
    锁信息 (pemdata.lock_info)(300)【29】
    负载状态 (pemdata.load_average)(300)【30】
    磁盘空间 (pemdata.disk_space)(1800)【31】
    磁盘繁忙信息 (pemdata.disk_busy_info)(300)【32】
    内存使用 (pemdata.memory_usage)(300)【33】
    CPU使用 (pemdata.cpu_usage)(300)【34】
    HBA文件信息 (pemdata.pg_hba_conf)(1800)【35】
    网络 Statistics(pemdata.network_statistics)(1800)【36】
    IO 分析 (pemdata.io_analysis)(1800)【37】
    数据目录和xlog信息 (pemdata.data_log_file_analysis)(1800)【38】
    操作系统 Statistics(pemdata.os_statistics)(300)【39】
    操作系统信息 (pemdata.os_info)(1800)【40】
    EDB 审计配置 (pemdata.audit_configuration)(1800)【41】*****************
    服务器日志配置  Configuration(pemdata.log_configuration)(1800)【42】
    SQL/Protect(pemdata.sql_protect)(300)【43】*************
    流复制 (pemdata.streaming_replication)(300)【44】******
    流复制冲突 (pemdata.streaming_replication_db_conflicts)(300)【45】
    Slony 复制 (pemdata.slony_replication)(300)【46】
    xDB Replication(pemdata.xdb_smr_mmr_replication)(300)【47】****************
    Package Catalog(pemdata.package_catalog)(86400)【48】*****************
    Installed Packages(pemdata.installed_packages)(86400)【49】*************
    视图信息 (pemdata.oc_views)(300)【50】
    物化视图膨胀 (pemdata.mview_bloat)(1800)【51】
    物化视图 FrozenID(pemdata.mview_frozenxid)(43200)【52】
    物化视图大小 (pemdata.mview_size)(1800)【53】

还有下面四点需要注意的地方:
1. 上面线程4中后面标有星号的行,表示其功能postgresql是不支持的,EnterpriseDB在其产品中进行了增强

2. 在所有pemdata下的表上都有相应的触发器,当更新或者插入时,会将原来的数据copy到pemhistory中的表

3. pemagent 中,只有一个具备4个线程,其余的只运行线程4

4. pemagent可以设置高可用特性,即主pemagent挂掉后,可以设置其他pemagent接替自己(4个线程)

    分享到:

本文固定链接: http://klwang.info/pem-agent-analyse/ | 数据库|Linux|软件开发

该日志由 klwang 于2014年07月31日发表在 postgresql 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PEM agent 分析 | 数据库|Linux|软件开发

PEM agent 分析:等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter