nagios介绍及Server安装(四)

批量添加主机和服务

centreon的模板功能是做的非常强大的,而且优化过的nagios配置十分简单,加host的时候只需要输入了hostname,alias和ip 地址就可以加一台host上去,service配在hostgroup上,这样只要把host添加到hostgroup上就可以了 只添加host,service和hostgroup自己配。运行脚本之前,要先准备好几件事情:
   1、要有一个host的模板,将所有的属性基本上定义完整,使用脚本添加的host会和模板一模一样,只有ip地址和hostname有差别 (推荐自定义一个host模版)
   2、要确认了host要添加到哪台nagios上,在centreon里叫poller
   3、要有一个hosts文件,里面内容为要批量添加的hostname和ip地址,类似/etc/hosts的格式,第一栏ip,第二栏hostname

下面开始演示添加主机:添加前:

引用代码:

脚本用perl写的,最前面db的部分需要修改,代码如下:
#!/usr/bin/perl
### ====================================================
## File name: insert_host.pl
## Use: insert host into centreondatabase
### ====================================================

use strict;
use warnings;
use DBI;
use DBD::mysql;

# ----------------------------------------------------

my $DB_HOST = "127.0.0.1";                                                    #修改为127.0.0.1
my $DB_USER = "centreon";                                                           # web安装时设置的数据库访问用户,修改为centreon
my $DB_PASSWD = "centreon";                                                    # web安装时设置的数据库密码,修改为centreon
my $DB_NAME = "centreon";                                                         # web安装时设置的数据库名,默认也是centreon
my $dbh= DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST","$DB_USER", "$DB_PASSWD", { RaiseError=> 1 });

# ----------------------------------------------------

my $file_path= "hosts";                #hosts文件,自己创建
my$tpl_name= "generic-host";              #主机模板,填写你需要继承的模板;
my$nagios_name= "Central";             #poller,修改为Central

while (defined(my $arg= shift)) {
if ($argeq‘-f‘) {
       $file_path= shift;
        }

# == name of template ==

elsif($argeq‘-t‘) {
        $tpl_name= shift;
        }

# == name of nagiosname ==

  elsif($argeq‘-n‘) {
        $nagios_name= shift;
        }

    else {
        &print_help();
        exit1;
        }
    }

# -----------------------------------------------------

open (HOST, "$file_path")|| die "Cannot open $file_pathfor read $!";

my $sql;
my $sth;
my $line;
my ($host, $ipaddr);
my ($host_id,$tpl_id,$nagios_id)= (0, 0, 0);

while (defined($line = <HOST>)) {

# == skip blank lines =================

next if ($line =~ /^\s*$/);

# == skip if # ========================

next if ($line =~ /^\s*#/);

# == get host and ipaddress===========

($ipaddr,$host) = split(/\s+/, $line);
next if ($ipaddreq‘‘ || $host eq‘‘);

# == insert the host to table host ====

$sql= "insert host set host_template_model_htm_id=‘2‘,host_name=‘$host‘,host_alias=‘$host‘,host_address=‘$ipaddr‘,host_active_checks_enabled=‘2‘,host_passive_checks_enabled=‘2‘,host_checks_enabled=‘2‘,host_event_handler_enabled=‘2‘,host_flap_detection_enabled=‘2‘,host_process_perf_data=‘2‘,host_retain_status_information=‘2‘,host_retain_nonstatus_information=‘2‘,host_notifications_enabled=‘2‘,host_register=‘1‘,host_activate=‘1‘,host_obsess_over_host=‘2‘,host_check_freshness=‘2‘";

$sth= $dbh->do($sql);

    sleep(1);

# == get host_id======================

$sql= "select host_idfrom host where host_name=‘$host‘";

    $sth= $dbh->prepare($sql);
        $sth->execute();
  
    while (my $ref = $sth->fetchrow_hashref()){
              $host_id= $ref->{‘host_id‘};
            print "host_idis $host_id\n";
                       }
    next if ($host_id== 0);

# == insert extended_host_information==

$sql= "insert extended_host_informationset host_host_id=‘$host_id‘";
$sth= $dbh->do($sql);

# == insert host_template_relation=====

$sql= "select host_idfrom host where host_name=‘$tpl_name‘";
    $sth= $dbh->prepare($sql);
        $sth->execute();

    while (my $ref = $sth->fetchrow_hashref()){
                       $tpl_id= $ref->{‘host_id‘};
            print"template id is $tpl_id\n";
                       }
        next if ($tpl_id== 0);

    $sql= "insert host_template_relationset host_host_id=‘$host_id‘,host_tpl_id=‘$tpl_id‘,`order`=‘1‘";
    $sth= $dbh->prepare($sql);
        $sth->execute();

# == insert ns_host_relation===========

$sql= "select id from nagios_serverwhere name=‘$nagios_name‘";

        $sth = $dbh->prepare($sql);
        $sth->execute();

        while (my $ref = $sth->fetchrow_hashref()){
                       $nagios_id=$ref->{‘id‘};
            print "nagiosid is $nagios_id\n";
                       }
        next if ($nagios_id== 0);

        $sql = "insert ns_host_relationset host_host_id=‘$host_id‘,nagios_server_id=‘$nagios_id‘";
        $sth = $dbh->prepare($sql);
        $sth->execute();

# == insert complete ==

  print "insert $host to centreoncomplete\n";
    }

close(HOST);
$dbh->disconnect();
exit 0;

#--------------------------------------------------------------------------------

sub print_help{
    print "Usage ./insert_host.pl [-f path of host file][-n nagiosname] [-t template name]\n";
    print "\n";
    }

添加后:刷新WEB页面:多了三台;

批量生成和主机相关联的服务

上面的脚本能够批量添加主机,但是不能自动生成和主机相关联的服务

使用 CentreonCLAPI  可以解决这个问题,CentreonCLAPI 是centreon 命令行接口,可以替代在网页上的许多工作,这里我们只介绍下怎么解决我们的问题。了解更多请看网址:

http://forge.centreon.com/projects/centreon-clapi/wiki进行安装

http://download.centreon.com/Modules/CLAPI/centreon-clapi-1.1.tar.gz

tar zxvfcentreon-clapi-1.1.tar.gz 

cd centreon-clapi-1.1

提示输入instCentWeb.conf配置文件的路径:/usr/local/centreon/etc/

安装完成后:

cd /usr/local/centreon/www/modules/centreon-clapi/core/

vimcentreon +64

require_once "$centreon_etc/centreon.conf.php";

改为:

require_once "/usr/local/centreon/etc/centreon.conf.php";

cd /usr/local/centreon/www/modules/centreon-clapi/core/

vim  centreon +64

require_once"$centreon_etc/centreon.conf.php";

改为:

require_once"/usr/local/centreon/etc/centreon.conf.php";

对client主机应用所关联的模板服务:

关联前:

进行关联:

[roo[email protected]]# ./centreon -uadmin-padmin123 -o HOST -a applytpl -v"cc.cc.cc.cc"

查看页面:

通过以上命令可以关联模板的服务,如果需要批量添加,只需写个简单的脚本就能实现,见下图,执行前可删除刚才手动执行的命令添加的client服务:

刷新页面查看:

批量添加完主机和服务要需要重新生成nagios配置后生效。

nagios介绍及Server安装(四),布布扣,bubuko.com

时间: 2024-10-18 05:16:59

nagios介绍及Server安装(四)的相关文章

nagios介绍及Server安装(六)

客户端监控: 在此演示下前面提到的三种监控客户端的方式: 方式一:snmp 服务端ip:192.168.100.133 客户端ip:192.168.100.132 重启客户端snmpd 在服务器端snmp命令获取客户端的相关值 在此获取客户端的1分钟5分钟15分钟的load值为例 在此基础上,我们可以使用nagios的插件 方式二:nrpe(此处以检测disk命令为例) 此方法为了传参,我们在之前编译的时候已经加了argument:所以我们可以在服务器端进行参数. 比如: 修改客户端的nrpe.

nagios介绍及Server安装(二)

6).启动相关服务 [[email protected] ~]#/etc/init.d/httpd start [[email protected] ~]#/etc/init.d/mysqld start [[email protected] ~]# mysqladmin -uroot password '111111' [[email protected] ~]#/etc/init.d/ndo2db start 7).WEB界面安装 http://192.168.100.187/centreo

nagios介绍及Server安装(三)

client端服务安装: 监控方式随便,但是常见的有下面几种: 1.使用nagios自带插件监控,也就是nrpe方式:不足之处每台client都需要安装,推荐将编译包进行rpmind,搭建yum源,执行yum即可: 2.snmp方式,好处client端只需要开启snmp服务即可,不足之处每个厂商的oid不尽相同,给监控脚本开发带来不便,推荐开发一个高效率的万能agent: 3.ssh方式,好处监控脚本易于编写,不足频繁执行会对客户端增加不必要的负担. 我这边的Client和Server端系统一样

nagios介绍及Server安装(五)

用户管理: 下面添加一个test普通用户为例: 1.添加一个test用户:配置->用户->增加 填写全名.别名.邮箱信息: 选择test接收的主机和服务报警: "Centreon验证"标签填写登陆密码,语言等信息: 创建新的访问组:管理->ACL->访问组->增加 填写组名.别名.相关联系人里添加test用户到Guest_View组: 创建新的访问控制:管理->ACL->菜单入口->增加 填写ACL命名.别名.相关组添加上面的访问组,可访

nagios介绍及Server安装(七)

其他遇到问题 Centreon>Reporting>DashboardUNDETERMINED 100%的解决方法 参考  http://forge.centreon.com/issues/3360 Centreon版本centreon-2.3.8.tar.gz Dashboard的结果依赖于Event Logs的结果,如果Centreon>Monitoring>Event Logs没有结果,那么先解决Event Logs的错误,解决方法 http://www.cnblogs.co

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

HBase介绍及简易安装(转)

HBase介绍及简易安装(转) HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存储并处理大型的数据,更具体地说仅用普通的硬件配置,能够处理成千上万的行和列所组成的大型数据库.HBase是一个开源的.分布式的.多版本的.面向列的 存储模型.可以直接使用本地文件系统也可使用Hadoop的HDFS文件存储系统.为了提高数据的可靠性和系统的健壮性,并且发挥HBase处理大型数据 的能力

Nagios介绍

Nagios介绍 Nagios是一款功能强大.优秀的开源监控系统,它能够让你发现和解决IT架构中存在的问题,避免这些问题影响到关键业务流程. Nagios最早于1999年发布,它在开源社区的影响力是相当大的.目前全球Nagios的社区已经开发了数以千计的项目.Nagios的官方赞助是通过Nagios企业,它通过许多不同方式销售其商业产品和服务来支持这个社区. Nagios可以监控您的整个IT基础设施,以确保系统,应用程序,服务和业务流程的正常运行.它能有效监控Windows.Linux和Unix

&nbsp; &nbsp; &nbsp; Mysql的介绍以及编译安装mariadb

一:mysql的介绍: mysql数据库是工作于线程模式的.是一种关系型数据库,有严格的数据模型结构,这样在并发读写量大的时候,就不得不对其进行扩展,而这种方式扩展还是非常麻烦的. 由于读操作是可以缓存的,所以我们可以为mysql提供缓存服务器. 程序读取数据时先查缓存服务器,再查mysql数据库,这样如果缓存有访问的内容,那么就可以节省 访问时间. 二:关系型数据管理系统 RDBMS 关系模型中主要组件: 数据方案:数据库 表,视图(虚表,基于某种关系用语句形成的),索引, 存储过程,存储函数