Нестабильное поведение Nagios при отправке уведомлений по электронной почте

Мне очень сложно настроить nagios3, чтобы он делал то, что я хочу. Слишком много файлов конфигурации и не уверен, в чем именно проблема, поскольку все кажется правильным.

Сначала уведомления отправлялись для неработающих хостов и критических служб, затем я хотел настроить его так, чтобы он также отправлял уведомления о восстановлении, и теперь он отправляет только их, но не для всех.

Я хочу настроить его так, чтобы он использовал общий сервис в качестве шаблона, а затем настраивал дополнительные детали, если мне нужно, но он не играет в мяч, вот мои файлы конфигурации, посмотрите, видите ли вы что-нибудь не так:

Я хочу просто. Отправлять электронное письмо, когда хост не работает, когда обслуживание критично, и когда он восстанавливается - вот и все!

---- Файл contacts.cfg ---

define contact{
        contact_name                    admin
        alias                           administrator
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    u,c,r
        host_notification_options       d,u,r
        service_notification_commands   notify-service-by-email
        host_notification_commands      notify-host-by-email
        email                           admins@host.com
        }


define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 admin
        }

------------- -------- EOF ----------

------ файл generic-service.cfg ---------

define service{
        name                            generic-service ; The 'name' of this service template
        active_checks_enabled           1       ; Active service checks are enabled
        passive_checks_enabled          1       ; Passive service checks are enabled/accepted
        parallelize_check               1       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
        obsess_over_service             1       ; We should obsess over this service (if necessary)
        check_freshness                 0       ; Default is to NOT check service 'freshness'
        notifications_enabled           1       ; Service notifications are enabled
        event_handler_enabled           1       ; Service event handler is enabled
        flap_detection_enabled          1       ; Flap detection is enabled
        failure_prediction_enabled      1       ; Failure prediction is enabled
        process_perf_data               1       ; Process performance data
        retain_status_information       1       ; Retain status information across program restarts
        retain_nonstatus_information    1       ; Retain non-status information across program restarts
        notification_interval           0       ; Only send notifications on status change by default.
        is_volatile                     0
        check_period                    24x7
        normal_check_interval           1
        retry_check_interval            1
        max_check_attempts              4
        notification_period             24x7
        notification_options            w,u,c,r
        contact_groups                  admins
        register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }

---- ----------- EOF --------

---- общий-хост. serverPort = 12000 serverSocket = сокет (AF_INET, SOCK_DGRAM) serverSocket.bind (('...

Итак, у меня есть этот сервер python, который просто возвращает предложение в верхнем регистре, которое было введено в качестве входных данных:

from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('192.168.1.2', serverPort))
print "The server is ready to receive on port: {}".format(serverPort)
while 1:
    message, clientAddress = serverSocket.recvfrom(2048)
    print clientAddress, message
    modifiedMessage = message.upper()
    serverSocket.sendto(modifiedMessage, clientAddress)

От этого клиента:

from socket import *

serverName = "192.168.1.3"
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = raw_input("Input lowercase sentence:")
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()

Все работает должным образом на localhost , но когда я выполняю server.py на одном компьютере и запускаю client.py на другом компьютере, клиент не может связаться с server.py .
] Кроме того, я даже не могу подключиться к server.py через telnet на том же компьютере, где работает server.py ) Вот трассировка:

Connecting To 192.168.1.2...Could not open connection to the host, on port 12000: Connect failed 

Теперь я проанализировал некоторые пакеты с помощью Wireshark, и, что удивительно, протоколом этого пакета был LLC вместо UDP а поле данных было:

Data: 74:5f:32:20:61:6e:64:72:6f:69:64
[Length: 11]

Прошу прощения, если разница незначительна, но я только начал программировать сокеты, и это меня беспокоит.

1
задан 13 December 2015 в 21:49
1 ответ

Во-первых, SOCK_DGRAM - это UDP, поэтому вы не сможете использовать telnet, потому что это только TCP.

Пакеты - это UDP. Я полагаю, что wireshark просто путает их с LLC, потому что порт 12000 (LLC работает поверх UDP, как мне кажется).

Похоже, что это не работает, потому что в клиентском скрипте вы установили serverName на .3, но сервер прослушивает .2.

Я также просто проигнорирую верблюжью оболочку на Python ;)

.
2
ответ дан 3 December 2019 в 20:45

Теги

Похожие вопросы