jueves, 16 de febrero de 2017

Can't locate Apache/Ocsinventory/Plugins/Apache.pm

OCS Inventory-ng

Despues de instalar el OCS Inventory y reiniciar el servicio web
La pagina no carga, revisando los logs

[perl:error] [pid 25212] Can't locate Apache/Ocsinventory/Plugins/Apache.pm in @INC (@INC contains: /opt/otrs/Custom /opt/otrs/Kernel/cpan-lib /opt/otrs/ /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /etc/httpd) at (eval 30) line 2.\n

Basicamente es copiar el archivo desde donde se realizo la instalacion a la ruta

/usr/local/share/perl5/Apache/

# cp -r OCSNG_UNIX_SERVER-2.3/Apache/ /usr/local/share/perl5/

Se reinicia el servicio Apache

# systemctl restart httpd

Y el servico web levanta sin problema alguno

Fuente: http://ask.ocsinventory-ng.org/4615/apache-dont-start-cant-locate-apache-pm

viernes, 3 de febrero de 2017

Glassfish Start up

Glassfish Start up

/usr/local/glassfish3/glassfish/bin/asadmin create-service domain1

The Service was created successfully. Here are the details:
Name of the service:domain1
Type of the service:Domain
Configuration location of the service:/etc/init.d/GlassFish_domain1
User account that will run the service: root
You have created the service but you need to start it yourself.  Here are the most typical Linux commands of interest:

* /etc/init.d/GlassFish_domain1 start
* /etc/init.d/GlassFish_domain1 stop
* /etc/init.d/GlassFish_domain1 restart

Fuente: http://blog.roshka.com/2014/10/automatic-glassfish-startup-in-centos.html
https://docs.oracle.com/cd/E18930_01/html/821-2433/create-service-1.html

sábado, 28 de enero de 2017

Zabbix Proxy query failed duplicate entry

Zabbix Proxy

Se presento el siguiente problema en el servidor Zabbix-proxy, no actualizaba los registros

Revisando los logs "zabbix_proxy.log"


[Z3005] query failed: [1062] Duplicate entry 'XXXXXXX' for key 'PRIMARY' [insert into proxy_history

Revisando habia problemas con la tabla proxy_history

Ejecutamos el comando en la consola

# mysqlcheck --auto-repair=true -u userzabbix -p basedatoszabbix

Despues de revisar sale este mensaje

zabbixdb.proxy_history
warning  : Table is marked as crashed
warning  : 2 clients are using or haven't closed the table properly
warning  : Found 2537320 deleted space in delete link chain. Should be 2537332
error    : Found more than the expected 41959 deleted rows in delete link chain
error    : record delete-link-chain corrupted
error    : Corrupt

Repairing tables
zabbixdb.proxy_history
warning  : Number of rows changed from 4 to 1
status   : OK

# service zabbix-proxy stop
# service zabbix-proxy start

Se valida que los datos estan ingresados sin problemas y en el archivo logs del proxy
no se tiene ningun error

Fuente: http://www.heystephenwood.com/2012/12/zabbix-server-query-failed-duplicate.html

viernes, 27 de enero de 2017

Actualizar VMware Esxi

Actualizar Vmware ESXi

Vamos actualizar el Vmware por defecto la version 6 viene con el Build Number 3620759

Con una cuenta vmware entramos a la direccion y descargamos el archivo
https://my.vmware.com/group/vmware/patch#search


El archivo en modo zip lo ponemos en la ruta del servidor, se puede realizar por medio del filezilla
/vmfs/volumes/Datastore/DirectoryName

Se tiene que apagar las maquinas virtuales que se tiene en el ESXi y ponerlo en modo mantenimiento

A modo comando ingresamos lo siguiente
# vim-cmd hostsvc/maintenance_mode_enter

En este caso vamos a actualizar, le indicamos la ruta del parche
# esxcli software vib update -d "/vmfs/volumes/Datastore/DirectoryName/PatchName.zip"

reiniciamos el servidor
# reboot


Validamos la version del ESXi, con el nuevo Build Number 4600944



Fuente: https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008939

jueves, 26 de enero de 2017

ManageEngine Netflow Analyzer en Centos 7




Vamos a la pagina

https://www.manageengine.com/products/netflow/download.html

Y descargamos el archivo de acuerdo a nuestra arquitectura 32bit o 64bit

Descargamos el archivo y ejecutamos el comando

./ManageEngine_netFlowAnalyzer_64bit.bin -console




Llenamos nuestras datos y luego seleccionamos el pais

Seleccionamos el puerto web
Enter the Web Server Port Number [80]

Seleccionamos el puerto netflow que esta configurado en el router 
Enter the NetFlow Listener Port [9996]



Una vez terminado la instalacion del Netflow

Vamos a la ruta
/opt/ManageEngine/OpManager/bin

Ejecutamos el comando

 ./na_service
Usage: ./na_service { console | start | stop | restart | status | dump }

./na_service start

Validamos que el puerto que escogimos para web este levantado

Y luego ingresamos a la pagina



Fuente: http://ithelpblog.com/os/linux/redhat/install-manageengine-netflow-analyzer-on-centos-6-3-redhat-rhel-fedora-17/

martes, 17 de enero de 2017

Habilitar SSD en VMware Esxi 6


Vamos a habilitar el disco SSD en el VMware Esxi 6

Cuando agregamos un disco SSD al servidor en el Vsphere Client se observa que lo detecta como disco Non-SSD

Para ello habilitamos el SSH en el servidor VMware

y ejecutamos el comando para visualizar los dispositivos

# esxcli storage nmp device list

Ubicamos

 Storage Array Type: VMW_SATP_LOCAL
Device Display Name: IBM Serial Attached SCSI Disk (naa.11866da089113799299cd5eef0715316)

Con estos datos ejecutamos el comando
# esxcli storage nmp satp rule add --satp=SATP_TYPE --device naa.6006016015301d00167ce6e2ddb3de11 --option "enable_ssd"

En nuestro caso

esxcli storage nmp satp rule add --satp=VMW_SATP_LOCAL --device naa.11866da089113799299cd5eef0715316 --option "enable_ssd"

luego de ejecutar el comando reiniciamos el servdor

entramos a la consola por ssh

# esxcli storage core device list

En la seccion naa.11866da089113799299cd5eef0715316

Debe salir estas lineas
 Is SAS: true

Lo validamos en el Vsphere Client y nos muestra el disco como SSD


Fuente:
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2013188
http://www.grandrapidsdevs.com/how-to-enable-the-ssd-option-on-a-drive-that-is-not-detected-as-ssd-in-esxi.html

viernes, 11 de noviembre de 2016

Asterisk CDR a ELK 5

Hola

Este manual se trata de enviar los eventos del Master.csv hacia el Elasticsearch con Kibana

Toda la informacion sobre Elasticsearch lo pueden encontrar en la documentacion oficial https://www.elastic.co/learn

La figura seria la siguiente

Asterisk --> Filebeat --> Logstash --> ElasticSearch --> Kibana

Filebeat envia los eventos del servidor hacia el servidor de logstash.
Logstash recibe los eventos, procesa y envia la informacion a ElasticSearch
Kibana es una interface grafica donde se visualiza los eventos que esta en ElasticSearch

El laboratorio es sobre un Server Centos 7 ELK 5 y otro Server Asterisk con Filebeat como agente.

IPV6 esta deshabilitado solo trabaje con IPV4
Selinux dehabilitado
# sestatus
SELinux status:                 disabled

Server ELK
# cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
instalar:
yum install java-1.8.0-openjdk-devel java java-1.8.0-openjdk

# java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)

Procedemos a instalar el stack ELK

Elasticsearch
https://www.elastic.co/guide/en/elasticsearch/reference/5.0/rpm.html

Habilitamos el repositorio de Elasticsearch

Bajamos e instalamos la llave publica GPG
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Creamos el archivo elasticsearch.repo en /etc/yum.repos.d/

[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

luego procedemos a instalar el elasticsearch
yum install elasticsearch

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

Validar que los puertos 9200 y 9300 esten en escucha



Tambien hacemos un
# systemctl status elasticsearch


Vemos si elasticsearch responde los request sobre http
# curl -X GET http://localhost:9200
{
  "name" : "bhcsJV7",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "rD_lJLSkQFKcvae6xtCsGQ",
  "version" : {
    "number" : "5.0.0",
    "build_hash" : "253032b",
    "build_date" : "2016-10-26T04:37:51.531Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.0"
  },
  "tagline" : "You Know, for Search"
}

Con esto validamos el funcionamiento de elasticsearch

Logstash
https://www.elastic.co/guide/en/logstash/current/installing-logstash.html

Creamos el archivo logstash.repo en /etc/yum.repos.d/

 [logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Instalamos logstash
yum install logstash

Añadimos un certificado ssl del servidor ELK basado en su propia ip
 Modificamos el archivo /etc/pki/tls/openssl.conf y agregamos la linea subjectAltName ... debajo de v3_ca
 
[ v3_ca ]
subjectAltName = IP: X.X.X.X

Generamos un certificado por 365 dias
#cd /etc/pki/tls
# openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Copiamos el archivo logstash-forwarder.cdr desde el Servidor ELK hacia el servidor asterisk
# scp /etc/pki/tls/certs/logstash-forwarder.crt root@IPasterisk:/etc/pki/tls/certs/

Creamos los archivos
# vim /etc/logstash/conf.d/input.conf

input {
        beats {
        port => 5044
        ssl => true
        ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
        ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
        }
}


El puerto 5043 es el que se va habilitar para que filebeat envie la informacion desde el cliente

# vim /etc/logstash/conf.d/output.conf
output {
        elasticsearch {
        hosts => ["localhost:9200"]
        manage_template => false
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
        document_type => "%{[@metadata][type]}"
        }
}

logstash se comunica con el elastic por "localhost:9200"

# vim /etc/logstash/conf.d/filter.conf
filter {
   if [fields][log_type] == "cdr" {
       csv {
        columns => [
            "accountcode",
            "src", "dst", "dcontext",
            "clid", "channel", "dstchannel",
            "lastapp", "lastdata",
            "start", "answer", "end", "duration", "billsec",
            "disposition", "amaflags", "uniqueid", "userfield"
                   ]
          }

    # if dstchannel is present, split tech, name and id into 3 separate fields
    if [dstchannel] == "" {
        mutate { remove_field => ["dstchannel"] }
    } else {
        grok {
            match => ["dstchannel", "%{DATA:dstchannel_tech}/%{DATA:dstchannel_name}-%{BASE16NUM:dstchannel_id}"]
        }
    }

    # do the same to channel
    grok {
        match => ["channel", "%{DATA:channel_tech}/%{DATA:channel_name}-%{BASE16NUM:channel_id}"]
    }
     # duration and billsec are integers, message is not needed anymore (just plain CSV anyway)
    mutate {
        convert => [
            "duration", "integer",
            "billsec", "integer"
        ]
        remove_field => ["message"]
    }
  }
}

El archivo filter es donde procemos el "log" que es enviado por el filebeat, en este caso Logstash procesa el archivo Master.csv y se envia al elasticsearch para ver visualizado en kibana.

Una vez tengamos eso configurado
# systemctl daemon-reload
# systemctl start logstash
# systemctl enable logstash

validamos que el puerto 5044 este en listening y que este funcionando con normalidad

vemos que el servicio esta up and running


Kibana
https://www.elastic.co/guide/en/kibana/current/rpm.html

Creamos el archivo kibana.repo en /etc/yum.repos.d/

[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Instalamos Kibana
# yum install kibana

Modificamos el archivo /etc/kibana/kibana.yml
En la linea de server.host descomentar y poner:

server.host: "0.0.0.0"

Iniciamos el servicio
# systemctl daemon-reload
# systemctl start kibana
# systemctl enable kibana
 
Validamos el puerto
Tambien validamos el servicio kibana

Ahora vamos a instalar filebeat en el servidor cliente en este caso en el servidor asterisk
Asterisk Server (Filebeat) --> ELK Server


Filebeat
https://www.elastic.co/guide/en/beats/libbeat/5.0/setup-repositories.html

Creamos el archivo filebeat.repo en /etc/yum.repos.d

[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Bajamos e instalamos la llave GPG
#rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

Instalamos filebeat
# yum install filebeat


Modificamos el archivo /etc/filebeat/filebeat.yml

- input_type: log
  paths:
    - /var/log/asterisk/cdr-csv/Master.csv
  fields: {log_type: cdr}


Comentar estas lineas porque usaremos logstash
#output.elasticsearch:
 #hosts: ["localhost:9200"]

output.logstash:
  # The Logstash hosts
  hosts: ["IPServerELK:5044"]
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]


Estamos enviando el master.csv al logstash por el puerto 5044.

Iniciamos el servicio filebeat
# systemctl start filebeat
# systemctl enable filebeat


Una prueba breve es hacer un telnet hacia el ELK Server por el puerto 5044 deberia contestar
Otra cosa muy importante es revisar los logs
podemos habilitarlo en el archivo filebeat.yml
descomentando la linea
logging.level: debug

Y hacemos un tail para ver que se este procesando el archivo
# tail -f /var/log/filebeat/filebeat

Una vez todo este funcionando

Vamos al servidor ELK y ejecutamos

# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Debemos ver los datos del master.csv esten siendo procesados por el logtassh

Algunos detalles a tener en cuenta
No debe salirnos el "_grokparsefailure" en el tags
debe salir:
"tags" : [
            "beats_input_codec_plain_applied"
          ],

En caso salga hay que revisar la sintaxis en el archivo filter.conf

Habiendo validado que filebeat este procesando el archivo master.csv
, logstash este procesando la informacion y la este enviando al elasticsearch
Validamos que elasticsearch esta recibiendo esa informacion entonces vamos a kibana

http://IPServerELK:5601

Como index pattern ponemos filebeat-*
y luego le damos en create


Seleccionamos el indice creado filebeat y veremos los campos asociados   

Hacemos click en la pantalla izquierda "Discover", y vemos como los datos estan siendo procesados


Una vez dentro y con los datos vamos a visualize y empezamos a crear nuestros graficos
En la documentacion oficial estan los pasos a seguir 
https://www.elastic.co/guide/en/kibana/current/createvis.html

Referencias:

https://www.elastic.co/guide/index.html

http://www.tecmint.com/install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-rhel-7/
https://discuss.elastic.co/t/how-to-tag-log-files-in-filebeat-for-logstash-ingestion/44713/4
https://clutterbox.de/2014/03/asterisk-pushing-cdrs-into-elasticsearch-using-logstash/