quinta-feira, 24 de fevereiro de 2011

Editando arquivo CGI(status.cgi ) do Nagios realizando custom

Pessoal recentemente surgiu a necessidade de editar um CGI do Nagios, especificamente o arquivo status.cgi, a carência era adicionar mais uma coluna na tabela da página Problems >> Services(http://servidorNagios/nagios/cgi-bin/status.cgi?host=all&servicestatustypes=28) tal coluna deveria conter a descrição/alias dos hosts. A intenção é para torna compreensivel, para o pessoal não técnico, o host que está apresentando problemas já que teremos uma clouna que informa a descrição do host e não somente a sua abreviatura(Hostname). Pois bem, o bom é que vivemos no mundo open source e sabendo-se disso temos acesso aos fontes dos programas, utilizando-se dessa flexibilidade podemos deixar o programa do nosso jeito, que beleza eim?! Nota 1000 para o GNU e viva ao Linux!! Pois bem, vamos meter a mão na massa:

OBS.:

- Utilizado para esse artigo o CentOS 5.5 e o Nagios Core 3.2.3;
- Você deve compilar o código status.c na máquina que realmente roda o Nagios, tentei editar e compilar o status.c em outra máquina com o mesmo S.O e a mesma versão do Nagios e depois copiei o status.cgi já compilado para outra máquina de produção, porém, não rolou dava erro então compile o nagios na máquina que realmente utilizará os CGI;

1 - Primeiramente vá ao site da Nagios e baixe o source do mesmo;

2 - Descompacte-o;

3 - Vá a pasta /nagios-3.2.3/cgi e edite o status.c;

4 - Foi necessário adicionar somente duas linhas no arquivo, abaixo segue trechos do arquivo numerado e com comentários sobre as linhas adicionadas:
# vi /nagios-3.2.3/cgi/status.c


Primeira parte:

Segunda parte:


Após isso será necessário configurar, compilar e instalar o nagios para ele recompilar os .CGIs, para fazer esta tarefa tomei como referência o How to de instalação do Nagios.org, faremos conforme abaixo:

1 - Em /nagios-3.2.3(A pasta que tem os fontes) você executará 3 comandos:

./configure --with-command-group=nagcmd
make all
make install

Pronto!
E agora vamos ver se a nossa coluna apareceu no services.cgi do Nagios, acesse o seu nagios através do browser:




Voilà!! Customizamos o Nagios!! E Viva o mundo open source!

quinta-feira, 10 de fevereiro de 2011

Extendendo partição raiz / (VolGroup00) com LVM

É normal que o seu sistema Linux com o passar do tempo consuma o filesystem, com aplicativos instalados e logs dos aplicativos que são gerados continuamente e vão logicamente consumido o seu disco, e como consequência disso ficamos sem espaço disponivel na partição root ou /. Existe uma maneira rápida, simples e transparente de incrementarmos mais espaço nessa partição, utilizando para isso a ferramenta LVM, onde podemos realizar esse ajuste de espaço se e somente o seu S.O foi instalado com LVM e foi configurado para a partição / utilizar o esquema de VG(Volume Group) da LVM, que geralmente é o VolGroup00, então isso significa que você porderá extender a sua partição.

Para descobrir essas informações no seu S.O utilize o seguinte comando:
#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
25G  5.6G   18G  25% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                 502M     0  502M   0% /dev/shm
/dev/mapper/VolGroupOracle-LogVolOracle
108G   29G   74G  28% /oracle
/dev/hdc              3.3G  3.3G     0 100% /mnt/dvd


Perceba que o filesystem da sua partição / é: /dev/mapper/VolGroup00-LogVol00 onde VolGroup00 é o Grupo de volumes, é ele quem extenderemos primeiramente, pois, o nosso volume lógico LogVol00, que é a partição /, é membro deste grupo. Logo em seguida após extendermos o Grupo lógico VolGroup00 extenderemos nosso Volume lógico LogVol00 que como já foi dito é a nossa partição root.

Então vamos lá:

Resumo da tarefa a ser realizada: Para poder extender um grupo lógico você deverá arranjar espaço de algum lugar, com LVM geralmente colocamos um novo disco rígido no servidor e após isso mudamos a tabela de partição deste novo disco para o tipo 8e(Linux LVM). Em seguida criamos um Phisical Volume a partir deste disco recém adicionado, PV ou phisical volume é um disco lógico utlizado pelo LVM. Criado o PV, extenderemos o nosso VG(Volume Group) que no nosso caso será o VolGroup00. Logo em seguida após extender o VG iremos extender o LV(Logical Volume) desejado ou em outras palavras a partição / e para finalizar iremos passar para o S.O a informação que extendemos um filesystem dele com o comando resize2fs.

Verifique o nome do dispositivo que foi colocado para seu HD recém adicionado:
#fdsik -l
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdd doesn't contain a valid partition table

O dispositivo /dev/sdd está sem tabela de partição criada. Então iremos criar e coloca-la como tipo 8e(Linux LVM):
#fdisk /dev/sdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Partição criada:
#fdisk -l /dev/sdd
Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1         130     1044193+  8e  Linux LVM


Iremos agora para a parte do LVM, primeiramente criaremos um Phisical Volume(PV) com a partição que foi criada:

#pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created


Agora que já temos o PV iremos extender um Volume Group, que no nosso caso é grupo de volumes que contém a partição raiz / normalmente é chamado de VolGroup00, se não saber qual o nome do grupo der o comando abaixo:
#df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
25G  3.7G   20G  17% /
/dev/sda1              99M   13M   82M  13% /boot
tmpfs                1006M     0 1006M   0% /dev/shm
/dev/mapper/VolGroupOracle-LogVolOracle
206G  188M  196G   1% /oracle


Identificado o Volume Group que contém a sua partição /, então, iremos extender esse VG passando para ele o dispositivo que contém o espaço livre, ou seja, o disco rigido recém adicionado na máquina:
#vgextend VolGroup00 /dev/sdd1
Volume group "VolGroup00" successfully extended


Pronto com o grupo já extendido vamos ver quanto de espaço livre este VG possui agora:
#vgdisplay VolGroup00
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 8.69 GB
PE Size 32.00 MB
Total PE 278
Alloc PE / Size 248 / 7.75 GB
Free PE / Size 30 / 960.00 MB
VG UUID Ll4Bg4-jIFV-lfut-z4Ae-JTfH-0Hzp-Zf9RjM


Agora sim iremos extender a nossa partição ou volume raiz / utilize o parâmetro Free PE do comando dado acima ele é o indice de espaço livre:
#lvextend -l+30 /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 8.19 GB
Logical volume LogVol00 successfully resized


Pronto! Agoramos que extendemos o nosso VG do LVM iremos passar esta informação para o S.O, pois, ainda não foi extendido o disco fisico propriamente dito, para extende-lo utilize o comando resize2fs:
#resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.40.2 (12-Jul-2007)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing
required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2146304 (4k)
blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 2146304 blocks long.


df -T
Filesystem              Type     1K-blocks     Used Available Use% Mounted on
/dev/mapper/centos-root xfs       47781076 47095908    685168  99% /
devtmpfs                devtmpfs   1927272        0   1927272   0% /dev
tmpfs                   tmpfs      1937252        0   1937252   0% /dev/shm
tmpfs                   tmpfs      1937252     8488   1928764   1% /run
tmpfs                   tmpfs      1937252        0   1937252   0% /sys/fs/cgroup
/dev/sda1               xfs         508588   183388    325200  37% /boot
10.71.50.71:/var/log    nfs       49578752 20107264  26912512  43% /var/log/syslogserver
tmpfs                   tmpfs       387452        0    387452   0% /run/user/0


ATENÇÃO: Se estiver usando o SO CentOS 7, o sistema de arquivo padrão é xfs e o comando resize2fs dará erro. Use o comando abaixo:

 xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=2987776 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=11951104, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=5835, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

data blocks changed from 11951104 to 27689984




Pronto!!!! Se tudo correu bem você está agora com espaço livre em seu disco e na sua partição raiz /.
Simples!

Linux Magazine Community Edition 75 baixe já a sua Linux Magazine 75 Community Edition!


Já está no ar a Linux Magazine 75 Community Edition.

Confira nesta edição os principais assuntos da Linux Magazine de fevereiro (Android) e leia um artigo completíssimo sobre programação Palm para webOS, poderoso sistema móvel que pretende conquistar posições no mercado. Leia ainda um completo tutorial sobre SystemTap.

Baixe já a sua!

Seguidores