temp
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| temp [2017/05/10 21:25] – [Menus] Oscar M. | temp [2020/08/06 10:02] (current) – created Oscar M. | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Munin Server | + | ====== OpenWisp ====== |
| - | Proveniente de la mitología nórdica, //Muninn// era uno de los dos cuervos que proveía al Dios Odín con información diaria de lo sucedido en todo el mundo. Nombre que ni pintado para un sistema de monitorización. La idea principal es montar el servicio de monitorización en un servidor central que consulte al resto de máquinas su estado, siguiendo un esquema cliente-servidor tenemos que: | + | |
| - | * Munin server -> Servidor de monitorización. | + | ===== Virtualenv ===== |
| - | * Munin node -> Máquina monitorizada (o cliente) por Munin. | + | |
| - | La elección del servidor depende de cada infraestructura, | + | Creamos un virtualenv - y lo activamos - para no enguarrar el sistema, así todo lo que instalemos con '' |
| - | ==== Instalación ==== | ||
| - | Basamos toda nuestra instalación en servidores Debian (o //Debian like//) así que la instalación no es demasiado complicada (//nota//, se requiere Apache o similar puesto que los datos que ofrece Munin son vía web): | ||
| < | < | ||
| - | (server)$ apt-get install munin munin-node munin-plugins-extra | + | $ mkdir openwisp ; cd openwisp |
| + | $ python3 | ||
| + | $ . ./ | ||
| + | (env)$ | ||
| </ | </ | ||
| - | ==== Configuración | + | ===== Clonar código del repo ===== |
| - | Para configurar el servicio abrimos su principal archivo de configuración, | + | |
| - | < | + | |
| - | (server)$ cp / | + | |
| - | (server)$ mkdir -p / | + | |
| - | (server)$ chown munin:munin / | + | |
| - | </ | + | |
| - | <file - / | + | |
| - | # The next three variables specifies where the location of the RRD | + | |
| - | dbdir / | + | |
| - | htmldir / | + | |
| - | logdir / | + | |
| - | rundir / | + | |
| - | + | ||
| - | # Where to look for the HTML template | + | |
| - | tmpldir / | + | |
| - | + | ||
| - | # (Exactly one) directory to include all files from. | + | |
| - | includedir / | + | |
| - | + | ||
| - | # Make graphs show values per minute instead of per second | + | |
| - | # | + | |
| - | + | ||
| - | # a simple host tree | + | |
| - | [localhost.localdomain] | + | |
| - | address 127.0.0.1 | + | |
| - | use_node_name yes | + | |
| - | + | ||
| - | </ | + | |
| - | **OJO**: Los directorios que acabamos de indicar deben existir y ser propiedad de // | + | |
| - | Ahora tocaría configurar Apache para crear un // | ||
| < | < | ||
| - | (server)$ a2enmod expires | + | (env)$ git clone git:// |
| + | (env)$ ls | ||
| + | env/ src/ | ||
| </ | </ | ||
| - | <file - / | ||
| - | Alias /munin / | ||
| - | < | ||
| - | Order allow,deny | ||
| - | Allow from all | ||
| - | Options None | ||
| - | AuthUserFile / | ||
| - | AuthName " | ||
| - | AuthType Basic | ||
| - | require valid-user | ||
| - | < | ||
| - | ExpiresActive On | ||
| - | ExpiresDefault M310 | ||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | Creamos el fichero de configuración con usuarios/ | ||
| - | < | ||
| - | (server)$ cd / | ||
| - | (server)$ htpasswd -c users.conf admin | ||
| - | New password: | ||
| - | Re-type new password: | ||
| - | Adding password for user admin | ||
| - | </ | ||
| - | |||
| - | ==== Ejecución manual del cron ==== | + | Antes de nada comprobamos qué paquetes tenemos instalados en nuestro entorno virtual: |
| < | < | ||
| - | $ su - munin --shell=/ | + | (env)$ pip list |
| - | $ munin-cron | + | Package |
| + | ---------- ------- | ||
| + | pip 19.2.3 | ||
| + | setuptools 41.2.0 | ||
| </ | </ | ||
| - | ==== Notificaciones | + | ===== Instalación del proyecto ===== |
| - | + | ||
| - | Para configurar las notificaciones lo hacemos directamente en '' | + | |
| - | + | ||
| - | <file - munin.conf> | + | |
| - | contact.me.command mail -s "Munin Notification ${var:host} ${var: | + | |
| - | contact.me.always_send warning critical | + | |
| - | ... | + | |
| - | </ | + | |
| - | + | ||
| - | Y más abajo en el mismo archivo deberemos definir qué es //warning// y qué es // | + | |
| - | + | ||
| - | <file - munin.conf> | + | |
| - | ... | + | |
| - | [dina01.servers] | + | |
| - | address 82.98.141.94 | + | |
| - | use_node_name yes | + | |
| - | load.load.warning 10 | + | |
| - | load.load.critical 20 | + | |
| - | </ | + | |
| - | + | ||
| - | El formato para estas notificaciones es '' | + | |
| < | < | ||
| - | $ ssh dina01 | + | (env)$ python setup.py develop |
| - | # cd /etc/ | + | (env)$ ./install-dev.sh |
| - | # munin-run load | + | (env)$ pip install |
| - | load.value 0.15 | + | (env)$ npm install -g jslint |
| - | # munin-run df | + | |
| - | _dev_sdb1.value 67.2829535189925 | + | |
| - | | + | |
| - | ... | + | |
| </ | </ | ||
| - | Ahora que ya tenemos el '' | + | Comprobamos |
| - | + | ||
| - | <file - / | + | |
| - | ... | + | |
| - | [dina01.servers] | + | |
| - | address 82.98.141.94 | + | |
| - | use_node_name yes | + | |
| - | load.load.warning 10 | + | |
| - | load.load.critical 20 | + | |
| - | df._dev_sdb1.warning 60 | + | |
| - | df._dev_sdb1.critical 90 | + | |
| - | </ | + | |
| - | + | ||
| - | **Referencias: | + | |
| - | + | ||
| - | * http:// | + | |
| - | * http:// | + | |
| - | + | ||
| - | + | ||
| - | ==== Envío de gráficas por Email ==== | + | |
| - | + | ||
| - | Munin no dispone de ninguna opción que nos permita enviar las gráficas por correo de una forma automática en una tarea programada o algo así. Estaría bien crear algún script en python que se loguease contra el interfaz web e hiciese un " | + | |
| - | + | ||
| - | Mejor todavía, como las imágenes las tenemos generadas en disco, casi sería crear un html con lo que interese y enviarlo vía cron, sin complicaciones. | + | |
| - | + | ||
| - | **Referencias: | + | |
| - | + | ||
| - | * http:// | + | |
| - | + | ||
| - | + | ||
| - | ==== Templates ==== | + | |
| - | + | ||
| - | La plantilla original de Munin no es que sea demasiado bonita, así que vamos a intentar instalar alguna que otra plantilla que sea un poco más vistosa. Empezamos probando la que nos recomienda Fran Dieguez | + | |
| < | < | ||
| - | # cd / | + | (env)$ pip list |
| - | # mv templates templates_old | + | $ pip list |
| - | # wget http://mabishu.com/downloads/munin-alternative-template.tbz | + | Package |
| - | # bunzip2 munin-alternative-template.tbz | + | ----------------------- ----------- ------------------------------------- |
| - | # tar xfvvz munin-alternative-template.tar | + | appdirs |
| + | asgiref | ||
| + | attrs 19.3.0 | ||
| + | autobahn | ||
| + | Automat | ||
| + | Babel 2.8.0 | ||
| + | bcrypt | ||
| + | billiard | ||
| + | black 19.10b0 | ||
| + | celery | ||
| + | certifi | ||
| + | cffi | ||
| + | channels | ||
| + | chardet | ||
| + | click 7.1.2 | ||
| + | constantly | ||
| + | coverage | ||
| + | coveralls | ||
| + | cryptography | ||
| + | daphne | ||
| + | defusedxml | ||
| + | Django | ||
| + | django-allauth | ||
| + | django-extensions | ||
| + | django-leaflet | ||
| + | django-loci | ||
| + | django-model-utils | ||
| + | django-organizations | ||
| + | django-phonenumber-field 4.0.0 | ||
| + | django-reversion | ||
| + | django-sortedm2m | ||
| + | django-taggit | ||
| + | django-x509 | ||
| + | djangorestframework-gis | ||
| + | docopt | ||
| + | flake8 | ||
| + | hyperlink | ||
| + | idna | ||
| + | importlib-metadata | ||
| + | incremental | ||
| + | isort 5.3.0 | ||
| + | jsonfield | ||
| + | kombu 4.6.11 | ||
| + | mccabe | ||
| + | mock-ssh-server | ||
| + | more-itertools | ||
| + | netjsonconfig | ||
| + | oauthlib | ||
| + | openwisp-controller | ||
| + | openwisp-users | ||
| + | openwisp-utils 0.5.1 | ||
| + | packaging | ||
| + | paramiko | ||
| + | pathspec | ||
| + | phonenumbers | ||
| + | Pillow | ||
| + | pip 19.2.3 | ||
| + | pluggy | ||
| + | py | ||
| + | pyasn1 | ||
| + | pyasn1-modules | ||
| + | pycodestyle | ||
| + | pycparser | ||
| + | pyflakes | ||
| + | PyHamcrest | ||
| + | PyNaCl | ||
| + | pyOpenSSL | ||
| + | pyparsing | ||
| + | pytest | ||
| + | pytest-asyncio | ||
| + | pytest-cov | ||
| + | pytest-django | ||
| + | python3-openid | ||
| + | pytz | ||
| + | redis 3.5.3 | ||
| + | regex 2020.7.14 | ||
| + | requests | ||
| + | requests-oauthlib | ||
| + | scp 0.13.2 | ||
| + | service-identity | ||
| + | setuptools | ||
| + | six 1.15.0 | ||
| + | sqlparse | ||
| + | swapper | ||
| + | toml | ||
| + | Twisted | ||
| + | txaio 20.4.1 | ||
| + | typed-ast | ||
| + | urllib3 | ||
| + | vine | ||
| + | wcwidth | ||
| + | zipp | ||
| + | zope.interface | ||
| </ | </ | ||
| - | Una vez tenemos disponible el nuevo directorio " | + | Paquetes |
| - | |||
| - | **Referencias: | ||
| - | |||
| - | * http:// | ||
| - | * http:// | ||
| - | * https:// | ||
| - | |||
| - | |||
| - | ===== Munin Node ===== | ||
| - | El //Munin node// es el nodo o agente que recopila datos y se los envía al servidor para poder pintar las gráficas. | ||
| - | |||
| - | ==== Instalación ==== | ||
| - | La instalación es muy sencilla, en la instalación del propio servidor ya lo hemos hecho de forma implícita, pero para instalar en cualquier otra máquina sería sencillo: | ||
| < | < | ||
| - | (client)$ apt-get | + | (env)$ pip install |
| - | (client)$ apt-get | + | (env)$ pip install |
| - | </ | + | (env)$ pip install " |
| - | La segunda linea es para instalar todas las dependencias que más adelante harán falta para activar los sensores de distintos servicios | + | (env)$ pip install jsonfield |
| - | ==== Configuración ==== | + | (env)$ pip install cryptography |
| - | La configuración se centra en el fichero /// | + | (env)$ pip install " |
| - | <file - / | + | (env)$ pip install " |
| - | host 127.0.0.1 | + | (env)$ pip install " |
| - | port 4949 | + | (env)$ pip install django-organizations |
| - | </file> | + | (env)$ pip install django-phonenumber-field |
| - | Si es en otros equipos clientes que van a ser monitorizados por el servidor debemos ajustar más parámetros, | + | (env)$ pip install " |
| - | <file - / | + | |
| - | host_name maquina1.loquesea.com | + | |
| - | allow ^87\.98\.219\.108$ | + | |
| - | host * | + | |
| - | port 4949 | + | |
| - | </file> | + | |
| - | Y tenemos que ir al servidor, al fichero /// | + | |
| - | <file - / | + | |
| - | [maquina.loquesea.com] | + | |
| - | address 192.168.0.2 | + | |
| - | use_node_name yes | + | |
| - | </ | + | |
| - | Como paso final, reiniciaríamos el servicio | + | |
| - | < | + | |
| - | (server)$ / | + | |
| - | (server)$ nmap localhost -p 4949 | + | |
| - | 4949/tcp open unknown | + | |
| </ | </ | ||
| - | ==== Plugins ==== | + | Repetimos |
| - | Una vez llegados a este punto tendríamos las gráficas básicas activadas (cpu, load, ram, disco...), pero si queremos agregar más gráficas necesitamos hacer uso de otros plugins. Para una comprobación automática | + | |
| - | < | + | |
| - | (client)$ munin-node-configure --suggest | + | |
| - | </ | + | |
| - | **OJO**: Si aquí obtenemos muchos mensajes "// | + | |
| - | < | + | |
| - | (client)$ munin-node-configure --suggest | + | |
| - | acpi | no | [ACPI program not found] | + | |
| - | apache_accesses | + | |
| - | apache_processes | + | |
| - | apache_volume | + | |
| - | courier_mta_mailqueue | + | |
| - | ... | + | |
| - | slapd_ | + | |
| - | </ | + | |
| - | Una vez hemos resuelto estos problemas y estamos de acuerdo con las // | + | |
| - | < | + | |
| - | (cliente)$ munin-node-configure --shell | + | |
| - | ln -s '/ | + | |
| - | ln -s '/ | + | |
| - | ln -s '/ | + | |
| - | ln -s '/ | + | |
| - | ... | + | |
| - | </ | + | |
| - | <WRAP info> | ||
| - | OJO: normalmente no salen los '' | ||
| - | </ | ||
| - | |||
| - | Y para finalizar reiniciamos el nodo de Munin: | ||
| < | < | ||
| - | (client)$ /etc/init.d/munin-node restart | + | (env)$ python setup.py develop |
| + | (env)$ ./install-dev.sh | ||
| + | (env)$ pip install -r requirements-test.txt | ||
| </ | </ | ||
| - | |||
| - | === Problemas con algunos plugins === | ||
| - | |||
| - | Muchas veces algún plugin en concreto da problemas y notifica cada 5 minutos el problema, es el caso del plugin smart (S.M.A.R.T), | ||
| - | |||
| - | < | ||
| - | menus :: backup.menus :: S.M.A.R.T values for drive sda | ||
| - | WARNINGs: smartctl_exit_status is 96.00 (outside range [:1]). | ||
| - | </ | ||
| - | |||
| - | Para deshabilitar el plugin nos vamos a ''/ | ||
| - | |||
| - | === Problemas con notificaciones (2016.10.24) === | ||
| - | |||
| - | Cuando manejas una cantidad de servidores superior a 10 (aprox.) empiezan a llegar notificaciones de todo tipo. Puestos en esta situación lo importante es saber diferenciar las críticas del resto así que he hecho un par de cambios a esta configuración: | ||
| - | |||
| - | * Ya no recibo los correos de **munin** ni los de **monit** en su correspondiente carpeta, van directamente a la INBOX para no perderme nada, a riesgo de recibir un montón de correos al día. Para eso la segunda medida: | ||
| - | * Borrar los '' | ||
| - | $ rm if_* df_inode forks fw_* interrupts vmstat bonding_* entropy threads iosta* irqst* open_* hddtemp* ntp* smart*</ | ||
temp.1494451559.txt.gz · Last modified: 2017/05/10 21:25 by Oscar M.
