Como monitorar MYSQL/MariaDB com Zabbix

Olá amigos.

Estaremos configurando o Zabbix server para realizar o monitoramento de um servidor de aplicação Linux com o Centos 7 que atualmente está executando uma aplicação WEB no MariaDB.

MariaDB instalado no Centos 7

Preparação do Banco de Dados

Primeiro teremos que executar as querys abaixo no banco para preparação do mesmo para monitoramento:

Conectar no banco de dados:

mysql -u root -p

Criando usuário no banco para o Zabbix poder executar as querys de monitoramento:

create user 'zabbix_admin'@'localhost' IDENTIFIED BY 'Password';

Rodando o comando para conceder os privilégios ao usuário:

GRANT USAGE ON *.* TO 'zabbix_admin'@'localhost' IDENTIFIED BY 'Password';

Atualizando as liberações realizadas:

flush privileges;

Após executado os comandos acima basta aplicar o comando abaixo para desconectar do banco e voltar ao SO. Lembrete, faça a definição da sua senha para o usuario zabbix_admin no campo ‘Password’ informado no Script.

exit

Configurando o Cliente

Lembrete, é necessário ter o Zabbix Agent instalado no servidor .

Para monitorar o MySql / MariaDB nós temos que criar um arquivo chamado userparameter_mysql.conf em /etc/zabbix/zabbix_agentd.conf.d/

O arquivo conterá as configurações para coletar os dados:

vim /etc/zabbix/zabbix_agentd.conf.d/userparameter_mysql.conf

Adicione as linhas abaixo dentro do arquivo criado:

# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.
#
# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}' # My line
#
# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[<database>,<table>,<type>].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[$
#
#Default below
UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive 
#
#My line
UserParameter=mysql.uptime,HOME=/etc/zabbix mysqladmin status | cut -f2 -d ":" | cut -f1 -d "T" | tr -d " "
UserParameter=mysql.threads,HOME=/etc/zabbix mysqladmin status | cut -f3 -d ":" | cut -f1 -d "Q" | tr -d " "
UserParameter=mysql.questions,HOME=/etc/zabbix mysqladmin status | cut -f4 -d ":"|cut -f1 -d "S" | tr -d " "
UserParameter=mysql.slowqueries,HOME=/etc/zabbix mysqladmin status | cut -f5 -d ":" | cut -f1 -d "O" | tr -d " "
UserParameter=mysql.qps,HOME=/etc/zabbix mysqladmin status | cut -f9 -d ":" | tr -d " "
UserParameter=mysql.version,mysql -V

Em seguida, precisamos fornecer ao Zabbix as informações de login para nosso novo usuário. Crie um arquivo chamado .my.cnf em /etc/ zabbix/

vim /etc/zabbix/.my.cnf

Adicione as linhas abaixo, lembrando de substituir o password pela senha definida.

#
[mysql]
user=zabbix_admin
password=Password
[mysqladmin]
user=zabbix_admin
password=Password

Reinicie o serviço do agente zabbix usando o seguinte comando:

systemctl restart zabbix-agent

Pronto, até este momento a parte do cliente e agente estão prontas. Agora precisamos preparar o Zabbix Server para monitorar este host.

Configurando o Zabbix Server

É necessário que seja selecionado o template do MYSQL no host monitorado conforme imagem abaixo:

Após a inclusão do template é importante lembrar que a primeira coleta e visão dos dados pode demorar até uma hora dependendo das configurações do ambiente. Abaixo um exemplo da visão do servidor monitorado com a configuração que realizamos

O setup foi simples e creio que seja interessante utilizar nos servidores que possuem banco de dados local .

Qualquer duvida estou a disposição. Abraços

Continue Reading

Converter Windows Server 2016 Standard para Datacenter

Olá amigos.

O Windows evoluiu muito nos últimos anos, o que antes era uma dor de cabeça para os administradores de sistemas, agora é fácil de ser realizado nas novas versões. A Microsoft agora permite converter um Windows Server 2016 Standard instalado para o Windows Server Datacenter sem ter que reinstalar o sistema.

Para isso, você precisará ter em mãos sua chave de produto do Windows Server 2016 Datacenter.

1. Abra o prompt de comando com privilégios elevados

2. Digite o seguinte comando:

dism /online /Set-Edition:ServerDatacenter /ProductKey:Datacenter-Product-Key /AcceptEula

Exemplo:

dism /online /Set-Edition:ServerDatacenter /ProductKey:00000-00000-00000-00000-00000 /AcceptEula

Retorno da Execução:

C:\Windows\system32>dism /online /Set-Edition:ServerDatacenter /ProductKey:00000-00000-00000-00000-00000 /AcceptEula

Deployment Image Servicing and Management tool
Version: 10.0.14393.0

Image Version: 10.0.14393.0

Starting to update components...
Starting to install product key...
Finished installing product key.

Removing package Microsoft-Windows-ServerStandardEdition~31bf3856ad364e45~amd64~~10.0.14393.0
[==========================100.0%==========================]
Finished updating components.

Starting to apply edition-specific settings...
Restart Windows to complete this operation.
Do you want to restart the computer now? (Y/N) y

Será solicitado o reboot do servidor para concluir a operação.

Quando o servidor estiver ligado novamente você pode validar que a versão foi migrada para Datacenter .

Qualquer duvida estou a disposição.

Abraços até a próxima.

Continue Reading

Configurando Bonding no CentOS 7 e Red Hat 7

Olá amigos.

Feliz 2019 a todos, e que possamos compartilhar muitas experiências neste ano.

O Bonding é módulo do Kernel Linux e que permite usar várias interfaces de rede em uma única interface lógica. Sua implementação é simples, e por sinal bem documentado.

Tipos de Bonding:

ModePoliticaComo FuncionaTolerância a falhaBalanceamento de carga
0Round RobinOs pacotes são transmitidos / recebidos sequencialmente através de cada interface, um por um.NoYes
1Active BackupUma NIC ativa enquanto outra NIC estiver adormecida. Se a NIC ativa cair, outra NIC se tornará ativa. Suportado apenas em ambientes x86.YesNo
2XOR [exclusive OR] Neste modo, o endereço MAC do NIC escravo é comparado com o MAC do pedido recebido, uma vez estabelecida esta conexão, o mesmo NIC é usado para transmitir / receber para o MAC de destino.
YesYes
3BroadcastTodas as transmissões são enviadas em todos os escravos.YesNo
4Dynamic Link AggregationNICs agregadas atuam como uma NIC que resulta em um rendimento mais alto, mas também fornece failover no caso de falha de uma NIC. Agregação dinâmica de links requer um switch que suporte IEEE 802.3adYesYes
5Transmit Load Balancing (TLB)O tráfego de saída é distribuído dependendo da carga atual em cada interface escrava. O tráfego de entrada é recebido pelo escravo atual. Se o escravo receptor falhar, outro escravo assumirá o endereço MAC do escravo com falha.YesYes
6Adaptive Load Balancing (ALB)Ao contrário da Agregação de Link Dinâmico, o Balanceamento de Carga Adaptável não requer nenhuma configuração de switch específica. O balanceamento de carga adaptável é suportado apenas em ambientes x86. Os pacotes de recebimento são balanceados por carga através da negociação ARP.YesYes

O laboratório vai ser executado no Centos 7, porem a configuração é compatível com o RedHat 7

Requisitos:

Caso o modulo do Bonding, não esteja ativo o comando abaixo faz a ativação:

modprobe bonding

Para listar as informações do módulo de Bonding , use o seguinte comando.

modinfo bonding

1ª Etapa : Criar arquivo de interface Bond

Crie um arquivo de interface Bound (ifcfg-bond0) na pasta “/ etc / sysconfig / network-scripts /”

DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.21.90
NETMASK=255.255.255.0
GATEWAY=192.168.20.1
BONDING_OPTS="mode=5 miimon=100"

Especifique o endereço IP, a máscara de rede e os modos de ligação conforme sua necessidade. No meu exemplo eu estou usando o modo = 5, que é usado para fornecer tolerância a falhas e balanceamento de carga.

2ª Etapa : Edite os arquivos das interfaces de rede

Abaixo vou deixar o exemplo de como deixo as duas placas de rede configuradas:

Placa 1- ifcfg-ens32

TYPE=Ethernet
BOOTPROTO=none
MASTER=bond0
NAME=ens32
UUID=4eb18706-42cf-48fb-bb66-fd48f360fe58
DEVICE=ens32
ONBOOT=yes
SLAVE=yes

Placa 2- ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=none
MASTER=bond0
NAME=ens33
UUID=5689a159-eeeb-4003-a4fe-73a7e6fada39
DEVICE=ens33
ONBOOT=yes
SLAVE=yes

3ª Etapa : Reiniciando serviço de rede e testando

O comando abaixo irá reiniciar o serviço de rede e assim aplicar as alterações feitas.

systemctl restart network.service

Vamos utilizar o comando “ifconfig” para validar as configurações, podem notar que temos o bond0 criado e com o IP setado.

O comando abaixo mostra informações detalhadas do Bond e as interfaces secundárias.

cat /proc/net/bonding/bond0

Teste de tolerância a falhas

Para testar a tolerância a falhas, podemos desativar uma interface e verificar se conseguimos ainda comunicar na rede.

Fica claro que mesmo com uma das interfaces que é a ens32 down o host continuo comunicando com a interface ens33.

Qualquer duvida me avisem. Abraços

Continue Reading

Erro Hyper-V cannot be installed: A hypervisor is already running

Olá amigos.

Recentemente tive problema em fazer um laboratório de Hyperv-V com o Windows Server 2012 R2, lembrando que o procedimento abaixo é somente para laboratório. Está opção não é suportada pela Microsoft.

No meu caso o erro ocorreu quando fui habilitar o Hyper-V em uma maquina virtual Windows Server 2012 R2 rodando no Vmware Worktstation que apresentou o erro “Hyper-V cannot be installed: A hypervisor is already running”. Lembrando que este erro ocorre na instalação pelo Server Manager.

Segue a imagem do erro abaixo:

Bom para este procedimento você conseguirá realizar a instalação via PowerShell da Feature. Mas não será possível iniciar as VM´s com a “Opção de Start”.

No PowerShell digite o comando abaixo “Que irá realizar a instalação do Hyper-V em modo online”:

Enable-WindowsOptionalFeature –Online -FeatureName Microsoft-Hyper-V –All –NoRestart

Neste processo realizaremos a instalação do Hyper-V Tools:

Install-WindowsFeature RSAT-Hyper-V-Tools –IncludeAllSubFeature

Instalando todas as features do Cluster do Windows:

Install-WindowsFeature RSAT-Clustering –IncludeAllSubFeature

Instalando a feature do Multipath-IO:

Install-WindowsFeature Multipath-IO

Conforme abaixo podemos ver o retorno dos comandos aplicados:

Após isso iremos reiniciar o Servidor após todas as instalações de todos os pacotes.

Restart-Computer

Após o reboot da VM você já pode validar que o console do Hyper-V foi instalado e você já pode começar a testar seus laboratórios.

Bom pessoal, qualquer duvida ou problema é só avisar.

Até a próxima

Continue Reading