使用 Munin

来自 PostgreSQL 维基
跳转到导航跳转到搜索

什么是 Munin?

Munin 是一个服务器监控程序,它会生成关于服务器运行状况的统计数据,例如内存、硬盘和服务。它使用 RRDTool 工具生成系统参数性能分析图表。它使用 Web 接口显示生成的图表,允许分布式工作,显示多个服务器的信息。为此,需要在服务器上安装 Munin 的服务器端,并在其他机器上安装客户端,客户端会将收集到的数据发送到服务器以供显示。它是用 Perl 编写的,允许使用插件,使其变得非常灵活。

安装 Munin

Munin 包含在不同发行版的官方仓库中

    root@lolo:~# apt-get install munin                # si vamos a emplear el equipo como servidor
           O
    root@lolo:~# yum install munin
    root@lolo:~# apt-get install munin-node           # si vamos a leer datos de él
           O
    root@lolo:~# yum install munin-node

Munin 可以用于监控一个或多个机器,因此需要在收集数据的机器上安装 munin-node,并在充当服务器并提供 Web 服务的机器上安装 munin。

配置文件

Munin cuenta con varios ficheros y directorios que hay que conocer.
  • /etc/munin/munin.conf 是全局配置文件,更准确地说,它配置了 Munin 的服务器端。在这个文件中,指定了要使用的目录和不同机器的配置。它必须在服务器上进行配置。
  • /etc/munin/munin-node.conf 是节点的配置文件。Munin 将每个要监控的机器视为网络中的一个节点,并通过此文件指定配置。它必须存在于每个机器上。
  • /etc/munin/plugins/ 是 Munin 读取要使用插件的目录。这些只是指向插件实际目录 (/var/lib/munin/plugins/) 的简单链接,可以通过创建或删除链接以最简单的方式添加和删除它们。
  • /var/www/munin/ 是默认情况下生成包含报告的 HTML 代码的目录。可以在 munin.conf 中更改。它必须属于用户和组 munin。
  • /var/lib/munin/ 是存储来自不同节点的所有数据并用于生成图形的目录。
  • /var/log/munin/ 是系统日志或日志文件目录。在网络配置中,munin-nodes.log 文件很有用,它详细记录了从节点发送和传输的信息。
  • /etc/cron.d/munin 是每五分钟运行并更新机器数据的 cron 文件。
  • /etc/cron.d/munin-node 是每五分钟运行并更新已注册节点数据的 cron 文件。
  • /etc/init.d/munin-node 是用于重新启动对节点的信息请求的脚本。

配置服务器

编辑 /etc/munin/munin.conf 文件

    # Example configuration file for Munin, generated by 'make build'
    dbdir /var/lib/munin ## directorio para guardar los datos y ficheros a
    emplear  
    htmldir /var/www/munin ## los informes generados
    logdir /var/log/munin  ## los logs
    rundir /var/run/munin  ## los semáforos
    tmpldir /etc/munin/templates ## las plantillas html
    #graph_period minute
    #
    [server1.etecsa.cu]
    address la.ip.de.server1
    local_address la.ip.de.server1
    use_node_name yes
    #
    [localhost.etecsa.cu]
    address 127.0.0.1
    local_address 127.0.0.1
    use_node_name yes
    **si no especifico la dirección local (local_address) que tiene el equipo,
      munin no genera las gráficas, con lo que se incluye la dirección IP 
      por partida doble.

配置节点

编辑 /etc/munin/munin-node.conf 文件

    #
    # Example config-file for munin-node
    #
    log_level 4
    log_file /var/log/munin/munin-node.log
    port 4949
    pid_file /var/run/munin/munin-node.pid
    background 1
    setseid 1
    host *
    user root
    group root
    setsid yes
    ignore_file ~$
    ignore_file \.bak$
    ignore_file %$
    ignore_file \.dpkg-(tmp|new|old|dist)$
    ignore_file \.rpm(save|new)$
    host_name localhost.etecsa.cu  ## nombre con que el servidor identifica a
                                      esta máquina 
    allow ^127\.0\.0\.1$           ## dirección IP dejaremos que se
                                      conecten...pondremos la dirección IP del
                                      servidor munin

配置 Web 接口的访问用户

    htpasswd -cm /etc/munin/munin-htpasswd muninadmin

启动 Munin

Munin 每五分钟作为 cron 任务运行。脚本位于 /etc/cron.d/ 中,可以修改它们以每分钟执行读取操作以进行测试。

在所有机器上启动客户端

 root@lolo:~# /etc/init.d/munin-node start

访问信息

 Introducimos en el navegador la dirección de htmldir, en este caso file:///var/www/munin/ 
  ó https://127.0.0.1/munin (si contamos con un servidor web).

PostgreSQL 插件

使用插件可以提高 Munin 的灵活性。从 1.4 版开始,Munin 包含了监控 PostgreSQL 所需的插件。

插件安装

接下来我们将描述如何安装和配置它。

所有插件都是用 Perl 编写的,并且需要 DBD::Pg Perl 模块。

对于 Debian

 root@lolo:~# apt-get install libdbd-pg-perl

对于 Centos

 root@lolo:~# yum install perl-DBD-Pg

我们需要在 Postgresql 中激活统计和监控收集参数。

为此,我们编辑 postgresql.conf

 logging_collector = on
  • - 查询/索引统计收集器 -
 track_activities = on
 track_counts = on
 update_process_title = on
  • - 统计监控 -
 log_parser_stats = on
 log_planner_stats = on
 log_executor_stats = on
 log_statement_stats = off

安装 Munin 插件非常简单。您只需将它们复制到 /usr/share/munin/plugins/ 目录中。

对于 Centos

解压缩文件:muninpgplugins-0.2.2.tar.gz

 root@lolo:~# tar xvzf muninpgplugins-*.tar.gz
 root@lolo:~# cd plugins

对于 Debian

root@lolo:~# apt-get install munin-plugins-extra

插件说明

pg__connections 此插件显示空闲、等待和已连接的连接数。

pg__db_size 此插件显示由 pg_database_size('my_db'); 提供的数据库大小。

pg__locks 此插件显示来自 postgresql 的所有可能的锁。

pg__stat_database 此插件显示来自特定视图的数据库的所有数据。

pg__stat_tables 此插件显示 pg_stat_*_tables 中的所有列(除了 *vacuum 和 *analyze)。此信息用于在 munin.conf 中添加图形(如比率)。使用特殊参数 (statscope) 指定我们是否使用 pg_stat_all_tables、pg_stat_user_tables 或 pg_stat_sys_tables(默认值为 user)。

pg__statio_tables 此插件显示 pg_statio_*_tables 中的所有列。此信息用于在 munin.conf 中添加图形(如比率)。使用特殊参数 (statscope) 指定我们是否使用 pg_stat_all_tables、pg_stat_user_tables 或 pg_stat_sys_tables(默认值为 user)。

pg__stat_bgwriter 此插件显示 pg_stat_bgwriter 中的所有列。此信息用于在 munin.conf 中添加图形(如比率)。由于所有数据库在此表中都有一些值,因此无需指定数据库。

激活插件

请注意,如果插件名称例如为 postgres_,那么在 /etc/munin.d/plugins 中创建符号链接时,根据你在后面添加的内容,它将监控不同的东西。最好查看相关插件的代码,以查看它支持哪些参数。

在 /etc/munin/plugins 中创建符号链接。

 ln -s '/usr/share/munin/plugins/postgres_autovacuum'     '/etc/munin/plugins/postgres_autovacuum'
 ln -s '/usr/share/munin/plugins/postgres_bgwriter'       '/etc/munin/plugins/postgres_bgwriter'
 ln -s '/usr/share/munin/plugins/postgres_cache_'         '/etc/munin/plugins/postgres_cache_ALL'
 ln -s '/usr/share/munin/plugins/postgres_checkpoints'    '/etc/munin/plugins/postgres_checkpoints'
 ln -s '/usr/share/munin/plugins/postgres_connections_'   '/etc/munin/plugins/postgres_connections_ALL'
 ln -s '/usr/share/munin/plugins/postgres_connections_db' '/etc/munin/plugins/postgres_connections_db'
 ln -s '/usr/share/munin/plugins/postgres_locks_'         '/etc/munin/plugins/postgres_locks_ALL'
 ln -s '/usr/share/munin/plugins/postgres_querylength_'   '/etc/munin/plugins/postgres_querylength_ALL'
 ln -s '/usr/share/munin/plugins/postgres_size_'          '/etc/munin/plugins/postgres_size_ALL'
 ln -s '/usr/share/munin/plugins/postgres_transactions_'  '/etc/munin/plugins/postgres_transactions_ALL'
 ln -s '/usr/share/munin/plugins/postgres_users'          '/etc/munin/plugins/postgres_users'
 ln -s '/usr/share/munin/plugins/postgres_xlog'           '/etc/munin/plugins/postgres_xlog'

可能的配置示例

要添加对插件的调用,请编辑 /etc/munin/plugin-conf.d/munin-node 文件。

要配置的变量是

env.PGHOST = cual servidor de base de datos usar. Defaults para 'localhost'.
env.PGDATABASE = cual base de datos usar. Defaults para template1.
env.PGUSER = cual cuanta de usuario de Postgresql usar. Defaults para 'postgres'. Puede ser el mismo usuario,que ejecuta los plugins de Munin.
env.PGPASSWORD = cual es la clave del usario correspondiente. Default para . Guada relación con el tipo de acceso en el pg_hba.conf.
  • 示例 1
[pg_*]
user postgres
  • 示例 2 - 使用数据库 foobase。
[pg_foobase*]
user foouser
env.PGDATABASE foobase
  • 示例 3 - 使用本地服务器,使用用户“postgres”进行身份验证。
[postgres_*]
user postgres
  • 示例 4 - 使用服务器,使用用户名和密码进行 TCP 身份验证。
[postgres_*]
env.PGHOST localhost
env.PGUSER someuser
env.PGPASSWORD somepassword

测试插件功能

重新启动 Munin

root@lolo:~# /etc/init.d/munin-node restart

并等待它开始收集信息以阅读日志,以查看一切是否正常,或者直接,

root@lolo:~# /usr/share/munin/plugins/postgres_activate_lock