Stork – Web Interface para ISC-KEA

Resumo

O Stork é a interface gráfica oficial do ISC-KEA DHCP e BIND, criada para facilitar o monitoramento e gerenciamento desses serviços.

Com um painel web intuitivo, ele permite visualizar estatísticas de servidores, estado de leases, uso de CPU e memória, além de logs detalhados do sistema.

Ele também se integra com Prometheus e Grafana, possibilitando gráficos avançados para análise de métricas.
O Stork segue uma arquitetura cliente-servidor, onde o Stork Server monitora os serviços KEA/BIND, enquanto o Stork Agent precisa ser instalado em cada máquina que será monitorada.

Neste tutorial, vamos instalar o Server e o Agent na mesma máquina (DHCP Server). Isso simplifica a configuração, mas exige ajustes, como a alteração de portas para evitar conflitos.

Se você seguiu o post anterior, o setup será exatamente o mesmo!

Instalação e configuração do Stork

!!! Importante !!!

A página oficial do QuickStart Guide informa logo na primeira linha que a instalação não é exatamente simples. Segundo eles próprios, “Installing Stork can seem somewhat confusing at first”. Então, preste muita atenção neste post, e não exite em tirar dúvidas nos comentários.

Antes de instalarmos o componente server e o agent, precisamos ajustar nossa instalação do isc-kea-dhcp4 e isc-server-dhcp6, além de instalar o Kea Control Agent (CA). A comunicação entre o CA (Control Agent) e os daemons kea-dhcp4 e kea-dhcp6 é realizada através de sockets. então precisamos adicionar as informações de socket.
Além do socket UNIX, também precisamos instalar algumas bibliotecas extras chamadas Hooks, que adicionam funcionalidades ao KEA.

Existem dois tipos de Hooks:

  • Open Source – Voltadas para diagnóstico e monitoramento.
  • Premium – Oferecem funcionalidades avançadas para administração (necessitam de licença ISC).

Como estamos usando uma instalação sem subscrição comercial, vamos instalar apenas as Hooks Open Source, que já oferecem ótimos recursos de monitoração..

Estou usando o KEA na versão 2.6 no Debian 12, e eu não encontrei nem mesmo as hooks open source. Então vamos baixá-la do site da cloudsmith e instalar com dpkg

# Baixe o arquivo
wget https://dl.cloudsmith.io/public/isc/kea-2-6/deb/debian/pool/bullseye/main/i/is/isc-kea-hooks_2.6.1-isc20240725093407/isc-kea-hooks_2.6.1-isc20240725093407_amd64.deb

# Instale com dpkg
dpkg -i /home/valdinei/isc-kea-hooks_2.6.1-isc20240725093407_amd64.deb

# Verifique que agora possuimos várias hooks
ls -lh /usr/lib/x86_64-linux-gnu/kea/hooks/
total 4,2M
-rw-r--r-- 1 root root  67K jul 25  2024 libdhcp_bootp.so
-rw-r--r-- 1 root root 187K jul 25  2024 libdhcp_flex_option.so
-rw-r--r-- 1 root root 804K jul 25  2024 libdhcp_ha.so
-rw-r--r-- 1 root root 319K jul 25  2024 libdhcp_lease_cmds.so
-rw-r--r-- 1 root root 1,1M jul 25  2024 libdhcp_mysql_cb.so
-rw-r--r-- 1 root root 379K jul 25  2024 libdhcp_perfmon.so
-rw-r--r-- 1 root root 1,2M jul 25  2024 libdhcp_pgsql_cb.so
-rw-r--r-- 1 root root 179K jul 25  2024 libdhcp_run_script.so
-rw-r--r-- 1 root root 143K jul 25  2024 libdhcp_stat_cmds.so

Prosseguindo com a configuração:

# Arquvo /etc/kea/dhcp4.conf
# Adicionar a config abaixo logo abaixo da sessão "interfaces-config"
    "control-socket": {
        "socket-type": "unix",
        "socket-name": "/tmp/kea4-ctrl-socket"
    },
    "hooks-libraries": [
       {
           "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so",
           "parameters": { }
       },
       {
           "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_stat_cmds.so",
           "parameters": { }
       }
    ],



# Arquivo /etc/kea/dhcp6.conf
# Adicionar a config abaixo logo abaixo da sessão "interfaces-config"
    "control-socket": {
        "socket-type": "unix",
        "socket-name": "/tmp/kea6-ctrl-socket"
    },
    "hooks-libraries": [
       {
           "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so",
           "parameters": { }
       },
       {
           "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_stat_cmds.so",
           "parameters": { }
       }
    ],


# Reiniciar daemons
systemctl restart isc-kea-dhcp4-server.service
systemctl restart isc-kea-dhcp6-server.service

# Instalar KEA Control Agent (CA)
apt-get install isc-kea-ctrl-agent

Uma vez instalado o CA, precisamos fazer alguns ajustes, pois não estamos utilizando DDNS, e ele vem habilitado por padrão no CA. Caso não realize esse ajuste, erros serão lançados periodicamente no log devido ao CA não encontrar o daemon DDNS.

# Edit /etc/kea/kea-ctrl-agent.conf e comente as linhas abaixo:
//        "d2": {
//            "socket-type": "unix",
//            "socket-name": "/tmp/kea-ddns-ctrl-socket"
//        }

Para instalar o Stork, vamos inserir o repositório oficial do ISC correspondente, atualizar a base do apt e instalar tanto o server quanto o agent. Como o servidor usa o banco de dados PostgreSQL, vamos instalá-lo também, e inicializá-lo

# Sempre fique de olho no log durante atualizações
journalctl -f

# Adicionar o repositorio oficial
curl -1sLf 'https://dl.cloudsmith.io/public/isc/stork/cfg/setup/bash.deb.sh' |  bash

# Atualizar a base do apt
apt-get update

# Instalar os daemons server e agent
apt-get install isc-stork-server isc-stork-agent

# Instalação do PostgreSQL
apt-get install postgresql postgresql-contrib

# Habilitar PostgreSQL no systemctl
systemctl enable postgresql

# Iniciar banco de dados PostgreSQL
systemctl start postgresql

# Precisamos criar a base de dados.
# Para isso, de um su para o usuário postgres
su - postgres

# Crie a base de dados, preste atenção no --db-user
stork-tool db-create --db-name stork --db-user stork-server

# Reinicie o PostgreSQL
systemctl start postgresql

Agora que o PostgreSQL está instalado e configurado, precisamos definir qual usuário o Stork usará para acessar o banco de dados.

Esse usuário já foi criado anteriormente com --db-user, então basta editarmos a configuração e iniciar o serviço. Em seguida vamos habilitar e iniciar o serviço, e então testar o acesso na interface Web.

# Edite /etc/stork/server.env alterando a linha abaixo:
STORK_DATABASE_USER_NAME=stork-server

# Habilite o serviço no systemctl
systemctl enable isc-stork-server

# Inicie o serviço
systemctl start isc-stork-server

# Finalmente terminamos, acesse o IP da maquina, na porta 8080.
# Se você esta acompanhando e replicando nossos posts, a URL é:
http://192.168.15.201:8080

Se tudo ocorreu bem, você verá a tela de login.

Use admin/admin como usuário e senha, e altere a senha imediatamente.

Antes de avançar, explore a interface para se familiarizar com os menus e opções disponíveis.

Stork Instalação e Configuração Tela de Login

Configuração do Agente.

Como estamos instalando o agent na mesma máquina onde está o server (DHCP Server), não é necessário adicionar novamente o repositório. Caso vá instalar o agent em outra máquina, é necessário adicionar o repositório e instalá-lo.
Agent e server na mesma máquina facilita um pouco a configuração, porém surgem outras questões para resolver.
Tanto o server quanto o agent utilizam a porta 8080, então, se tentarmos iniciar o agent agora, não vai funcionar por dois motivos: primeiro que o agent não esta registrado no server; e segundo que haverá um conflito de portas que impedirá o agent de subir. Então, vamos alterar a porta padrão do agent, registrá-lo e iniciar o serviço.

# Edite o arquivo /etc/stork/agent.env alterando a porta para 8081
STORK_AGENT_PORT=8081

# Assuma o usuário stork-agent com su e sh como shel.
su stork-agent -s /bin/sh

# Registro do agent, veja que o server usa a porta 8080
stork-agent register --server-url http://192.168.15.201:8080

# Algumas perguntas serão feitas, responda qual o IP do agent.
# E preste atenção ao responder a porta que o agent ouvirá.

# Habilite o agente
systemctl enable isc-stork-agent

# Inicie o serviço
systemctl start isc-stork-agent

Feito isso, vamos voltar para a interface Web e autorizar o agente. Segue o passo a passo, e uma imagem ilustrando o processo:

  1. Clique em “Services”;
  2. Selecione “Machines”;
  3. Clique em “Unauthorized”;
  4. Selecione o agente que acabamos de configurar;
  5. Clique em “Authorize Selected”

Stork Regsitro se agente

Se você conseguiu seguiu os passos até aqui, parabéns. Você tem uma instalação funcional. Dê um minuto mais ou menos para o agent se comunicar com o KEA-CA e interagir com o server. Dê um F5 na página e ela deverá estar atualizada com novas opções, como “Kea Apps” em “Services” e um novo menu “DHCP” deve estar disponível. Explore as opções.

Stork - Instalação Finalizada

Finalizando.

Esta instalação foi um desafio maior do que eu esperava. Eu sempre preferi a linha de comando, então essa foi minha primeira experiência configurando a interface web.
Enfrentei alguns problemas pelo caminho, mas no final valeu a pena. Agora, temos uma interface gráfica funcional para monitorar e gerenciar o KEA de forma muito mais intuitiva.

Se você seguiu este post, conseguiu instalar sem problemas? Enfrentou alguma dificuldade?

Deixe seu comentário abaixo e compartilhe sua experiência!

Referências

Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima