Nagios Uyarılarını Alerta ile CentOS 7 Üzerinde İzleme
Bu makale, sistem ve ağ izlemede yaygın olarak kullanılan Nagios’un güçlü uyarı yeteneklerini, modern ve merkezi bir uyarı yönetim sistemi olan Alerta ile CentOS 7 sunucuları üzerinde nasıl entegre edeceğinizi detaylı bir şekilde açıklamaktadır. Günümüzün karmaşık IT altyapılarında, farklı izleme araçlarından gelen uyarıları tek bir noktadan yönetmek, operasyonel verimliliği artırmak ve müdahale sürelerini kısaltmak kritik öneme sahiptir. Nagios’un detaylı izleme yeteneklerini Alerta’nın zengin kullanıcı arayüzü, uyarı gruplama, deduplikasyon ve bildirim yönetimi özellikleriyle birleştirmek, bu ihtiyacı karşılamak için etkili bir çözüm sunar.
Giriş: Neden Nagios ve Alerta?
Modern IT ortamları, sunucular, ağ cihazları, uygulamalar ve hizmetler gibi sayısız bileşenden oluşur. Bu bileşenlerin sorunsuz çalışmasını sağlamak için sürekli izleme şarttır. Nagios, uzun yıllardır bu alanda kendini kanıtlamış, esnek ve kapsamlı bir izleme aracıdır. Ancak, Nagios’un uyarı yönetimi ve görselleştirme yetenekleri, özellikle büyük ve dinamik ortamlarda, bazen yetersiz kalabilir. Uyarıların merkezi bir panoda toplanması, yinelenen uyarıların filtrelenmesi, uyarı durumlarının kolayca güncellenmesi ve farklı ekiplere yönlendirilmesi gibi ihtiyaçlar ortaya çıkar.
İşte tam bu noktada Alerta devreye girer. Alerta, çeşitli kaynaklardan gelen uyarıları toplayan, bunları tek bir merkezi konsolda birleştiren, deduplike eden, gruplayan ve zengin bir kullanıcı arayüzü üzerinden sunan açık kaynaklı bir uyarı yönetim sistemidir. Alerta, uyarıların yaşam döngüsünü (açık, beklemede, kapalı) yönetme, uyarıları notlarla zenginleştirme, farklı ekiplere atama ve otomatik eylemler tetikleme gibi gelişmiş özellikler sunar.
Nagios’un derinlemesine izleme ve problem tespiti yeteneklerini Alerta’nın üstün uyarı yönetimi ve görselleştirme özellikleriyle birleştirmek, IT operasyonları için güçlü, verimli ve kullanıcı dostu bir çözüm sunar. Bu entegrasyon sayesinde, Nagios tarafından algılanan tüm olaylar anında Alerta panosunda görünür hale gelir, böylece operatörler sorunları daha hızlı teşhis edebilir ve çözebilir.
Ön Koşullar
Bu makaledeki adımları başarıyla uygulamak için aşağıdaki ön koşulların yerine getirilmesi gerekmektedir:
* CentOS 7 Sunucusu: Hem Nagios hem de Alerta için ayrı veya aynı bir CentOS 7 sunucusu (tercihen ayrı sunucular, ancak bu rehberde entegrasyonu kolaylaştırmak için aynı sunucu üzerinde kurulum adımları gösterilecektir).
* Nagios Kurulumu: CentOS 7 üzerinde çalışan ve temel izleme yapılandırmasına sahip bir Nagios Core veya Nagios XI kurulumu. Bu makale Nagios kurulumunu kapsamamaktadır.
* Sudo Yetkileri: Kurulum ve yapılandırma işlemleri için sudo yetkilerine sahip bir kullanıcı hesabı.
* Temel Linux Bilgisi: Komut satırı, dosya sistemi ve metin düzenleyici (vi, nano) kullanımı hakkında temel bilgi.
* Ağ Bağlantısı: Sunucunun internete erişimi olmalı ve gerekli portlar (HTTP/HTTPS, Alerta API portu, MongoDB portu) güvenlik duvarında açık olmalıdır.
Nagios’a Kısa Bir Bakış
Nagios, sunucuların, ağ cihazlarının ve hizmetlerin durumunu proaktif olarak izleyen, performans metriklerini toplayan ve belirlenen eşik değerler aşıldığında uyarılar gönderen güçlü bir izleme sistemidir. Temel olarak, Nagios şu bileşenlerden oluşur:
* Nagios Core: İzleme mantığını yürüten ana motor.
* Pluginler: Çeşitli hizmetleri ve kaynakları izlemek için kullanılan harici programlar.
* Yapılandırma Dosyaları: İzlenecek ana bilgisayarlar, hizmetler, komutlar, zaman aralıkları ve bildirim ayarlarının tanımlandığı dosyalar.
* Web Arayüzü: İzlenen nesnelerin durumunu görselleştiren ve uyarıları gösteren bir arayüz.
Nagios, bir problem tespit ettiğinde, tanımlanan komutlar ve bildirim mekanizmaları aracılığıyla e-posta, SMS veya özel betikler çalıştırarak yöneticileri bilgilendirir. Bizim amacımız, bu özel betik mekanizmasını kullanarak Nagios uyarılarını Alerta’ya iletmektir.
Alerta’ya Kısa Bir Bakış
Alerta, modern bir uyarı yönetim sistemidir. Temel özellikleri şunlardır:
* Merkezi Uyarı Panosu: Farklı kaynaklardan gelen tüm uyarıları tek bir arayüzde toplar.
* Deduplikasyon: Aynı uyarıları otomatik olarak birleştirir, böylece uyarı selini önler.
* Gruplama: İlişkili uyarıları tek bir olayın parçası olarak gruplar.
* Zengin Kullanıcı Arayüzü: Uyarıları filtreleme, sıralama, not ekleme, durumunu değiştirme ve sahiplenme gibi özellikler sunar.
* API Odaklı: Tüm işlevsellik bir REST API üzerinden sunulur, bu da diğer sistemlerle entegrasyonu kolaylaştırır.
* Bildirim Entegrasyonları: E-posta, Slack, PagerDuty gibi popüler bildirim servisleriyle entegre olabilir.
* Kurallar ve Kara Listeler: Uyarıları işlemek veya belirli uyarıları bastırmak için kurallar tanımlama yeteneği.
Alerta’nın mimarisi genellikle bir sunucu (API), bir veritabanı (MongoDB veya PostgreSQL) ve bir web UI’dan oluşur. Python ile geliştirilmiştir ve hafif yapısıyla dikkat çeker.
CentOS 7 Üzerine Alerta Kurulumu
Alerta’yı CentOS 7 üzerine kurmak için aşağıdaki adımları izleyeceğiz. MongoDB’yi veritabanı olarak kullanacağız ve Alerta sunucusunu Nginx arkasına alarak web arayüzüne erişim sağlayacağız.
1. Sistem Güncellemesi ve Ön Gerekli Paketlerin Kurulumu
İlk olarak, sisteminizi güncelleyin ve Alerta için gerekli olan Python 3, pip ve diğer temel geliştirme araçlarını kurun:
sudo yum update -y
sudo yum install epel-release -y
sudo yum install python3 python3-pip python3-devel gcc git -y
sudo yum install mongodb-org -y # MongoDB kurulumu için gerekli paket
Eğer python3 komutu mevcut değilse veya eski bir sürümse, python36 veya python38 gibi paketleri kurmanız gerekebilir ve alternatives komutuyla varsayılan Python 3 sürümünü ayarlamanız gerekebilir.
2. MongoDB Kurulumu ve Yapılandırması
Alerta, uyarı verilerini depolamak için bir veritabanına ihtiyaç duyar. Bu rehberde MongoDB kullanacağız.
MongoDB Repository Ekleme:
MongoDB’nin en son sürümünü kurmak için bir repository dosyası oluşturun:
sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo
İçeriği aşağıdaki gibi yapıştırın (sürüm numarası değişebilir, güncel sürüm için MongoDB dokümantasyonunu kontrol edin):
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
MongoDB Kurulumu:
sudo yum install -y mongodb-org
MongoDB’yi Başlatma ve Etkinleştirme:
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod
MongoDB’nin varsayılan olarak 27017 portunda çalıştığını unutmayın. Güvenlik duvarınızda bu portun açık olması gerekebilir, ancak Alerta ve MongoDB aynı sunucuda çalışıyorsa sadece localhost üzerinden erişim yeterli olacaktır.
3. Alerta Sunucusunun Kurulumu
pip kullanarak Alerta sunucusunu ve istemcisini kurun:
sudo pip3 install alerta alerta-server alerta-client
Bu komut Alerta çekirdek bileşenlerini ve komut satırı istemcisini kuracaktır.
4. Alerta Sunucusu Yapılandırması
Alerta’nın yapılandırma dosyası alerta.conf genellikle /etc/alerta/alerta.conf veya kullanıcının ana dizinindeki .alerta.d/alerta.conf konumunda bulunur. Sistem genelinde bir yapılandırma için /etc/alerta dizinini oluşturalım:
sudo mkdir -p /etc/alerta
sudo vi /etc/alerta/alerta.conf
Aşağıdaki temel yapılandırmayı ekleyin. Daha fazla seçenek için Alerta dokümantasyonuna bakabilirsiniz.
[DEFAULT]
DEBUG = True
HOST = 0.0.0.0
PORT = 8080
BASE_URL = /api
MONGO_URI = mongodb://localhost:27017/alerta
DATABASE = alerta
CORS_ORIGINS = *
AUTH_REQUIRED = False # Test ortamı için False, üretim için True olmalı
SECRET_KEY = "buraya-cok-guclu-bir-sifre-yazin" # Üretim ortamı için mutlaka değiştirin
TOKEN_EXPIRE_DAYS = 30
[webhooks]
Önemli Not: AUTH_REQUIRED = False ayarı, test ortamı için uygun olsa da, üretim ortamında mutlaka True olarak ayarlanmalı ve kimlik doğrulama mekanizmaları (API key, OAuth2) yapılandırılmalıdır. SECRET_KEY değerini de güçlü ve benzersiz bir anahtarla değiştirin.
5. Alerta’yı systemd Servisi Olarak Yapılandırma
Alerta sunucusunun sistem açılışında otomatik olarak başlaması ve bir servis olarak yönetilmesi için bir systemd birimi oluşturalım:
sudo vi /etc/systemd/system/alerta.service
İçeriği aşağıdaki gibi yapıştırın:
[Unit]
Description=Alerta API Server
After=network.target mongod.service
[Service]
ExecStart=/usr/local/bin/alertad --config /etc/alerta/alerta.conf
WorkingDirectory=/usr/local/bin
User=alerta # Bu kullanıcıyı oluşturmanız gerekecek
Group=alerta # Bu grubu oluşturmanız gerekecek
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Alerta servisini çalıştırmak için özel bir kullanıcı ve grup oluşturalım:
sudo groupadd alerta
sudo useradd -r -g alerta -s /sbin/nologin alerta
sudo chown -R alerta:alerta /etc/alerta # Yapılandırma dosyasının sahibini değiştirin
Şimdi systemd yapılandırmasını yeniden yükleyin, Alerta servisini başlatın ve etkinleştirin:
sudo systemctl daemon-reload
sudo systemctl start alerta
sudo systemctl enable alerta
sudo systemctl status alerta
Alerta API’sinin varsayılan olarak 8080 portunda çalıştığını doğrulayın:
sudo netstat -tnlp | grep 8080
6. Nginx ile Ters Proxy ve Web UI Kurulumu (İsteğe Bağlı ama Önerilir)
Alerta’nın web arayüzünü (UI) sunmak ve API’ye güvenli erişim sağlamak için Nginx’i ters proxy olarak kullanmak iyi bir uygulamadır.
Nginx Kurulumu:
sudo yum install -y nginx
Nginx Yapılandırması:
sudo vi /etc/nginx/conf.d/alerta.conf
Aşağıdaki yapılandırmayı ekleyin (alan adınızı your_domain.com ile değiştirin):
server {
listen 80;
server_name your_domain.com; # Kendi alan adınızı veya IP adresinizi buraya yazın
location / {
root /usr/share/nginx/html/alerta-web; # Alerta web UI dosyalarının yolu
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}
Alerta Web UI Dosyalarını İndirme:
Alerta’nın web arayüzü statik HTML, CSS ve JavaScript dosyalarından oluşur. Bunları Nginx’in sunacağı bir dizine indirmemiz gerekiyor:
sudo mkdir -p /usr/share/nginx/html/alerta-web
cd /usr/share/nginx/html/alerta-web
sudo curl -s https://api.github.com/repos/alerta/alerta-web/releases/latest \
| grep "browser_download_url.*zip" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -
sudo unzip alerta-web-*.zip
sudo rm alerta-web-*.zip
Nginx’i Başlatma ve Etkinleştirme:
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
7. Güvenlik Duvarı Yapılandırması
Eğer sunucunuzda firewalld çalışıyorsa, gerekli portları açmanız gerekir:
sudo firewall-cmd --permanent --add-port=80/tcp # Nginx HTTP
sudo firewall-cmd --permanent --add-port=443/tcp # Eğer HTTPS kullanacaksanız
sudo firewall-cmd --reload
Artık web tarayıcınızdan http://your_domain.com adresine giderek Alerta web arayüzüne erişebilmeniz gerekir. Henüz bir uyarı olmadığı için pano boş görünecektir.
Nagios ile Alerta Entegrasyonu
Şimdi Nagios’un uyarılarını Alerta’ya nasıl göndereceğimizi yapılandıracağız. Bu, Nagios’un bildirim komutlarını kullanarak bir Python betiği çalıştırmak suretiyle yapılacaktır.
1. Alerta API Key Oluşturma (Eğer Kimlik Doğrulama Açıksa)
Eğer Alerta yapılandırmanızda AUTH_REQUIRED = True ise, Nagios’un Alerta API’sine erişebilmesi için bir API anahtarı oluşturmanız gerekir.
alerta key create --username nagios --text "Nagios API Key" --expire 1y
Bu komut size bir API anahtarı verecektir. Bu anahtarı daha sonra kullanmak üzere kaydedin. Eğer AUTH_REQUIRED = False ise bu adıma gerek yoktur.
2. Nagios İçin Alerta Bildirim Betiği Oluşturma
Nagios, bir uyarı durumunda belirli bir komutu çalıştırabilir. Bu komut, uyarı bilgilerini Alerta API’sine gönderecek bir Python betiği olacaktır.
Nagios eklentilerinin genellikle bulunduğu dizine gidin ve betiği oluşturun:
sudo mkdir -p /usr/local/nagios/libexec/alerta
sudo vi /usr/local/nagios/libexec/alerta/send_to_alerta.py
Aşağıdaki Python kodunu yapıştırın. Bu betik, Nagios’tan gelen ortam değişkenlerini veya komut satırı argümanlarını alır ve bunları Alerta’nın alerta-client‘ı aracılığıyla Alerta API’sine gönderir.
#!/usr/bin/env python3
import os
import sys
import subprocess
import json
Alerta API Key (Eğer AUTH_REQUIRED = True ise buraya yapıştırın)
ALERTA_API_KEY = "YOUR_ALERTA_API_KEY"
Alerta API URL
ALERTA_API_URL = "http://127.0.0.1:8080/api" # Veya Nginx proxy URL'niz: http://your_domain.com/api
Nagios ortam değişkenlerinden veya komut satırı argümanlarından uyarı bilgilerini al
Nagios, bildirim komutunu çalıştırırken bu değişkenleri ayarlar.
Bu betik, komut satırı argümanlarını tercih eder.
NOTIFICATIONTYPE = os.environ.get('NAGIOS_NOTIFICATIONTYPE') or sys.argv[1]
HOSTNAME = os.environ.get('NAGIOS_HOSTNAME') or sys.argv[2]
HOSTADDRESS = os.environ.get('NAGIOS_HOSTADDRESS') or sys.argv[3]
HOSTSTATE = os.environ.get('NAGIOS_HOSTSTATE') or sys.argv[4]
HOSTOUTPUT = os.environ.get('NAGIOS_HOSTOUTPUT') or sys.argv[5]
SERVICEDESC = os.environ.get('NAGIOS_SERVICEDESC') or (sys.argv[6] if len(sys.argv) > 6 else None)
SERVICESTATE = os.environ.get('NAGIOS_SERVICESTATE') or (sys.argv[7] if len(sys.argv) > 7 else None)
SERVICEOUTPUT = os.environ.get('NAGIOS_SERVICEOUTPUT') or (sys.argv[8] if len(sys.argv) > 8 else None)
Severity mapping from Nagios state to Alerta severity
def get_severity(nagios_state, notification_type):
if notification_type == "RECOVERY":
return "ok"
elif nagios_state == "UP" or nagios_state == "OK":
return "ok"
elif nagios_state == "WARNING":
return "warning"
elif nagios_state == "CRITICAL" or nagios_state == "DOWN":
return "critical"
elif nagios_state == "UNKNOWN":
return "indeterminate"
else:
return "normal" # Default or other states
Resource, event, environment, service, group, value, text, tags, attributes, correlation, raw_data, timeout, customer, service_id, group_id, origin, type, repeat
def send_alerta_alert():
if SERVICEDESC: # Service alert
resource = HOSTNAME
event = SERVICEDESC
severity = get_severity(SERVICESTATE, NOTIFICATIONTYPE)
text = SERVICEOUTPUT
service = [SERVICEDESC]
group = "Service"
attributes = {
"host_address": HOSTADDRESS,
"nagios_state": SERVICESTATE,
"notification_type": NOTIFICATIONTYPE
}
else: # Host alert
resource = HOSTNAME
event = "Host Status"
severity = get_severity(HOSTSTATE, NOTIFICATIONTYPE)
text = HOSTOUTPUT
service = ["Host"]
group = "Host"
attributes = {
"host_address": HOSTADDRESS,
"nagios_state": HOSTSTATE,
"notification_type": NOTIFICATIONTYPE
}
cmd = [
"alerta",
"send",
"--resource", resource,
"--event", event,
"--severity", severity,
"--environment", "Production", # Ortamınızı buraya yazın (Development, Staging, Production)
"--service", ",".join(service),
"--group", group,
"--value", severity, # Value olarak severity'yi kullanabiliriz
"--text", text,
"--origin", "nagios/{}".format(HOSTNAME),
"--type", "nagiosAlert"
]
for key, value in attributes.items():
cmd.extend(["--attribute", "{}={}".format(key, value)])
# API Key varsa ekle
# if ALERTA_API_KEY:
# cmd.extend(["--api-key", ALERTA_API_KEY])
# Alerta API URL'ini belirt
cmd.extend(["--url", ALERTA_API_URL])
try:
print("Sending alert to Alerta: {}".format(" ".join(cmd)))
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
print("Alerta response: {}".format(result.stdout))
except subprocess.CalledProcessError as e:
print("Error sending alert to Alerta: {}".format(e.stderr))
sys.exit(1)
except Exception as e:
print("An unexpected error occurred: {}".format(e))
sys.exit(1)
if __name__ == "__main__":
send_alerta_alert()
Betiğe çalıştırma izni verin:
sudo chmod +x /usr/local/nagios/libexec/alerta/send_to_alerta.py
sudo chown nagios:nagios /usr/local/nagios/libexec/alerta/send_to_alerta.py
Betiğin Açıklaması:
* Ortam Değişkenleri: Betik, Nagios’un bildirim sırasında ayarladığı ortam değişkenlerini (NAGIOS_HOSTNAME, NAGIOS_SERVICEDESC vb.) okur.
* get_severity Fonksiyonu: Nagios durumlarını (OK, WARNING, CRITICAL, DOWN) Alerta’nın önem derecelerine (ok, warning, critical) dönüştürür. RECOVERY durumunda ok olarak ayarlar.
* send_alerta_alert Fonksiyonu:
* alerta send komutunu kullanarak bir uyarı oluşturur.
* resource, event, severity, text, service, group gibi Alerta alanlarını Nagios verileriyle doldurur.
* --environment ve --origin gibi ek bilgiler sağlar.
* Nagios’tan gelen tüm ilgili verileri attributes olarak Alerta’ya gönderir.
* subprocess.run ile alerta komutunu çalıştırır.
3. Nagios Yapılandırması: Komut Tanımlama
Nagios’un bu betiği bir bildirim komutu olarak kullanabilmesi için commands.cfg dosyasına yeni bir komut tanımlamamız gerekir.
sudo vi /usr/local/nagios/etc/objects/commands.cfg
Dosyanın sonuna aşağıdaki komut tanımlarını ekleyin:
# 'notify-host-by-alerta' komutu tanımı
define command {
command_name notify-host-by-alerta
command_line /usr/local/nagios/libexec/alerta/send_to_alerta.py "$NOTIFICATIONTYPE$" "$HOSTNAME$" "$HOSTADDRESS$" "$HOSTSTATE$" "$HOSTOUTPUT$"
}
'notify-service-by-alerta' komutu tanımı
define command {
command_name notify-service-by-alerta
command_line /usr/local/nagios/libexec/alerta/send_to_alerta.py "$NOTIFICATIONTYPE$" "$HOSTNAME$" "$HOSTADDRESS$" "$HOSTSTATE$" "$HOSTOUTPUT$" "$SERVICEDESC$" "$SERVICESTATE$" "$SERVICEOUTPUT$"
}
Bu komutlar, Python betiğine Nagios’un sağladığı çeşitli makroları (ortam değişkenleri) argüman olarak iletir.
4. Nagios Yapılandırması: İletişim Kişisi ve Zaman Aralığı Tanımlama
Alerta’ya uyarı göndermek için özel bir “iletişim kişisi” ve bildirim zaman aralığı tanımlamak iyi bir uygulamadır.
sudo vi /usr/local/nagios/etc/objects/contacts.cfg
Aşağıdaki tanımı ekleyin:
define contact {
contact_name alerta-contact
use generic-contact
host_notifications_enabled 1
service_notifications_enabled 1
host_notification_period 24x7
service_notification_period 24x7
host_notification_options d,u,r,f,s
service_notification_options w,u,c,r,f,s
host_notification_commands notify-host-by-alerta
service_notification_commands notify-service-by-alerta
email alerta@localhost # E-posta adresi gerekli ama kullanılmayacak
}
Ardından, bu iletişim kişisini izlemek istediğiniz ana bilgisayar veya hizmet gruplarınıza ekleyin. Örneğin, contactgroups.cfg dosyasında:
sudo vi /usr/local/nagios/etc/objects/contactgroups.cfg
Mevcut bir admins grubuna alerta-contact‘ı ekleyebilirsiniz veya yeni bir grup oluşturabilirsiniz:
define contactgroup {
contactgroup_name alerta-users
alias Alerta Users
members alerta-contact
}
5. Nagios Yapılandırması: Ana Bilgisayar ve Hizmet Bildirimlerini Etkinleştirme
Son olarak, Nagios’un belirli ana bilgisayarlar ve hizmetler için Alerta’ya bildirim göndermesini sağlamak için ilgili ana bilgisayar ve hizmet tanımlarını güncelleyin.
Örneğin, bir ana bilgisayar tanımında:
sudo vi /usr/local/nagios/etc/objects/localhost.cfg
define host {
use linux-server
host_name localhost
alias localhost
address 127.0.0.1
contact_groups alerta-users # Buraya ekleyin
}
Ve bir hizmet tanımında:
define service {
use local-service
host_name localhost
service_description Current Users
check_command check_users!20!50
contact_groups alerta-users # Buraya ekleyin
}
contact_groups veya contacts direktifine alerta-contact veya alerta-users grubunu ekleyerek bu ana bilgisayar veya hizmet için Alerta bildirimlerini etkinleştirmiş olursunuz.
6. Nagios Yapılandırmasını Kontrol Etme ve Yeniden Başlatma
Tüm Nagios yapılandırma değişikliklerini yaptıktan sonra, herhangi bir hata olup olmadığını kontrol etmek için Nagios yapılandırmasını doğrulayın:
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Eğer çıktı 0 errors diyorsa, Nagios servisini yeniden başlatabilirsiniz:
sudo systemctl restart nagios
sudo systemctl status nagios
Entegrasyonu Test Etme
Nagios ve Alerta arasındaki entegrasyonu test etmek için, Nagios’un izlediği bir hizmetin veya ana bilgisayarın durumunu kasıtlı olarak bir uyarı durumuna getirebiliriz.
Örneğin, check_http ile izlenen bir web sunucunuz varsa, web sunucusu servisini durdurarak bir CRITICAL durum tetikleyebilirsiniz:
sudo systemctl stop httpd # Apache için
veya
sudo systemctl stop nginx # Nginx için
Birkaç dakika bekledikten sonra:
1. Nagios Web Arayüzü: Nagios web arayüzünde ilgili hizmetin veya ana bilgisayarın CRITICAL veya DOWN durumuna geçtiğini ve bir bildirimin gönderildiğini görmelisiniz.
2. Alerta Web Arayüzü: Alerta web arayüzünü (örneğin, http://your_domain.com) açın. Yeni bir uyarının, Nagios’tan gelen bilgilerle birlikte (kaynak, olay, önem derecesi, metin, nitelikler) göründüğünü doğrulamalısınız.
3. Alerta Logları: Alerta sunucusunun loglarını kontrol edin (sudo journalctl -u alerta veya /var/log/alerta/alerta.log eğer özel loglama yapılandırdıysanız) uyarıların başarılı bir şekilde alındığını gösteren girdiler olup olmadığını kontrol edin.
4. Python Betiği Logları: Eğer betikte print ifadeleri kullandıysanız, Nagios loglarında veya send_to_alerta.py betiğinin çalıştırıldığı ortamın stdout/stderr çıktılarında hata olup olmadığını kontrol edin.
Sorunu çözdükten sonra (örneğin, web sunucusu servisini yeniden başlatarak), Nagios’un bir RECOVERY bildirimi göndermesi ve Alerta’daki uyarının durumunun ok olarak güncellenmesi gerekir.
Gelişmiş Konular
Bu temel entegrasyonun ötesinde, Alerta’nın sunduğu bazı gelişmiş özellikleri kullanarak uyarı yönetiminizi daha da optimize edebilirsiniz:
1. Alerta Kuralları ve Kara Listeler
Alerta, gelen uyarıları işlemek veya belirli uyarıları bastırmak için kurallar tanımlamanıza olanak tanır. Örneğin, bakım pencereleri sırasında gelen uyarıları otomatik olarak susturabilir veya belirli bir önem derecesine sahip uyarıları otomatik olarak kapatabilirsiniz.
2. Kullanıcı Yönetimi ve Kimlik Doğrulama
Üretim ortamlarında AUTH_REQUIRED = True olmalıdır. Alerta, dahili kullanıcı yönetimi, API anahtarları veya OAuth2 (GitHub, Google vb.) aracılığıyla kimlik doğrulamayı destekler. Farklı kullanıcılar için farklı roller ve yetkilendirmeler tanımlayabilirsiniz.
3. Bildirim Entegrasyonları
Alerta, e-posta, Slack, PagerDuty, OpsGenie gibi birçok popüler bildirim hizmetiyle entegrasyonu destekler. Bu sayede, Alerta’ya gelen uyarıları ilgili ekiplere veya kişilere otomatik olarak yönlendirebilirsiniz.
4. Yüksek Erişilebilirlik ve Ölçeklenebilirlik
Büyük ortamlar için Alerta sunucusunu ve MongoDB’yi kümeleyerek yüksek erişilebilirlik ve ölçeklenebilirlik sağlayabilirsiniz. Birden fazla Alerta API sunucusu, bir yük dengeleyici arkasında çalışabilir ve MongoDB replika kümeleri veri yedekliliği ve performans sunar.
5. Alerta UI Özelleştirme
Alerta’nın web arayüzü, CSS ve JavaScript enjeksiyonları ile özelleştirilebilir. Logo, renkler ve bazı UI öğelerini markanıza veya tercihlerinize göre değiştirebilirsiniz.
Sorun Giderme
Entegrasyon sırasında karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:
* Uyarılar Alerta’ya Ulaşmıyor:
* Nagios Loglarını Kontrol Edin: nagios.log dosyasında bildirim komutunun çalıştırıldığına dair bir hata olup olmadığını kontrol edin.
* Python Betiği İzinleri: send_to_alerta.py betiğinin çalıştırma izinlerine (chmod +x) ve Nagios kullanıcısının bu betiği çalıştırabilme yetkisine sahip olduğundan emin olun.
* Alerta API Ulaşılabilirliği: curl -X GET http://127.0.0.1:8080/api/status komutuyla Alerta API’sinin çalışır durumda ve ulaşılabilir olduğunu doğrulayın.
* Alerta Loglarını Kontrol Edin: sudo journalctl -u alerta komutuyla Alerta sunucu loglarında hata olup olmadığını kontrol edin.
* API Key Hatası: Eğer AUTH_REQUIRED = True ise, betikteki API anahtarının doğru ve geçerli olduğundan emin olun.
* Alerta UI Boş veya Hatalı:
* Nginx Loglarını Kontrol Edin: /var/log/nginx/error.log dosyasında Nginx ile ilgili bir hata olup olmadığını kontrol edin.
* Alerta Web UI Dosyaları: /usr/share/nginx/html/alerta-web dizininde Alerta UI dosyalarının doğru şekilde bulunduğundan emin olun.
* Tarayıcı Konsolunu Kontrol Edin: Tarayıcınızın geliştirici araçlarını açın ve konsolda JavaScript hataları veya ağ isteklerinde sorun olup olmadığını kontrol edin.
* MongoDB Bağlantı Hatası:
* MongoDB Servisi: sudo systemctl status mongod komutuyla MongoDB servisinin çalıştığından emin olun.
* Alerta Yapılandırması: /etc/alerta/alerta.conf dosyasındaki MONGO_URI ayarının doğru olduğundan emin olun.
Sonuç
Bu makalede, Nagios’un güçlü izleme yeteneklerini Alerta’nın modern uyarı yönetim sistemiyle CentOS 7 üzerinde nasıl entegre edeceğinizi adım adım öğrendiniz. Nagios’un derinlemesine sistem ve hizmet izlemesi ile Alerta’nın merkezi, zengin ve otomatikleştirilebilir uyarı panosunu birleştirerek, IT operasyonlarınızın verimliliğini ve müdahale sürelerini önemli ölçüde artırabilirsiniz.
Kurulumdan yapılandırmaya, test etmeden sorun gidermeye kadar tüm süreçleri kapsayan bu rehber, karmaşık IT altyapılarında uyarı yönetimini basitleştirmek ve operasyonel görünürlüğü artırmak isteyen sistem yöneticileri ve DevOps mühendisleri için sağlam bir temel sunmaktadır. Bu entegrasyon, uyarı selini azaltır, kritik sorunlara odaklanmayı kolaylaştırır ve ekipler arası iletişimi güçlendirerek daha hızlı ve etkili problem çözümüne olanak tanır. Gelecekte, Alerta’nın gelişmiş özelliklerini keşfederek uyarı iş akışlarınızı daha da otomatikleştirebilir ve optimize edebilirsiniz.