// // Chicletes para o Cérebro: OMV5
Mostrando postagens com marcador OMV5. Mostrar todas as postagens
Mostrando postagens com marcador OMV5. Mostrar todas as postagens

domingo, 27 de fevereiro de 2022

OMV5 - Grafana - Node-Exporter - Reiniciando manualmente os serviços

Pessoal,


Precisei resetar meu servidor e reparei que o Grafana não estava mostrando todos os servidores ativos.




 Isso é bem fácil de resolver.

Primeiro, vá ao Terminar/Shell/Putty e entre, pelo SSH, ao servidor que você quer exportar os dados (estou partindo do pressuposto que você já instalou o Node-Exporter como falei aqui).

Agora precisamos saber se o Docker está ativado dando um "docker info":


Repare que, em Server, tenho dois contêineres e os dois estão parados. Agora, com um "docker ps -a", vamos ver os nomes dos contêineres:


Apesar de estar pequeno aí na foto, eu sei que este último contêiner é o que eu preciso (veja que ele está parado há duas horas, é esse o que estava rodando e que eu preciso reiniciar).

Agora dê um "docker stats <id do conteiner>"e veja se realmente está parado:


Sim, está paradinho da silva. Para reiniciar o container, dê um "docker start <id do conteiner>" e pronto:


E para ter certeza que está rodando, dê um  "docker ps":


Pronto, todos os servidores estão aparecendo agora no Grafana:


Pronto! É isso por agora!

domingo, 23 de janeiro de 2022

OMV5 - Métricas de funcionamento do servidor com Pode Exporter, Prometheus e Grafana

 Pessoal,

O OpenMediaVault, pelo menos a versão 5, contem uma apresentação das métricas de funcionamento bem simples e feias, pelo menos para o meu gosto.

Para acessá-las, vá em Diagnostics -> System Information -> Performance statistics e escolha a métrica desejada: uso da CPU, dos discos, médias de trabalho, uso da memória e da rede e tempo de funcionamento.

Vejam alguns exemplos:


Não que sejam imprestáveis as métricas, mas eu acho que poderiam ser mais completas e com uma apresentação melhor. O OMV6 parece que terá uma melhora significativa (e necessária) na parte visual. Os betas mostram que será algo como a figura abaixo:


Bem melhor, né? Mas ainda vai demorar um tempo pra versão estável do OMV6 sair. Então, até lá, vamos ter que melhorar isso no OMV5.

Bom, dando uma pesquisada, encontrei uma solução interessante: são 3 conteineres do Docker que juntos coletam dados e produzem uma apresentação das métricas bem configurável e bem apresentável. A sequência é essa aqui:

1 - Instalar o Prometheus Node Exporter, responsável por coletar as métricas;

2 - Instalar o Prometheus. Ele coleta as métricas de alvos configurados (no caso, pelo Node Exporter) em determinados intervalos e exibe os resultados;

3 - Instalar o Grafana, que utilizará os dados do Prometheus e produzirá apresentações mais completas e bonitas.

Para realizar estas instalações, segui algumas dicas desse vídeo aqui. Caso precise dele no futuro, vou deixar ele disponibilizado aqui no blog, logo abaixo:


O autor do vídeo também tem um blog onde coloca algumas instruções para a instalação (veja aqui). Tentei fazer como ele orientou, mas tive que dar algumas adaptadas. Diga-se de passagem, os conteúdos dele no YT são muito bons! Vale a pena assistir e seguir o canal dele (aqui).

A primeira coisa a se fazer é criar um arquivo de configuração para o Prometheus (prometheus.yml). Primeira coisa a ser dita: esse arquivo deve estar no disco onde está armazenado o OMV (ou seja, no meu caso, o /sda). Assim, criei o arquivo dentro desta pasta:

# /srv/Configs/Prometheus/prometheus.yml

Para criar o arquivo, criei todo o caminho até o arquivo (/srv/Config/Prometheus) e lá dentro criei um arquivo vazio chamado "prometheus.yml" com o nano:

# /srv/Configs/Prometheus# nano prometheus.yml

Dentro do arquivo coloquei o seguinte texto:

global:

  scrape_interval: 5s

  external_labels:

    monitor: 'node'

scrape_configs:

  - job_name: 'prometheus'

    static_configs:

      - targets: ['192.168.1.3:9090'] ## IP Address do localhost. Direcione a porta para o seu contêiner

  - job_name: 'node-exporter'

    static_configs:

      - targets: ['192.168.1.3:9100'] ## IP Address do localhost

Interessante observar que os alvos (targets) devem ser o IP do seu servidor e você deve certificar-se que as portas escolhidas não estão sendo utilizadas por nenhum contêiner do Docker.

Agora vamos instalar o Prometheus Node Exporter.

Eu até tentei criar um arquivo para o Docker Compose, mas só foi funcionar mesmo com a boa e velha linha de comando:

# docker run -d  --net="host"  --pid="host"  -v "/:/host:ro,rslave"  quay.io/prometheus/node-exporter:latest  --path.rootfs=/host


Esta linha é, de um modo mais apresentável, isso aqui embaixo:
docker run -d \
  --net="host" \
  --pid="host" \
  -v "/:/host:ro,rslave" \
  quay.io/prometheus/node-exporter:latest \
  --path.rootfs=/host
Enfim, em poucos segundos ele instala e tudo está pronto. Um detalhe: se você for ao Portainer, verá que surgiu um contêiner com um nome estranho (o meu apareceu "unruffled_boyd", mas logo na frente do nome já aparece o nome da imagem (quay.io/prometheus/node-exporter:latest). Como tenho TOC, parei o contêiner e acrescentei o nome "node_exporter" e mandei funcionar novamente.

Para certificar-se que tudo está certo,  ao você ir na página que configurou para o Node Exporter lá no prometheus.yml, você deve encontrar isso aqui:


Ao clicar ali no Metrics, deve aparecer isso aqui:


Se apareceu uma extensa lista de coisas, então você está no caminho certo.

Agora vamos instalar o Prometheus. Pra isso, criei esse arquivo aqui no Docker Compose:


---

version: "2.1"

services:

   prometheus:

         image: prom/prometheus:latest

         container_name: prometheus

         ports:

             - '9090:9090' #modifique as portas caso necessário

         volumes:

             -'/srv/Configs/Prometheus/prometheus.yml:/etc/prometheus/prometheus.yml' #coloque o caminho da sua instalação

         restart: unless-stopped



Bom, se tudo deu certo aí, você conseguirá ver isso aqui acessando o endereço do seu servidor pela porta que configuramos aqui neste contêiner (no meu caso, 9090):


Pronto, essa é a página para configuração do Prometheus. Outra verificação importante é ir em Status -> Service Discovery:


E agora deveremos ver isso aqui:


Ou seja, nossos dois serviços instalados (o Node Exporter e o Prometheus) estão ativos e foram detectados.

Caso você seja masoquista e goste de usar a linha de comandos ao invés do Docker Compose, o comando para instalar o Prometheus é esse aqui (não tem que saltar linha, ok? é apenas a quebra automática do texto):

# docker run -d --name prometheus -p 9090:9090 -v /srv/Configs/Prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest


O Prometheus, até onde percebi, não é nada simples para configurar. Para isso, usaremos o Grafana!

O Grafana é bem fácil também de instalar. O você usa a linha de comando com:

# docker run -d --name=grafana -p 3000:3000 grafana/grafana

Ou usa o Docker Compose com:


---

version: "2.1"

services:

   grafana:

     image: grafana/grafana:latest

     container_name: grafana

     ports:

       - 3000:3000 #modifique o 'primeiro' 3000 de acordo com sua necessidade

     restart: unless-stopped



Vá no endereço do seu servidor e digite a porta que você configurou (no meu caso: 192.168.1.3:3000) e você deverá encontrar isso:


Parabéns! Deu tudo certo!

Para configurar o Grafana, use admin como username e senha (e troque por uma senha forte depois). Na tela principal, clique em "Data Sources" e escolha "Prometheus". Em URL, digite o endereço do Prometheus com a porta escolhida (no meu caso: http://192.168.1.3:9090) e, no final da página, clique em "Save and Test".

Agora vá para aqui e escolha o dashboard que você quer usar. São milhares de opções, mas lembre-se de usar o filtro: Prometheus em Data Sources e Node Exporter em Collector Types. Após escolher o layout, anote o número que aparece à direita da tela ("Get This Dashboard"), volte ao Grafana, clique no "+" que está à esquerda da tela ("Create") e depois em "Import" e digite o número do dashboard que você escolheu.

Pronto, agora você tem um dashboard apresentável!




Mais um detalhe. Eu tenho 4 servidores rodando: um com Proxmox, um com um Ubuntu Server para diversas coisas (rodando em VM), um com o OMV (rodando também em VM) e o Raspberry Pi. Neste Dashboard, consigo ver as métricas dos 4 ao mesmo tempo. Para isso, faça o seguinte:
 
1 - instale o Node Exporter em cada um dos servidores usando o mesmo comando já comentado acima:

# docker run -d  --net="host"  --pid="host"  -v "/:/host:ro,rslave"  quay.io/prometheus/node-exporter:latest  --path.rootfs=/host

2 - no servidor onde ficará o Prometheus (no meu caso, o 192.168.1.3), naquele arquivo que criamos (prometheus.yml), vamos acrescentar os endereços dos servidores com Node Exporter instalado. Ficará assim:

global:

  scrape_interval: 5s

  external_labels:

    monitor: 'node'

scrape_configs:

  - job_name: 'prometheus'

    static_configs:

      - targets: ['192.168.1.3:9090'] ## IP Address do localhost. Direcione a porta para o seu contêiner

  - job_name: 'node-exporter'

    static_configs:

      - targets: ['192.168.1.3:9100','192.168.1.44:9100','192.18.1.2:9100','192.168.1.22:9100'] ## IP Address do localhost

3 - Reinicie todos os conteineres (Prometheus e Grafana). Talvez seja necessário apagar o Dashboard anterior e refazê-lo (ao refazer, citaremos apenas o ip de onde está instalado o Prometheus, ou seja, 192.168.1.3:9090). Pronto!

Talvez seja necessário instalar o Docker em algum dos seus servidores. Para instalar, siga as instruções do site do Docker.

Depois de tudo pronto, ficou assim:


Pronto!

sábado, 22 de janeiro de 2022

Dica - Corrigindo erros de autorização de escrita/leitura em pastas compartilhadas no OMV

 Pessoal,

Acabei de deparar com um erro estranho no OMV.

Fui tentar copiar uma pasta para dentro de uma pasta compartilhada no OMV e apareceu esta mensagem:


Como assim não tenho autorização? Dentro de "Access Rights Management -> Shared Folders -> Privileges" está assim:


Vejam que meu user, jaymebc, tem autorização para leitura e gravação.

Entretanto, para resolver esse erro, mais um privilégio para o user tem que ser concedido. Assim, ainda em Shared Folders, vá em "ACL":


Certifique-se que a opção "Others" esteja configurada para "Read/Write/Execute".


Além disso, por estranho que pareça, ainda dentro de ACL, as configurações em "User/Group permissions" estavam desmarcadas para o root, mesmo ele sendo o proprietário da pasta... Confesso que não entendi como isso ocorreu.


Marquei os usuários como abaixo:

E agora deu certo:


Se quiser mais garantias de não ter problemas com isso novamente, ao invés de apenas marcar uma pasta individualmente, você pode realizar essa mesma ação selecionando o disco inteiro do NAS.

Bom, é isso.

terça-feira, 18 de janeiro de 2022

Dica - visualizando todas as mídias no Plex Server Media

Pessoal,

Já tentei instalar o Plex várias vezes e sempre era uma novela para os arquivos aparecerem.

Desta última vez que precisei refazer os backups (veja aqui), criei pastas compartilhadas para cada tipo de mídia (uma para filmes, uma para séries, etc). A idéia era facilitar a manipulação dessas conteineres do Docker (Radarr, Bazar, Sonarr, etc).

As pastas compartilhadas ficaram assim:


O interessante é que as pastas Desenhos, Documentários, Filmes e Séries, as pastas que vão para o Plex e para o Docker, estão fisicamente no mesmo disco, numa pasta "Arquivos Mídia", mas para o NAS compartilhei cada subdiretório como uma pasta compartilhada independente. Vejam que não tem uma pasta "Clipes". Esta pasta está dentro da pasta compartilhada "Mídias".

Magicamente, quando coloquei os endereços no contêiner do Plex, ele encontrou os Desenhos, Filmes, Séries e Documentários. Mas não encontrou os Clipes.

Veja aqui como está a nomeação das pastas no Docker:


Repare que os Clipes estão dentro de outra pasta, ao contrários dos outras pastas de mídia.

Quando acesso o Plex e vou selecionar as pastas, fica assim:

(vejam que dentro de Filmes tem várias pastas
de filmes; o Plex identifica isso corretamente)


(dentro da pasta Clipes também tem um monte de arquivos
e subpastas, mas nao funciona)


Bom, não sei qual a lógica disso, mas não funciona assim.

Tentei uma última cartada antes de ter que refazer essa pasta em especial: fui no OMV -> Access Rights Management -> Shared Folders e na pasta "Mídia" editei o ACL marcando "Recursive - Apply permissions to files and subfolders" e entro de Services -> SMB/CIFS -> Shares, na pasta "Mídias", marquei a opção "Enable permission inheritance". Mandei procurar novamente e... nada 😔.

No fim de semana eu crio essa pasta para disponibilizar os clipes no Plex. Ou deixo sem os clipes mesmo, não sei.

É isso! 

sexta-feira, 9 de abril de 2021

Virtual Machine no OMV5 - Rodando o Ubuntu Server 20.04 LTS como VM!

Pessoal,

Consegui instalar VM no OMV5. Deu um bom trabalho e rolou um pouco de "gambiarra", mas deu certo.

Até onde tinha lido, o Debian 10, base o OMV5 não teria suporte ao Virtual Box. O recomendado seria usar o Cockpit. Até tentei várias vezes, mas não consegui fazer funcionar nem f*udendo!

Então pensei: vou instalar um Docker com Ubuntu Server. "Deve funcionar", pensei. Não, não consegui publicar o console do Ubuntu de jeito nenhum.

Então fui tentar instalar o Virtual Box direto pelo console do OMV5. Mas sempre dava um erro. Até que consegui algumas instruções deu certo. Interessante que está no fórum do OMV (veja aqui).

Então a coisa fica assim. No Debian 10 está rolando o OMV5 e o Virtual Box, ambos correndo paralelamente. Dentro do Virtual Box vai correr o Ubuntu Server. Cada um desses tem um IP diferente para acessar pelo Terminal.

Vamos lá. Tudo é feito pelo console do OMV5 (você tem que abrir o Shell, Terminal, Putty ou qualquer forma dessas para acessar o console).

Primeiro vamos instalar o Virtual Box 6.1, última versão no momento da publicação.

        wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

        wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

      echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian buster contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

        sudo apt update

        sudo apt install linux-headers-$(uname -r) dkms

        sudo apt install virtualbox-6.1


Pronto, agora vamos instalar o pack de extensões do Virtual Box:

        cd ~/

    wget https://download.virtualbox.org/virtualbox/6.1.0/Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack

        sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack


Agora vamos criar o usuário "vbox" e torná-lo membro do "vboxusers":

        adduser vbox

        sudo usermod -aG vboxusers vbox

        sudo systemctl status vboxdrv (para saber se o serviço vboxservices está ok, deve aparecer "active (exited)".


Pronto, se tudo deu certo o Virtual Box foi instalado e está funcionando!

Agora vamos instalar o phpvirtualbox, que vai publicar no navegador a página para criar e gerenciar as VMs que você quiser usar.

        sudo apt-get install php7.3-soap


Agora vamos para outra máquina. Eu baixei este arquivo no Mac, editei e mandei pro Debian pelo FileZilla (veja como aqui).


Extraia o arquivo, renomeie a pasta para "phpvirtualbox" (é mais fácil para trabalhar com este nome), abra o arquivo "config.php-example" que está dentro da pasta, localize e edite o conteúdo destas linhas: