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

[经验分享] Puppet系列之五:Puppet报告系统Dashboard安装与配置

[复制链接]

尚未签到

发表于 2018-8-2 13:00:58 | 显示全部楼层 |阅读模式
  1 概述
  Puppet Dashboard是Puppet软件的一个Web界面程序,由puppetlabs开发创建的Ruby on Rails程序。Puppet Dashboard同时从一个或者多个Puppet master上收集来自于Puppet agent的资产数据(主机的Fact和其他信息)。它能够查看并分析Puppet的报告,指定节点的类和参数,并且能够查看存储数据及备份文件内容。
  2 安装所需依赖
  所需软件及版本:
  RubyGems
  Rake:0.8.3 or newer
  MySQL database server:5.x
  Ruby-MySQL bindings:2.7.x or 2.8.x
  安装:
  yum install ruby-mysql mysql-server
  3 安装dashboard
  安装Puppet Labs package repository:
  Enterprise Linux 6(CentOS 6) i386:
  rpm -ivh https://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-7.noarch.rpm
  x86_64:
  rpm -ivh https://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
  安装dashboard:yum install dashboard
  
  4 配置Dashboard
  
  4.1 创建管理Dashboard的MySQL数据库帐号和授权
  /etc/init.d/mysqld restart
  chkconfig mysqld on
  mysql -u root -pyourkey
  mysql> create database dashboard character set utf8;
  mysql> grant all on dashboard.* to 'dashboard'@'localhost'>yourkey';
  mysql> flush privileges;
  测试帐号是否创建成功:mysql -u dashboard -pyourkey
  mysql> show databases;
  +--------------------+
  |Database           |
  +--------------------+
  |information_schema |
  |dashboard          |
  +--------------------+
  2 rows in set (0.00 sec)
  4.2 优化数据库配置文件my.conf
  配置MySQL的最大包数量来允许数据库中有更多的行。
  vim /etc/my.conf 增加下面一行(至少24M)
  [mysqld]
  #Allowing 32MB allows an occasional 17MB row with plenty of spare room
  max_allowed_packet= 32M
  重启MySQL使其生效:/etc/init.d/mysqld restart
  4.3 编辑dashboard YAML配置文件dashboard.yml来指定数据库
  vim /usr/share/puppet-dashboard/config/database.yml:
  production:
  database: dashboard
  username: dashboard
  password: yourkey
  encoding: utf8
  adapter: mysql
  4.4 填充数据库
  cd /usr/share/puppet-dashboard/
  rake gems:refresh_specs
  rake RAILS_ENV=production db:migrate
  环境变量RAILS_ENV=production告诉Rubyon Rails我们工作在生产环境。每次运行一个rake命令都需要使用合适的环境值来设置RAILS_ENV环境变量
  4.5查看是否导入成功
  mysql -u dashboard -pyourkey
  mysql> show tables;
  +------------------------------+
  | Tables_in_dashboard          |
  +------------------------------+
  | delayed_job_failures         |
  | delayed_jobs                 |
  | metrics                      |
  | node_class_memberships       |
  | node_classes                 |
  | node_group_class_memberships |
  | node_group_edges             |
  | node_group_memberships       |
  | node_groups                  |
  | nodes                        |
  | old_reports                  |
  | parameters                   |
  | report_logs                  |
  | reports                      |
  | resource_events              |
  | resource_statuses            |
  | schema_migrations            |
  | timeline_events              |
  +------------------------------+
  18 rows in set (0.00 sec)
  5 启动Dashboard(Webrick方式)
  WEBrick有助于快速使用Dashboard,不过它不能很好地进行扩展,并且当有许多Puppet agent向Dashboard进行报告时,它的性能会非常差,因此不推荐使用。
  5.1 关闭httpd服务
  /etc/rc.d/init.d/httpd stop
  5.2 启动puppetmaster服务
  /etc/rc.d/init.d/puppetmaster start
  5.3 启动puppet-dashboard服务
  /etc/rc.d/init.d/puppet-dashboard start
  5.4 通过浏览器访问
  http://192.168.56.1:3000
  6 启动并运行Dashboard(Passenger放式)
  6.1 使用RubyGem安装Passenger
  
  yum install ruby-devel ruby-libs rubygems libcurl-devel
  yum install httpd httpd-devel apr-util-devel apr-devel mod_ssl
  gem install passenger
  6.2 配置虚拟主机和passenger
  
  vim /etc/httpd/conf.d/passenger.conf:
  LoadModule passenger_module
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.33/buildout/apache2/mod_passenger.so
  <IfModule mod_passenger.c>
      PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.33
      PassengerRuby /usr/bin/ruby
      PassengerHighPerformance on
      PassengerMaxPoolSize 12
      PassengerPoolIdleTime 1500
      PassengerStatThrottleRate 120
      #RailsAutoDetect On
  </IfModule>
  Listen 8147
  <VirtualHost *:8147>
      DocumentRoot "/usr/share/puppet-dashboard/public/"
      <Directory "/usr/share/puppet-dashboard/public/">
      Options    None
      AllowOverride AuthConfig
      Order allow,deny
      allow from all
      </Directory>
      ErrorLog    /var/log/httpd/dashboard.error.log
      LogLevel warn
      CustomLog /var/log/httpd/dashboard.access.log combined
  </VirtualHost>
  设定虚拟机通过端口8147来访问。
  6.3启动相关服务
  
  先停掉puppetmaster服务:/etc/rc.d/init.d/puppetmaster stop
  重启apache:/etc/rc.d/init.d/httpd restart
  6.4通过浏览器访问测试
  
  http://192.168.56.1:8147/
  7 集成PuppetDashboard
  
  7.1手工导入现有的报告(方式一)
  
  cd /usr/share/puppet-dashboard/
  rake RAILS_ENV=production reports:import  #导入已经存在的报告
  备注:默认节点报告会在/var/lib/puppet/reports/产生,如果路径发生变化,导入报告时需要在后面加上“REPORT_DIR=report路径”,reports更改路径可在puppet.conf中设置参数“reportdir= 新路径”,这种方式不够实时。
  7.2 配置实施汇总puppet报告(方式二)
  
  配置agent节点自动发送报告:vim /etc/puppet/puppet.conf   
  [agent]
  report = true    #从2.7.0版本开始,报告系统会默认开启,不需要配置
  配置master节点:vim /etc/puppet/puppet.conf
  [main]
      reports = http    #定义为http报告处理器,除此之外还有store,log,tagmail,rrdgraph等报告处理器
      reporturl= http://192.168.56.1:8147/reports
      #http报告处理器将puppet报告发送到一个HTTPURL和端口(Dashboard位置)。Puppet报告以被转储为HTTP Poort形式的YAML格式进行发送。
  重启apache服务:/etc/init.d/httpd restart
  7.3 开启后台处理报告进程
  
  cd /usr/share/puppet-dashboard  #一定要在此目录下执行下面的命令,否则报错
  rake RAILS_ENV=production jobs:work &  
  #运行“Delayed Job Workers”,使其在后台为我们处理报告日志
  7.4 修改dashboard时区
  
  Dashboard默认时区为UTC格式,我们这里需要更改为CST(Asia/Shanghai)格式
  vim /usr/share/puppet-dashboard/config/settings.yml
  time_zone: 'Asia/Shanghai'
  **备注**:设置的settings.yml会覆盖掉config/environment.rb中对应的配置项(config.time_zone = 'UTC')
  7.5 显示报告
  
  通过http://192.168.56.1:8147/及时查看节点更新的报告信息,可以看到四个节点vm1,vm2,vm3,vm4,默认显示时间为CST格式,除此之外还可以看到某一个节点在某一个时刻的更新报告和运行曲线图。
  8 自定义报告
  
  8.1 编写外部报告处理器
  
  使用现有的被存储的报告,就是那些yaml文件,可以通过设置puppet.conf中reports= store进行收集。然后编写一个外部的处理器来处理这些信息,例如绘图或者将他们存储在外部数据库。这也是Puppet Dashboard中的报告输入进程的工作原理。这些外部的报告处理器可以很简单地使用Ruby进行编写,以便使用Ruby反序列化YAML文件的能力以及使用生成的对象。可以使用任何支持导入第三方ymal数据的工具。
  
  8.2 编写内部报告处理器
  
  编写自定义报告处理器并将它添加到Puppet。和fact、函数、类型及提供者的插件不同,Puppet没有提供一个自动分发自定义报告的方法。
  8.2.1 现有报告处理器信息
  ls /usr/lib/ruby/site_ruby/1.8/puppet/reports
  http.rb log.rb  rrdgraph.rb  store.rb  tagmail.rb
  8.2.2 自定义摘要报告处理器
  8.2.2.1 进入reports目录编写自定义summary.rb报告处理器
  
  cd /usr/lib/ruby/site_ruby/1.8/puppet/reports
  vim summary.rb
  require 'puppet'
  Puppet::Reports.register_report(:summary)do
      desc <<-DESC
      Send summary report information to the report directory.
      DESC
      def process
          client = self.host
          summary = self.summary
          dir = File.join(Puppet[:reportdir],client)
          client = self.host
          file = "summary.txt"
          destination = File.join(dir,file)
          File.open(destination, "w") do |f|
              f.write(summary)
              end
          end
  end
  8.2.2.2 将报告处理器的名字加入puppet.conf中,并重新启动httpd服务
  
  vim /etc/puppet/puppet.conf
  [main]
  reports = http,summary
  …
  /etc/rc.d/init.d/httpd restart
  Stopping httpd:                                            [  OK  ]
  Starting httpd:                                            [  OK  ]
  8.2.2.3 使用mco命令触发更新节点vm1
  
  mco puppet -v runonce  mco facts -v --with-fact  hostname='vm1'
  Discovering hosts using the mc method for 2 second(s) .... 1
  *[ ============================================================> ]1 / 1
  vm1.sysu                                                                                   : OK
      { :summary=>     "Started a background Puppet run using the 'puppet agent--onetime --daemonize --color=false --splay --splaylimit 30'command"}
  ----rpc stats ----
      Nodes:1 / 1
      Pass/ Fail: 1 / 0
      StartTime: Fri Oct 04 12:54:50 +0800 2013
  DiscoveryTime: 2005.27ms
  AgentTime: 1118.41ms
  TotalTime: 3123.68ms
  8.2.2.4 查看新生成的报告信息
  
  cd /var/lib/puppet/reports/vm1.sysu/
  cat summary.txt :
  Changes:
                  Total: 2
  Events:
                  Success: 2
                  Total: 2
  Resources:
                  Total: 12
                  Out of sync: 2
                  Changed: 2
                  Skipped: 6
  Time:
                  Filebucket: 0.00
                      File: 0.29
          Configretrieval: 0.29
                  Last run:  1388995849
                      Exec: 8.74
                      Total: 9.32
  Version:
                      Config: 1388994359
                      Puppet: 3.4.3
  在整个报告处理器中,定义了一个叫做process的方法来承载处理器的核心逻辑。我们从报告中提取了一些信息:使用self.host方式提取了主机名,使用summary方式提取了变更的摘要。还可以使用self.logs和self.metrics方式来访问报告中的日子以及度量值。
  我们同时还将报告的摘要输出了报告目录下对应的以Puppetagent主机名命名的目录中,报告目录的位置是由reportdir配置的值来指定的,默认在/var/lib/puppet/reports/目录下。
  9 总结
  本文旨在搭建一个基于Web图形界面的Puppet报告系统—Puppet Dashboard。该报告系统既可以使用自身的报告处理器来处理报告内容,亦可以自定义外部报告处理器来满足特定的要求 。后续文章将讲解Puppet语法及拓展性。
  ——RangoChen

运维网声明 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.yunweiku.com/thread-545391-1-1.html 上篇帖子: Puppet系列之四:Puppet利用Nginx多端口实现负载均衡 下篇帖子: Puppet基础篇6-Puppet更新方式的选型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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