设为首页 收藏本站
查看: 1398|回复: 0

centreon+nagios安装-批量添加主机和服务

[复制链接]
发表于 2019-1-15 10:20:08 | 显示全部楼层 |阅读模式
  原文链接:
  本文引用了一位同事的文档及网络文章,在此感谢~ 实验的部分自己完成
  
  一、centreon批量添加主机
  本部分参考了同事的文档和链接:http://blog.chinaunix.net/uid-17196076-id-2817703.html
  
  centreon的模板功能是做的非常强大的,而且优化过的nagios配置十分简单,加host的时候只需要输入了hostname,alias和ip 地址就可以加一台host上去,service配在hostgroup上,这样只要把host添加到hostgroup上就可以了。
    如果你要加一两台机器,那是很方便的,但是如果上百台呢,上千台呢?那手岂不是要点的抽筋了?
    这点来看,还是用脚本批量添加来的方便,呵呵,共享一个自己写的批量添加host的脚本,只添加host,service和hostgroup自己配。
  
    运行脚本之前,要先准备好几件事情:
    1、要有一个host的模板,将所有的属性基本上定义完整,使用脚本添加的host会和模板一模一样,只有ip地址和hostname有差别
    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 centreon database
  # Creater: lianming
  # Date: 2009-04-24
  # Last_change: 2009-04-24
  #
  ## ====================================================
  use strict;
  use warnings;
  use DBI;
  use DBD::mysql;
  # ----------------------------------------------------
  my $DB_HOST = "db_ipaddress";            #修改为127.0.0.1
  my $DB_USER = "db_user";             # web安装时设置的数据库访问用户,修改为centreon
  my $DB_PASSWD = "db_password";     # 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 = "nagios_name";     #poller,修改为Central
  foreach my $arg (@ARGV) {
     # == file of hostname and ipaddress ==
     if ($arg eq '-f') {
         $file_path = shift;
         }
     # == name of template ==
     elsif ($arg eq '-t') {
         $tpl_name = shift;
         }
        
     # == name of nagios name ==
     elsif ($arg eq '-n') {
         $nagios_name = shift;
         }
     else {
         &print_help();
         exit 1;
         }
     }
  # -----------------------------------------------------
  open (HOST, "$file_path") || die "Cannot open $file_path for read";
  my $sql;
  my $sth;
  my $line;
  my ($host, $ipaddr);
  my ($host_id, $tpl_id, $nagios_id) = (0, 0, 0);
  while (defined($line = )) {
     # == skip blank lines =================
     next if ($line =~ /^\s*$/);
     # == skip if # ========================
     next if ($line =~ /^\s*#/);
     # == get host and ipaddress ===========
     ($ipaddr, $host) = split(/\s+/, $line);
     next if ($ipaddr eq '' || $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'";
     $sth = $dbh->do($sql);
     sleep(1);
     # == get host_id ======================
     $sql = "select host_id from host where host_name='$host'";
     $sth = $dbh->prepare($sql);
         $sth->execute();
    
     while (my $ref = $sth->fetchrow_hashref()) {
                $host_id = $ref->{'host_id'};
             print "host_id is $host_id\n";
                         }
         next if ($host_id == 0);
     # == insert extended_host_information ==
     $sql = "insert extended_host_information set host_host_id='$host_id'";
     $sth = $dbh->do($sql);
     # == insert host_template_relation =====
     $sql = "select host_id from 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>                         }
         next if ($tpl_id == 0);
     $sql = "insert host_template_relation set host_host_id='$host_id',host_tpl_id='$tpl_id',`order`='1'";
     $sth = $dbh->prepare($sql);
         $sth->execute();
     # == insert ns_host_relation ===========

     $sql = "select>         $sth = $dbh->prepare($sql);
         $sth->execute();
         while (my $ref = $sth->fetchrow_hashref()) {
                         $nagios_id = $ref->{'id'};

             print "nagios>                         }
         next if ($nagios_id == 0);
         $sql = "insert ns_host_relation set host_host_id='$host_id',nagios_server_id='$nagios_id'";
         $sth = $dbh->prepare($sql);
         $sth->execute();
     # == insert complete ==
     print "insert $host to centreon complete\n";
     }
  close(HOST);
  $dbh->disconnect();
  exit 0;
  # --------------------------------------------------------------------------------
  sub print_help {
     print "Usage ./insert_host.pl [-f path of host file] [-n nagios name] [-t template name]\n";
     print "\n";
     }
  
  演示:
  上面的脚本名我换成了add_host.pl,并创建hosts文件:
DSC0000.jpg

  添加主机前:
DSC0001.jpg

  
  执行脚本:
DSC0002.jpg

  
  刷新WEB页面:
DSC0003.jpg

  二、批量生成和主机相关联的服务
  注:此部分引用了同事的文档和脚本~
  
  上面的脚本能够批量添加主机,但是不能自动生成和主机相关联的服务,如果对每一台主机增加一个服务,要一个一个在页面点击,非常麻烦。
  
  使用 Centreon CLAPI  可以解决这个问题,Centreon CLAPI 是centreon 命令行接口,可以替代在网页上的许多工作,这里我们只介绍下怎么解决我们的问题。了解更多请看网址:
  http://forge.centreon.com/projects/centreon-clapi/wiki
  
  安装clapi:
  [root@centreon ~]# cd /usr/local/src/
  [root@centreon src]# tar zxf centreon-clapi-1.1.tar.gz
  [root@centreon src]# cd centreon-clapi-1.1
  [root@centreon centreon-clapi-1.1]# ./install.sh -i
DSC0004.jpg

  提示输入instCentWeb.conf配置文件的路径:/usr/local/centreon/etc/
  
  [root@centreon centreon-clapi-1.1]# cd /usr/local/centreon/www/modules/centreon-clapi/core/
  [root@centreon core]# vi +64 centreon
  require_once "$centreon_etc/centreon.conf.php";
  改为:
  require_once "/usr/local/centreon/etc/centreon.conf.php";
  
  查看所有主机:
  [root@centreon core]# ./centreon -uadmin -p111111 -o HOST -a show
  查看主机名包含client-1的主机,如果是输入client,则会显示client,client-1,client-2
  [root@centreon core]# ./centreon -uadmin -p111111 -o HOST -a show -v "client-1"
  对client主机应用所关联的模板服务:
  [root@centreon core]# ./centreon -uadmin -p111111 -o HOST -a applytpl -v "client-1"
DSC0005.jpg

  执行命令前的服务:
DSC0006.jpg

  
  执行后client-1服务都已添加:
DSC0007.jpg

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

  
  WEB刷新服务:
DSC0009.jpg

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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-663487-1-1.html 上篇帖子: nagios libjpeg.so.62: cannot open shared object file 下篇帖子: Nagios的插件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表