Munin: Configurações Avançadas de Plugins – parte 1
Voltando com mais um post atrasado e começando uma nova pequena série, venho apresentar alguns plugins do Munin (comentado no post anterior) muito legais e as suas configurações. Apesar de ter dito anteriormente que a instalação de um plugin basea-se na simples criação de um link simbólico, alguns plugins dependem de configurações específicas e, muitas vezes, complexas.
Diferentemente do post anterior, terei que me ater a um ambiente específico, mas informarei quais as aplicações envolvidas e suas versões quando for o caso. No geral, utilizei o CentOS 5.3 para a instalação e configuração do Munin e seus plugins.
Desde já, informo que, na maioria das vezes, ler a documentação de um determinado plugin com problemas me ajudou muito. Geralmente a documentação está junto ao código, no próprio plugin. Então basta abri-lo com algum editor de textos.
1. Conceitos Básicos:
Não é necessário saber desenvolver plugins para conseguir instalá-los corretamente, mas alguns conceitos ajudarão muito a entender a documentação e os requisitos.
Primeiramente, os plugins são desenvolvidos em Perl. Com isso em mente, muitas vezes a solução de algum problema é simplesmente a instalação do pacote apropriado, como o perl-DBD-Pg para conexões com o PostgreSQL. USE O ‘YUM SEARCH‘ (ou ‘apt-get‘ ou whatever)!
Em alguns casos, serão necessários “variáveis de ambiente” para a correta execução do plugin. Por exemplo, um plugin para banco de dados precisa do usuário e senha de acesso; um plugin para o Tomcat precisará da porta de acesso.
Essas variáveis deverão ser configuradas no arquivo ‘/etc/munin/plugin-conf.d/munin-node‘. Por padrão, algumas configurações e documentações já estão inclusas. E cada configuração relaciona-se ao plugin através do nome. Por exemplo:
[mysql*] user root group wheel env.mysqladmin /usr/bin/mysqladmin env.mysqlopts -u munin -pmunin1234
As configurações acima servirão para todos os plugins cujo nome comece com “mysql“. Esse plugin rodará como o usuário root e terá as permissões de super usuário. Além disso, fornecemos ao plugins alguns dados através de variáveis de ambiente (env.). No caso, o plugin usará o mysqladmin do local informado e usará o usuário ‘munin’ para obter as informações necessárias.
Na documentação dos plugins geralmente é informado quais variáveis de ambiente devem ou podem ser setadas.
Além de configurações, existem alguns comandos úteis no processo de configuração de plugins. Através do “munin-run” podemos executar o plugin na hora, obtendo um valor numérico, se bem configurado, ou ‘U‘ se ocorrer algum problema interno. Por exemplo:
# munin-run tomcat_jvm free.value 42133328 used.value 301537456 max.value 775487488
Adicione o argumento “autoconf” para receber uma resposta booleana:
# munin-run mysql_queries autoconf yes
2. Plugin: MySQL
Tratarei aqui sobre as configurações dos plugins “mysql_queries” e “mysql_threads“. O primeiro apresenta a quantidade de requisições ao banco por tipo (selects, updates, deletes, etc); o segundo mostra a quantidade de threads criadas internamento no MySQL.

mysql_queries

mysql_threads
Essencialmente, precisamos apenas criar um usuário do MySQL sem permissão alguma e informar os dados de acesso ao plugin. Então criemos um usuário:
mysql -uroot -p -e 'CREATE USER munin IDENTIFIED BY "munin1234"'
Adicione as informações de acesso no arquivo ‘/etc/munin/plugin-conf.d/munin-node‘:
[mysql*] user root group wheel env.mysqladmin /usr/bin/mysqladmin env.mysqlopts -umunin -pmunin1234
Através desse usuário o plugin obterá os dados necessários para geração do gráfico. Utilize o comando “munin-run” para testar:
# munin-run mysql_queries delete.value 35756 insert.value 231054 replace.value 20 select.value 10460090 update.value 5261807 cache_hits.value 52529748
# munin-run mysql_threads threads.value 14
Simples, não? Muitas vezes a dificuldade não é configurar, mas sim descobrir o que configurar.
3. Plugin: PostgreSQL
Dessa vez falarei sobre um plugin para PostgreSQL, o “postgres_connections_db“. Ele gera um gráfico com os valores de conexões por banco de dados.

postgres_connections_db
Dessa vez, além de criar um novo usuário para o Munin, temos que liberar o acesso livre desse usuário a partir do servidor. Então, primeiramente, criamos o usuário com senha aleatória (segura):
psql -U postgres -c "CREATE ROLE munin NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT LOGIN ENCRYPTED PASSWORD 'LjkJ9JUha2';"
Utilizamos uma senha segura porque não usaremos ela na configuração do plugin. Ao invés disso, liberaremos o acesso sem senha para o usuário “munin” a partir do servidor para uma determinada tabela. Então, abriremos para edição o arquivo “/var/lib/pgsql/data/pg_hba.conf” e adicionamos a linha:
local template1 munin trust
Com isso, todas as conexões para o usuário “munin” na tabela “template1″ a partir do servidor local serão aceitas sem a necessidade de senha. Basta dar um reload no postgre e podemos incluir as configurações do plugin no arquivo “/var/lib/pgsql/data/pg_hba.conf” :
[postgres*] user munin env.dbuser munin
Depois disso, basta testar:
# munin-run postgres_connections_db postgres.value 0 template1.value 0 ...
Bem. Acredito que seja o suficiente por hora… Espero voltar logo com a continuação apresentando outros Plugins para o Munin, incluindo um plugin não oficial para monitorar memória usada pelo Passenger (RoR).

Leave a Reply