Takip et

Nagios Uyarılarını Alerta ile CentOS 7 Üzerinde İzleme

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ı ye

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.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.