然而,也许是一个奇怪的绿色问题
那么Nagios或Ganglia可以做到的其他事情不能做到吗?
在监控方面,一般都是警报.
我正在为我学校的电脑俱乐部寻找一个通用的解决方案,在我看来它就像比较诺顿和先锋.两者都是防病毒软件但是有没有特定的好处?或者我现在问一个非常愚蠢的问题?
谢谢.
我们正在使用Nagios来监控我们的网络并取得巨大成功.但是,我们有一个关键应用程序错误的系统日志,当我设置check_log时,它看起来不像监视设备那样好.
问题是:
nagios是错误的工具,还是我们只是没有设置服务监控权?
这是我的参赛作品
# log file
define command{
command_name check_log
command_line $USER1$/check_log -F /var/log/applications/appcrit.log -O /tmp/appcrit.log -q ?
}
# Define the log monitering service
define service{
name logfile-check ;
use generic-service ;
check_period 24x7 ;
max_check_attempts 1 ;
normal_check_interval 5 ;
retry_check_interval 1 ;
contact_groups admins ;
notification_options w,u,c,r ;
notification_period 24x7 ;
register 0 ;
}
define service{
use logfile-check
host_name localhost
service_description CritLogFile
check_command check_log
}
Run Code Online (Sandbox Code Playgroud) 我的情况:我正在开发一个Web监控仪表板,它汇集来自不同应用程序和源的信息,并生成图形,信息图形和报告.
我正在尝试集成的应用程序是CACTI,Nagios和其他本地私有监视工具.我没有问题整合这些应用程序,除了Nagios(我没有太多经验).
我想知道的是,如果有一种方法可以将Nagios用作Web服务或类似的东西,那么我可以公开一些信息并使用它在我的仪表板应用程序上生成我自己的报告.
没有任何史诗般的努力可以做到这一点吗?
谢谢阅读.
我正在尝试使用Nagios监视实际的URL,而不仅仅是主机,因为我操作了一个包含多个网站的共享服务器,我认为它不足以监视基本的HTTP服务(我包括在内这个问题的底部是我想象的一个小解释.
(旁注:请注意我在CentOS系统上的chroot中安装并运行了Nagios.我从源代码构建了nagios,并使用yum在这个root中安装了所有需要的依赖项等等.)
我首先找到了check_url,但是在将它安装到/ usr/lib/nagios/libexec后,我不断得到"返回代码255超出界限"错误.就在那时我决定开始写这个问题(但是等等!还有另一个插件,我决定先试试!)
在回顾了这个问题时,我遇到了几乎与check_url相同的问题,我决定打开一个关于这个问题的新问题因为a)我没有使用NRPE这个检查b)我尝试了对这个问题的建议我之前链接的问题,但没有一个有效.例如...
./check_url some-domain.com | echo $0
Run Code Online (Sandbox Code Playgroud)
返回"0"(表示检查成功)
然后我按照Nagios Suppor t 上的调试说明创建一个名为debug_check_url的临时文件,并在其中加入以下内容(然后由我的命令定义调用):
#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $* /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*
Run Code Online (Sandbox Code Playgroud)
假设我没有处于"调试模式",我运行check_url的命令定义如下(在command.cfg中):
'check_url' command definition
define command{
command_name check_url
command_line $USER1$/check_url $url$
}
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,你也可以在我的服务配置文件中查看我在这个问题的最底部使用的内容)
然而,在发布这个问题之前,我决定再一次尝试找出解决方案.我找到了check_url_status插件,并决定给它一个镜头.要做到这一点,这就是我做的:
运行以下命令:
./check_user_status -U some-domain.com.当我运行上面的命令时,我不断收到以下错误:
bash-4.1#./ check_url_status -U mydomain.com找不到@INC中的utils.pm(@INC包含:/ usr/lib/nagios/libexec// usr/local/lib/perl5/usr/local/share/perl5/usr/lib/perl5/vendor_perl/usr/share/perl5/vendor_perl/usr/lib/perl5/usr/share/perl5)在./check_url_status第34行.BEGIN失败 - 编译在./check_url_status第34行中止.
所以在这一点上,我放弃了,并提出了几个问题:
在这个问题的开头,我提到我会对我想象的内容做一个小小的解释.我有一个名为services.cfg的文件,这是我所有服务定义所在的位置(想象一下!).
以下是我的服务定义文件的片段,我写的是使用check_url(因为当时我认为一切正常).我将为我想要监控的每个URL构建一个服务:
###
# Monitoring Individual URLs...
#
###
define service{
host_name …Run Code Online (Sandbox Code Playgroud) 我想使用nagios来监控elasticsearch.基本上,我想知道弹性搜索是否已经完成.
我想我可以使用elasticsearch Cluster Health API(参见这里)
并使用我得到的"状态"(绿色,黄色或红色),但我仍然不知道如何使用nagios(nagios在一台服务器上,而elasticsearc在另一台服务器上).
还有另一种方法吗?
编辑: 我刚发现 - check_http_json.我想我会试一试.
我在我的本地机器上的amazon ec2实例和nagios服务器上的xinetd下运行NRPE守护程序进程.
在check_nrpe -H [amazon public IP]给出了这样的错误:
CHECK_NRPE: Error - Could not complete SSL handshake.
Run Code Online (Sandbox Code Playgroud)
两个Nrpe都是相同的版本.两者都使用此选项进行编译:
./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/i386-linux-gnu/
Run Code Online (Sandbox Code Playgroud)
"allowed host"条目包含我的本地IP地址.
现在这个错误的可能原因是什么?
我在Linux Server中安装了Nagios(Nagios®Core™版本4.2.2).我一直在使用JSON查询生成器生成JSON格式的可用性报告.它将提供API.我创建了一个Javascript,它将此URL传递给Ajax调用,并根据成功结果,将在我们自己的仪表板中打印百分比.
JSON URL : http://xx.xx.xx.xx/nagios/cgi-bin/archivejson.cgi?query=availability&availabilityobjecttype=hostgroups&hostgroup=ALM&assumedinitialhoststate=up&assumedinitialservicestate=ok&starttime=1514297016&endtime=1514383416
Run Code Online (Sandbox Code Playgroud)
开始和结束时间包含EPOCH格式的时间.
在Javascript中,我创建了一个函数,它将开始和结束时间作为变量传递给URL.
var time = new Date();
var end = Math.floor((new Date).getTime() / 1000);
//var end = ~~(Date.now() /1000) ;
var start = Math.floor(time.setDate(time.getDate() - 1) / 1000);
Availreport = "http://xx.xx.xx.xx/nagios/cgi-bin/archivejson.cgi?query=availability&availabilityobjecttype=hostgroups&hostgroup=ALM&assumedinitialhoststate=up&assumedinitialservicestate=ok&starttime=" + start + "&endtime=" + end;
$.ajax({
url: Availreport,
timeout: 30000,
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization',
make_base_auth("nagiosadmin", "nagiosadmin"));
},
dataType: 'json', //data format
success: onOutboundReceived //on receive of reply
});
Run Code Online (Sandbox Code Playgroud)
在浏览器中,当我检查仪表板时,time_upjson键给出了一个不正确的值(值为0).直接在浏览器中执行时,相同的URL会提供正确的输出.
我该如何解决这个问题?
我已经设置了一个nagios监控并配置了check_http插件来检查我的应用程序中的特定URL.该url返回'ok'或错误消息.
我的nagios在发现不正常的东西时给我发了一封电子邮件.但是我得到的只是"HTTP CRITICAL - 找不到字符串".我想在电子邮件中获得的是从我的URL返回的实际错误消息.我尝试过使用verbose(-v)选项.在命令行中,它返回一个包含我的错误消息的完整请求,但是nagios email只会向我发送详细响应的第一行.
我希望在nagios通知中得到的是找不到字符串来获取实际的错误消息.有没有办法使用check_http(或可能是其他一些)插件或我必须自己编写?
编辑: 到目前为止,我一直在我的电子邮件通知中使用$ SERVICEOUTPUT $.
如何为每个服务检查设置单独的超时设置。根据主要配置,所有超时默认为60秒,但由于执行时间的缘故,我要求一项特殊检查的超时时间更长。
如何才能做到这一点?请帮忙。
谢谢
nagios ×10
monitoring ×4
ajax ×1
cacti ×1
ganglia ×1
javascript ×1
jquery ×1
json ×1
linux ×1
logfiles ×1
nagiosxi ×1
nrpe ×1
ssl ×1
unix ×1
web-services ×1