Skip to main content
Version: Next

Task 03: Configure NDM Server

Runbook Azure

DOCUMENT CATEGORY: Runbook SCOPE: NDM server configuration for network monitoring PURPOSE: Establish centralized SYSLOG/SNMP collection for Azure Local infrastructure MASTER REFERENCE: Ubuntu Server Documentation

Status: Active


Overview

The NDM (Network/DevOps Management) server is an Ubuntu Linux VM that provides centralized SYSLOG collection and SNMP monitoring for the Azure Local infrastructure. Network devices, switches, and management appliances forward logs to this server.

Task Classification

Execution Target: Linux Server (SSH-based configuration) Tab Profile: 3 tabs — SSH Console · Orchestrated Script (Mgmt Server) · Standalone Script

Configuration Summary

SettingValueSource
VM Namevm-ndm-azl-eus-01azure_vms.ndm.name
Hostnamendm-eus-01azure_vms.ndm.hostname
FQDNndm-eus-01.azrl.mgmtazure_vms.ndm.fqdn
IP Address10.250.1.39azure_vms.ndm.private_ip
OSUbuntu 24.04 LTSazure_vms.ndm.os
RoleSYSLOG/SNMPazure_vms.ndm.role
VM SizeStandard_D2s_v4azure_vms.ndm.vm_size

Services to Configure

ServicePurposePort
rsyslogSYSLOG collectionUDP 514
snmpdSNMP agentUDP 161
Azure Monitor AgentLog forwarding to Log Analytics

Prerequisites

  • Management VMs deployed — NDM VM running (via CI/CD Pipeline or Manual Task 11)
  • SSH access via Bastion or direct SSH
  • NSG allows SYSLOG (UDP 514) and SNMP (UDP 161) from management subnet
  • VM admin credentials available

Variables from variables.yml

VariableConfig PathExample (IIC)
VM Nameazure_vms.ndm.namevm-ndm-azl-eus-01
Hostnameazure_vms.ndm.hostnamendm-eus-01
FQDNazure_vms.ndm.fqdnndm-eus-01.azrl.mgmt
Private IPazure_vms.ndm.private_ip10.250.1.39
Resource Groupazure_vms.ndm.resource_grouprg-azrlmgmt-azl-eus-01

Single Subscription Model

Landing Zone Placement

FieldValueConfig Path
Target VMNDMazure_vms.ndm
Resource Grouprg-azrlmgmt-azl-eus-01azure_vms.ndm.resource_group
Subnetsnet-azrl-azl-eus-01azure_vms.ndm.subnet

Execution Options

SSH Console

When to use: Single deployment, interactive SSH session via Bastion

Procedure — System Update

  1. Connect to NDM VM via Bastion SSH or serial console

  2. Update system packages:

sudo apt update && sudo apt upgrade -y
  1. Set hostname (if not set by cloud-init):
sudo hostnamectl set-hostname ndm-eus-01

Procedure — Configure rsyslog

  1. Enable remote SYSLOG reception:
sudo nano /etc/rsyslog.conf

Uncomment or add:

module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
  1. Create log separation rules:
sudo nano /etc/rsyslog.d/10-network-devices.conf

Content:

# Separate network device logs by source IP
template(name="RemoteHost" type="string" string="/var/log/remote/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log")
if $fromhost-ip != '127.0.0.1' then ?RemoteHost
& stop
  1. Create log directory:
sudo mkdir -p /var/log/remote
sudo chown syslog:adm /var/log/remote
  1. Restart rsyslog:
sudo systemctl restart rsyslog
sudo systemctl enable rsyslog

Procedure — Configure SNMP

  1. Install SNMP daemon:
sudo apt install -y snmpd snmp
  1. Configure SNMP:
sudo nano /etc/snmp/snmpd.conf

Key settings:

agentaddress udp:161
rocommunity public 10.250.1.0/24
sysLocation "Azure Local Management"
sysContact "Azure Local Cloud Azure Local Cloud"
  1. Restart SNMP:
sudo systemctl restart snmpd
sudo systemctl enable snmpd

Procedure — Configure Log Rotation

  1. Add logrotate config:
sudo nano /etc/logrotate.d/remote-syslog

Content:

/var/log/remote/*/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

Validation

  • rsyslog listening: sudo ss -ulnp | grep 514
  • SNMP listening: sudo ss -ulnp | grep 161
  • Test syslog: logger -n 10.250.1.39 -P 514 "Test message" from another host
  • Logs appearing: ls /var/log/remote/

Validation

  • rsyslog listening on UDP 514: sudo ss -ulnp | grep 514
  • SNMP listening on UDP 161: sudo ss -ulnp | grep 161
  • Test syslog reception from management subnet
  • Log rotation configured: logrotate -d /etc/logrotate.d/remote-syslog
  • Azure Monitor Agent reporting to Log Analytics

CAF/WAF Landing Zone Model

NDM server configuration is identical regardless of landing zone model — it runs on the VM in the Management subscription.

Landing Zone Placement

FieldValueConfig Path
SubscriptionManagement subscriptionazure.subscriptions.management.id
Target VMNDM in Management spokeazure_vms.ndm

Execution Options

The execution is the same as Single Subscription — the scripts run on the VM regardless of which subscription it resides in.


Troubleshooting

IssueRoot CauseRemediation
rsyslog not receivingNSG blocking UDP 514Add inbound rule for UDP 514 from management subnet
SNMP not respondingsnmpd not startedsudo systemctl start snmpd and check config syntax
Disk filling with logsLog rotation not activeVerify logrotate cron job: systemctl status logrotate.timer
SSH connection refusedsshd not running or key issueCheck systemctl status sshd and authorized_keys
Package install failsNo internet accessVerify NAT Gateway (Task 07) and DNS resolution

PreviousUpNext
Task 02: Utility ServerVM ConfigurationTask 04: Lighthouse Server

Version Control

  • Created: 2025-09-15 by Hybrid Cloud Solutions
  • Last Updated: 2026-03-20 by Hybrid Cloud Solutions
  • Version: 5.0.0
  • Tags: azure-local, ndm, syslog, snmp, network-monitoring, linux
  • Keywords: NDM, syslog, SNMP, rsyslog, network monitoring, Ubuntu
  • Author: Hybrid Cloud Solutions