Мне очень сложно настроить 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]
Прошу прощения, если разница незначительна, но я только начал программировать сокеты, и это меня беспокоит.
Во-первых, SOCK_DGRAM
- это UDP
, поэтому вы не сможете использовать telnet
, потому что это только TCP
.
Пакеты - это UDP
. Я полагаю, что wireshark
просто путает их с LLC
, потому что порт 12000
(LLC
работает поверх UDP
, как мне кажется).
Похоже, что это не работает, потому что в клиентском скрипте вы установили serverName
на .3
, но сервер прослушивает .2
.
Я также просто проигнорирую верблюжью оболочку на Python ;)
.