terça-feira, 28 de julho de 2015

Instalação do syslog Graylog

Para instalar o Graylog é necessário ter um Linux configurado.
Este tutorial foi baseado no CentOS 7

Abaixo um resumo dos passos para a instalação:

  • Instalação do banco de dados MongoDB (Download);
  • Instalação do openjdk;
  • Instalação do serviço de pesquisa Elastic Search (Download);
  • Instalação do Graylog-server (Download repositório);
  • Instalação do Graylog-web (Utilizar o mesmo repositório do server);
  • Configurar syslogd;


Instalação MongoDB

Criar o repositório abaixo:
/etc/yum.repos.d/mongodb-org-3.0.repo
Adicionar o  conteúdo abaixo no arquivo:

[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
sslverify=0

Após instalar com o comando:
yum install -y mongodb-org

Desabilitar o selinux no
/etc/selinux/config
SELINUX=disabled

Reiniciar o computador com o comado abaixo:
reboot

Iniciar o serviço com o comando:
systemctl start mongod

Para testar:
mongostat --rowcount 5 2
/usr/bin/mongo

O arquivo de configuração está em: /etc/mongod.conf
Outros comandos do banco de dados podem ser vistos em: http://docs.mongodb.org/manual/reference/mongo-shell/


Instalação Java

yum install java-1.7.0-openjdk.x86_64



Instalação Elastic Search

rpm -ivh elasticsearch-1.6.0.noarch.rp
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

Alterar o arquivo abaixo:
vim /etc/elasticsearch/elasticsearch.yml
Alterar os campos abaixo:
cluster.name: graylog2
network.bind_host: localhost

Adicionar as linhas:
script.disable_dynamic: true
discovery.zen.ping.multicast.enabled: false
#Alterar a linha abaixo com o FQDN do seu servidor
discovery.zen.ping.unicast.hosts: ["hostname.domínio:9300"]
network.bind_host: sun16.unimed-ners.net

Configurar memória no arquivo:
/usr/share/elasticsearch/bin/elasticsearch.in.sh

Reiniciar o serviço
systemctl restart  elasticsearch.service

netstat -lpnt | grep :9200


Instalação Graylog-server 

Para instalar o repositório
rpm -ivh graylog-1.1-repository-el7_latest.rpm
Observação: colocar o comando "sslverify=0" no arquivo .repo da pasta yum referente ao graylog

Para instalar a aplicação
yum install graylog-server graylog-web

Editar o arquivo: /etc/graylog/server/server.conf

Alterar os campos abaixo:
password_secret = senha keypass
root_password_sha2 = senha
#usar o commando "echo -n admin | shasum -a 256" em outro servidor parar gerar a senha admin para o usuário admin

#Alterar a linha abaixo com o FQDN do seu servidor
rest_listen_uri = http://hostname.domínio:12900/
elasticsearch_shards = 1
elasticsearch_discovery_zen_ping_multicast_enabled = false
#Alterar a linha abaixo com o FQDN do seu servidor
elasticsearch_discovery_zen_ping_unicast_hosts = hostname.domíniot:9300
#Alterar a linha abaixo com o FQDN do seu servidor
rest_transport_uri = http://hostname.domínio:12900/

Iniciar os serviços
systemctl restart graylog-server
systemctl restart graylog-web

Alterar configuração de memória:
vim /usr/share/graylog-server/bin/graylog-server



Instalação Graylog-web

Editar o arquivo: /usr/share/graylog-web/conf/web.conf
Alterar os campos abaixo: o mesmo do /etc/graylog/server/server.conf campo password_secret
application.secret="Mesma senha do password_secret entre aspas duplas"
#Alterar a linha abaixo com o FQDN do seu servidor
graylog2-server.uris=http://hostname.domínio:12900

Importante: usuário admin e senha admin, após é necessário alterar a senha.

Para acessar a aplicação utilizar o link: http://hostname.domínio:9000  


Configurar syslogd

Editar o arquivo abaixo:
vi /etc/rsyslog.conf

Adicionar no final do arquivo as linhas:
$template GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n"
*.* @sun16.unimed-ners.net:10514;GRAYLOGRFC5424

Reiniciar o serviço
systemctl restart rsyslog
ou
service rsyslog restart



segunda-feira, 20 de julho de 2015

Powershell - Ler o conteúdo de vários arquivos e adicionar em um arquivo

As vezes é preciso adicionar o conteúdo de uma série de arquivos em um único para podermos gerar relatórios ou até mesmo importar para o Excel


O pequeno script abaixo lê o conteúdo dos arquivos com extensão txt da pasta e adiciona em c:\temp\log.txt.

#A pasta de destino precisa existir
$pastaLogs="c:\pastadosarquivos\*.txt"


$arquivos = dir $pastaLogs
foreach ($arquivo in $arquivos){
    Get-Content $arquivo >> c:\temp\log.txt

}


segunda-feira, 6 de julho de 2015

Listar arquivos que estão abertos pelo sistema operacional

As vezes digitamos o comando:
df -h / 

E ele mostra que estamos com menos espaço do que quando listamos o conteúdo das pastas com o comando:
du -sch /

Isto acontece porque existem processos que marcam alguns arquivos para serem apagados, porém não os apagam. Para listar estes arquivos basta utilizar o comando abaixo:
lsof / | grep "deleted" | sort -k7 -n

Para apagar os arquivos acessar a pasta /proc/numero do processo/fd
ls -la numero informado na 4 coluna, para o exemplo "processo  103469        root  548ur  REG 253,17 1939946640  284282 /opt/logs/jboss.log (deleted)"
Será 548

Para zerar o arquivo digitar: > 548

Após este comando a área do arquivo será liberada para o sistema operacional.


quarta-feira, 3 de junho de 2015

SQL Server - Desconectar todos os usuários do banco


O comando SQL abaixo desconecta todos os usuários e desfaz as transações pendentes, colocando o banco como silgle_user

ALTER DATABASE BancoDeDados SET SINGLE_USER WITH ROLLBACK IMMEDIATE;



O comando abaixo seta o banco novamente para multiusuário

ALTER DATABASE BancoDeDados SET MULTI_USER
 

terça-feira, 2 de junho de 2015

Exchange - Monitorar caixas postais Exchange e gravar no SQL Server

É sempre importante manter um histórico da quantidade e do tamanho das caixas postais.

O script powershell deve ser executado no snap-in do Exchange e armazenará o nome da base, o tamanho, o espaço livre, a data, o nome do servidor e a quantidade de emails no servidor de banco de dados.

Para isto é necessário criar uma tabela no banco de dados com o script abaixo:

CREATE TABLE [dbo].[indicadorExchange](
[base] [varchar](50) NULL,
[tamanho] [numeric](18, 2) NULL,
[livre] [numeric](18, 2) NULL,
[data] [date] NULL,
[server] [varchar](50) NULL,
[mailbox] [int] NULL
) ON [PRIMARY]

GO

Criada a tabela  basta executar o script abaixo com um usuário que tenha acesso ao Exchange e acesso à tabela que foi criada.

add-pssnapin Microsoft.Exchange.Management.PowerShell.SnapIn

$conn = New-Object System.Data.SqlClient.SqlConnection(“Data Source=servidorSQL\instancia; Initial Catalog=nomeDoBancoDeDados; Integrated Security=SSPI”)
$conn.Open()
$cmd = $conn.CreateCommand()
$data = Get-Date -format yyyy/MM/dd


$database = Get-MailboxDatabase -IncludePreExchange2013 -status
$database = $database += Get-PublicFolderDatabase -Status


foreach($db in $database) {

$nome = $db.Name
$tamanho = $db.DatabaseSize.ToMB()
$livre = $db.AvailableNewMailboxSpace.ToMB()
$server = $db.Server
if ($nome -like 'PUBLIC*'){
$emails = "0"   
} else{
$emails = (Get-Mailbox -ResultSize Unlimited -Database $nome).count
}

#write-host $nome - $tamanho - $livre
$cmd.CommandText =“insert into indicadorExchange values ('$nome', '$tamanho', '$livre', '$data', '$server', '$emails' );” + $cmd.CommandText
#write-host $nome, $tamanho, $livre, $data, $server, $emails
}

$data = $cmd.ExecuteReader()

$conn.Close()


segunda-feira, 1 de junho de 2015

Powershell - Ler o conteúdo de vários arquivos e adicionar em um arquivo

As vezes precisamos consolidar o conteúdo de vários arquivos em somente um para facilitar a visualização.
Para isto pode-se utilizar os comandos powershell abaixo:

#A pasta de destino precisa existir
#Exemplo: $pastaLogs="c:\logs\*.txt"
$pastaLogs="caminho\*.txt"


$arquivos = dir $pastaLogs
foreach ($arquivo in $arquivos){
    Get-Content $arquivo >> c:\temp\log.txt

}

Será salvo o arquivo c:\temp\log.txt com o conteúdo de todos os arquivos .txt da pasta c:\logs.


Windows - Listar usuarios de um grupo

O comando powershell abaixo lista todos os usuários que fazem parte de um grupo, de forma recursiva, isto é, incluindo todos os sub-grupos:

Get-ADGroupMember -recursive grupo | select SamAccountName


quinta-feira, 28 de maio de 2015

Windows - Apagar arquivos antigos

Hoje no windows temos o powershell que traz muitos recursos, porém ainda existe a necessidade de usar a linha de comando.

O exemplo abaixo apaga todos os arquivos (*.*) da pasta "f:\temp" que tenham mais que 90 dias.

forfiles /p "f:\temp" /s /m *.* -d -90 /c "cmd /c del /f /s /q @path"

quarta-feira, 27 de maio de 2015

SQL Server - Listar data do último backup

É importante ter um controle da data do último backup dos bancos de dados.
Para realizar esta validação abrir o Enterprise Manager e executar o script abaixo:

SELECT DISTINCT d.name as 'Banco', LastBackup as 'Último backup'
FROM master.sys.databases d

LEFT JOIN (  SELECT sdb.name AS database_name,
COALESCE(CONVERT(VARCHAR(12), MAX(bus.backup_finish_date), 101),null) AS LastBackup

FROM sys.sysdatabases sdb
LEFT OUTER JOIN msdb.dbo.backupset bus ON bus.database_name = sdb.name

GROUP BY sdb.name) b

ON d.name = b.database_name 

Windows - Localizar texto em arquivos

findstr /s /i /m /p "texto" *.xml

Este comando pesquisa a palavra texto dentro de arquivos xml a partir da pasta onde você está posicionado.

Linux - Listar programas instalados

O comando abaixo listará todos os programas instalados no linux

rpm -qa

Linux - Pesquisar texto em vários arquivos

find . -type f | xargs grep -l "texto" 2> /dev/null