Ağ İzleme ve Monitoring Araçları

Network monitoring, performance analizi ve troubleshooting için kullanılan araçlar ve teknikler. Sistem yöneticileri için kapsamlı rehber.

8 min read
1.573 words

Ağ İzleme ve Monitoring Araçları#

Ağ altyapısının sürekli izlenmesi, sistem yöneticileri için kritik öneme sahiptir. Bu rehberde ağ izleme araçları, monitoring teknikleri ve performance analizi konularını ele alacağız.

Network Monitoring Nedir?#

Network monitoring, ağ altyapısının performansını, kullanılabilirliğini ve güvenliğini sürekli olarak izleme sürecidir. Bu süreç şunları içerir:

  • Bandwidth kullanımı izleme
  • Cihaz durumu kontrolü
  • Performans metrikleri toplama
  • Alarm ve bildirim yönetimi
  • Trend analizi ve raporlama

Temel Monitoring Protokolleri#

SNMP (Simple Network Management Protocol)#

SNMP, ağ cihazlarından bilgi toplamak için kullanılan standart protokoldür.

# SNMP araçlarını yükle sudo apt-get install snmp snmp-mibs-downloader # SNMP walk komutu snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.1 # Sistem bilgilerini al snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.1.0 # Interface bilgilerini al snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.2

ICMP (Internet Control Message Protocol)#

# Ping ile erişilebilirlik testi ping -c 4 192.168.1.1 # Traceroute ile yol izleme traceroute google.com # MTU discovery ping -M do -s 1472 192.168.1.1

Nagios ile Network Monitoring#

Nagios Core Kurulumu#

# Gerekli paketleri yükle sudo apt-get update sudo apt-get install -y build-essential apache2 php openssl perl make php-gd libgd-dev libapache2-mod-php libperl-dev libssl-dev daemon wget apache2-utils unzip # Nagios kullanıcısı oluştur sudo useradd nagios sudo groupadd nagcmd sudo usermod -a -G nagcmd nagios sudo usermod -a -G nagcmd www-data # Nagios Core'u indir ve derle cd /tmp wget https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.6.tar.gz tar xzf nagios-4.4.6.tar.gz cd nagioscore-nagios-4.4.6/ ./configure --with-command-group=nagcmd make all sudo make install sudo make install-commandmode sudo make install-init sudo make install-config sudo make install-webconf # Apache'yi yeniden başlat sudo systemctl restart apache2 sudo systemctl enable apache2

Nagios Plugins Kurulumu#

# Nagios plugins'i indir ve derle cd /tmp wget https://github.com/nagios-plugins/nagios-plugins/archive/release-2.3.3.tar.gz tar xzf release-2.3.3.tar.gz cd nagios-plugins-release-2.3.3/ ./tools/setup ./configure make sudo make install

Nagios Yapılandırması#

Ana Yapılandırma Dosyası#

# /usr/local/nagios/etc/nagios.cfg cfg_file=/usr/local/nagios/etc/objects/commands.cfg cfg_file=/usr/local/nagios/etc/objects/contacts.cfg cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg cfg_file=/usr/local/nagios/etc/objects/templates.cfg cfg_file=/usr/local/nagios/etc/objects/localhost.cfg cfg_dir=/usr/local/nagios/etc/servers

Host Tanımı#

# /usr/local/nagios/etc/servers/router.cfg define host { use linux-server host_name router-01 alias Main Router address 192.168.1.1 max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 } define service { use generic-service host_name router-01 service_description PING check_command check_ping!100.0,20%!500.0,60% } define service { use generic-service host_name router-01 service_description SSH check_command check_ssh }

SNMP Monitoring#

# /usr/local/nagios/etc/objects/commands.cfg define command { command_name check_snmp_int command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o $ARG2$ -w $ARG3$ -c $ARG4$ } # Service tanımı define service { use generic-service host_name router-01 service_description Interface eth0 check_command check_snmp_int!public!1.3.6.1.2.1.2.2.1.8.1!1!2 }

Zabbix ile Advanced Monitoring#

Zabbix Server Kurulumu#

# Zabbix repository ekle wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu20.04_all.deb sudo dpkg -i zabbix-release_6.0-4+ubuntu20.04_all.deb sudo apt update # Zabbix server ve frontend yükle sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent # MySQL veritabanı oluştur sudo mysql -uroot -p mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> quit; # Veritabanı şemasını import et zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix

Zabbix Yapılandırması#

# /etc/zabbix/zabbix_server.conf DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=password # Servisleri başlat sudo systemctl restart zabbix-server zabbix-agent apache2 sudo systemctl enable zabbix-server zabbix-agent apache2

Zabbix Agent Kurulumu#

# Agent kurulumu sudo apt install zabbix-agent # /etc/zabbix/zabbix_agentd.conf Server=192.168.1.100 ServerActive=192.168.1.100 Hostname=web-server-01 # Agent'ı başlat sudo systemctl restart zabbix-agent sudo systemctl enable zabbix-agent

Custom Monitoring Scripts#

#!/bin/bash # /usr/local/bin/check_disk_usage.sh DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//') if [ $DISK_USAGE -gt 90 ]; then echo "CRITICAL - Disk usage is ${DISK_USAGE}%" exit 2 elif [ $DISK_USAGE -gt 80 ]; then echo "WARNING - Disk usage is ${DISK_USAGE}%" exit 1 else echo "OK - Disk usage is ${DISK_USAGE}%" exit 0 fi

PRTG Network Monitor#

PRTG Kurulumu (Windows)#

# PRTG Network Monitor kurulumu # 1. PRTG installer'ı indir # 2. Setup.exe'yi çalıştır # 3. Web interface'e erişim: http://localhost:8080 # SNMP sensör ekleme New-PrtgDevice -Name "Router-01" -Host "192.168.1.1" New-PrtgSensor -Device "Router-01" -Type "SNMP Traffic" -Interface "FastEthernet0/1"

LibreNMS ile Open Source Monitoring#

LibreNMS Kurulumu#

# Gerekli paketleri yükle sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install acl curl fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.4-cli php7.4-curl php7.4-fpm php7.4-gd php7.4-json php7.4-mbstring php7.4-mysql php7.4-snmp php7.4-xml php7.4-zip rrdtool snmp snmpd whois python3-pymysql python3-dotenv python3-redis python3-setuptools python3-systemd # LibreNMS kullanıcısı oluştur sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)" # LibreNMS'i indir cd /opt sudo git clone https://github.com/librenms/librenms.git sudo chown -R librenms:librenms /opt/librenms sudo chmod 771 /opt/librenms sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/ sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

LibreNMS Yapılandırması#

# Veritabanı oluştur sudo mysql -u root -p CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost'; FLUSH PRIVILEGES; exit # PHP bağımlılıklarını yükle su - librenms ./scripts/composer_wrapper.php install --no-dev exit

Cacti ile RRD-based Monitoring#

Cacti Kurulumu#

# Cacti ve gerekli paketleri yükle sudo apt-get install cacti cacti-spine # Veritabanı yapılandırması sudo mysql -u root -p CREATE DATABASE cacti; GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES; exit # Cacti veritabanını import et mysql -u cactiuser -p cacti < /usr/share/doc/cacti/cacti.sql

Network Performance Analysis#

Bandwidth Monitoring#

# iftop ile gerçek zamanlı bandwidth izleme sudo apt-get install iftop sudo iftop -i eth0 # vnstat ile uzun dönem istatistikleri sudo apt-get install vnstat vnstat -i eth0 vnstat -i eth0 -d # Günlük istatistikler vnstat -i eth0 -m # Aylık istatistikler

Network Latency Analysis#

# mtr ile sürekli traceroute sudo apt-get install mtr mtr google.com # hping3 ile advanced ping sudo apt-get install hping3 hping3 -c 10 -S -p 80 google.com

Packet Capture ve Analysis#

# tcpdump ile paket yakalama sudo tcpdump -i eth0 -w capture.pcap sudo tcpdump -i eth0 host 192.168.1.1 sudo tcpdump -i eth0 port 80 # Wireshark ile analiz sudo apt-get install wireshark wireshark capture.pcap

SNMP Monitoring Scripts#

Interface Monitoring#

#!/usr/bin/env python3 # snmp_interface_monitor.py from pysnmp.hlapi import * import sys def get_interface_stats(host, community, interface_index): for (errorIndication, errorStatus, errorIndex, varBinds) in nextCmd( SnmpEngine(), CommunityData(community), UdpTransportTarget((host, 161)), ContextData(), ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.10.' + str(interface_index))), # ifInOctets ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.16.' + str(interface_index))), # ifOutOctets lexicographicMode=False): if errorIndication: print(errorIndication) break elif errorStatus: print('%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex) - 1][0] or '?')) break else: for varBind in varBinds: print(' = '.join([x.prettyPrint() for x in varBind])) if __name__ == "__main__": if len(sys.argv) != 4: print("Usage: python3 snmp_interface_monitor.py <host> <community> <interface_index>") sys.exit(1) host = sys.argv[1] community = sys.argv[2] interface_index = sys.argv[3] get_interface_stats(host, community, interface_index)

CPU ve Memory Monitoring#

#!/bin/bash # snmp_system_monitor.sh HOST=$1 COMMUNITY=$2 if [ $# -ne 2 ]; then echo "Usage: $0 <host> <community>" exit 1 fi # CPU Load CPU_LOAD=$(snmpget -v2c -c $COMMUNITY $HOST 1.3.6.1.4.1.2021.10.1.3.1 | awk '{print $4}') echo "CPU Load: $CPU_LOAD" # Memory Usage TOTAL_MEM=$(snmpget -v2c -c $COMMUNITY $HOST 1.3.6.1.4.1.2021.4.5.0 | awk '{print $4}') FREE_MEM=$(snmpget -v2c -c $COMMUNITY $HOST 1.3.6.1.4.1.2021.4.6.0 | awk '{print $4}') USED_MEM=$((TOTAL_MEM - FREE_MEM)) MEM_PERCENT=$((USED_MEM * 100 / TOTAL_MEM)) echo "Memory Usage: $MEM_PERCENT% ($USED_MEM KB / $TOTAL_MEM KB)" # Disk Usage DISK_USAGE=$(snmpwalk -v2c -c $COMMUNITY $HOST 1.3.6.1.4.1.2021.9.1.9) echo "Disk Usage:" echo "$DISK_USAGE"

Alerting ve Notification#

Email Notifications#

#!/bin/bash # send_alert.sh SUBJECT="$1" MESSAGE="$2" EMAIL="[email protected]" echo "$MESSAGE" | mail -s "$SUBJECT" "$EMAIL"

Slack Notifications#

#!/usr/bin/env python3 # slack_notify.py import requests import json import sys def send_slack_message(webhook_url, message): payload = { 'text': message, 'username': 'Monitoring Bot', 'icon_emoji': ':warning:' } response = requests.post(webhook_url, data=json.dumps(payload)) return response.status_code == 200 if __name__ == "__main__": if len(sys.argv) != 3: print("Usage: python3 slack_notify.py <webhook_url> <message>") sys.exit(1) webhook_url = sys.argv[1] message = sys.argv[2] if send_slack_message(webhook_url, message): print("Message sent successfully") else: print("Failed to send message")

Network Topology Discovery#

LLDP ile Topology Discovery#

# LLDP daemon kurulumu sudo apt-get install lldpd # LLDP bilgilerini görüntüle sudo lldpcli show neighbors # LLDP detaylı bilgi sudo lldpcli show neighbors detail

CDP ile Cisco Discovery#

# CDP bilgilerini SNMP ile al snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.4.1.9.9.23.1.2.1.1.6

Performance Tuning#

SNMP Optimization#

# /etc/snmp/snmpd.conf # Gereksiz MIB'leri devre dışı bırak view systemonly included .1.3.6.1.2.1.1 view systemonly included .1.3.6.1.2.1.25.1 # Cache ayarları cacheTimeout 300

Database Optimization#

-- MySQL optimization for monitoring databases SET GLOBAL innodb_buffer_pool_size = 1073741824; -- 1GB SET GLOBAL query_cache_size = 268435456; -- 256MB SET GLOBAL max_connections = 200; -- Index optimization CREATE INDEX idx_timestamp ON monitoring_data(timestamp); CREATE INDEX idx_host_service ON monitoring_data(host_id, service_id);

Troubleshooting#

SNMP Troubleshooting#

# SNMP bağlantısını test et snmpwalk -v2c -c public -t 10 192.168.1.1 1.3.6.1.2.1.1.1 # SNMP debug snmpwalk -v2c -c public -d 192.168.1.1 1.3.6.1.2.1.1.1 # SNMP agent durumunu kontrol et sudo systemctl status snmpd sudo netstat -ulnp | grep :161

Network Connectivity Issues#

# Temel bağlantı testi ping -c 4 192.168.1.1 telnet 192.168.1.1 161 # Firewall kontrolü sudo iptables -L -n sudo ufw status # DNS resolution testi nslookup monitoring-server.company.com dig monitoring-server.company.com

Sonuç#

Network monitoring, IT altyapısının sağlıklı çalışması için kritik öneme sahiptir. Bu rehberde ele aldığımız konular:

  • Temel monitoring protokolleri (SNMP, ICMP)
  • Nagios, Zabbix, LibreNMS gibi monitoring araçları
  • Performance analysis ve troubleshooting
  • Custom monitoring scripts
  • Alerting ve notification sistemleri

Etkili network monitoring için:

  • Uygun araçları seçin ve yapılandırın
  • Proactive monitoring stratejileri geliştirin
  • Alerting sistemlerini optimize edin
  • Düzenli olarak monitoring verilerini analiz edin

Bir sonraki yazımızda sistem güvenliği ve hardening konularını ele alacağız.