一、什么是Puppet Dashboard
Puppet Dasshboard是由支持Puppet开发的公司Puppetlabs创建的,是Ruby on Rails程序。可以作为一个ENC(外部节点分类器)以及一个报告工具,并且正在逐渐成为一个包含许多Puppet新功能的集成界面,例如审计和资源管理功能。
Puppet Dashboard是一个Ruby on Rails程序,用于显示Puppet master和agent的相关信息。它允许你查看从一个或多个Puppet master汇总的图形和报告数据。它同时从一个或者多个Puppet master上收集来自于Puppet agent的资产数据(主机的Fact和其他信息)。最后,它能作为一个ENC来配置Puppet节点,并指定这些节点上的类和参数。
Agent会定期上报日志到Master,由于我们管理的Agent比较多,少量的Agent出现故障时,快速定位出现故障的Agent是摆在运维工程师面前的一道难题。而Puppet正巧提供了一款工具来解决这样的问题,它将数据可视化的建立了数值与人的连接,借助图形的力量,清晰的有效展示了问题的所在,这款工具就是Puppet Dashboard。
二、安装puppet提供的rpm仓库
# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
Retrieving http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm warning: /var/tmp/rpm-tmp.LzShVn: Header V4 RSA/SHA1 Signature, key ID 4bd6ec30: NOKEY Preparing... ########################################### [100%] 1:puppetlabs-release ########################################### [100%]
把安装的软件仓库配置文件repo里面的gpgcheck=1全部修改为gpgcheck=0。
三、安装Dashboard
yum install puppet-dashboard
四、配置Dashboard
1、配置mysql环境
把mysql配置文件中的max_allowed_package改为32M或者更大,然后重启数据库。
# mysql -uroot -ppassword
mysql> create database dashboard character set utf8; mysql> grant all privileges on dashboard.* to 'dashboard'@'%' identified by 'dashboard'; mysql> grant all privileges on dashboard.* to 'dashboard'@'localhost' identified by 'dashboard'; mysql> flush privileges;
2、编辑Dashboard的YMAL配置文件
# cat /usr/share/puppet-dashboard/config/databases.yml
production: database: dashboard username: dashboard password: dashboard encoding: utf8 adapter: mysql
3、通过rack填充数据库
cd /usr/share/puppet-dashbard rake db:migrate RALLS_ENV=production
# mysql -udashboard -pdashboard -D dashboard -e "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 | +------------------------------+
4、运行Dashboard
WEBrick有助于快速使用Dashboard,不过它不能很好地进行扩展,并且当有许多Puppet agent向Dashboard进行报告时,它的性能会非常差,因此不推荐使用,但是为了快速查看到效果,这里我们先使用这种运行方式,后面我在介绍Passenger的运行方式。
/usr/share/puppet-dashboard/script/server -e production -d
或者
service puppet-dashboard start
五、访问Dashboard
在浏览器中输入IP:3000来访问puppet的Dashboard。
六、运行Dashboard(Passenger方式)
1、使用Ruby Gem安装Passenger
yum install ruby-devel ruby-libs rubygems libcurl-devel yum install httpd-devel apr-util-devel apr-devel mod_ssl
这里推荐使用配置gem的淘宝源来安装Passenger,国外的比较卡。
gem sources --remove http://rubygems.org/ gem sources -a https://ruby.taobao.org/ gem install rack passenger
2、配置虚拟主机和passenger
# cat /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-5.0.21 PassengerDefaultRuby /usr/bin/ruby </IfModule> Listen 3000 <VirtualHost *:3000> 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>
六、导入agent报告
1、 手工导入现有的报告
默认情况下agent将报告以文件形式上报到master的指定目录中,Dashboard可以将这些报告数据导入mysql中并通过Dashboard程序进行沉淀与展示,切换到/usr/share/puppet-dashboard。
rake RAILS_ENV=production reports:import
默认情况下命令会在/var/lib/puppet/reports目录中查询并导入已经生成报告的文件。如果路径发生变化,导入报告时需要在后面加上“REPORT_DIR=report路径”,reports更改路径可在puppet.conf中设置参数“reportdir = 新路径”,这种方式不够实时。
通常需要将reports:import命令放在定时任务中执行,如果已经通过reports:import导入过数据,再次导入数据就会以增量方式追加到Dashboard的数据库中,
2、配置实施汇总puppet报告
配置agent节点自动发送报告
# cat vim /etc/puppet/puppet.conf
[agent] report = true #从2.7.0版本开始,报告系统会默认开启,不需要配置
# cat /etc/puppet/puppet.conf
[main] reports = http reporturl = http://IP:3000/reports
service httpd restart
reports :定义为http报告处理器,除此之外还有store,log,tagmail,rrdgraph等报告处理器。
reporturl:不是必须的参数,如果要更改汇总报告地址或者端口可以通过此参数修改。
3、开启后台处理报告进程
开启之后不再需要我们手动导入报告,只要有新的报告来临,我们就会添加,然后图形展示。
service puppet-dashboard-workers
但是官方更推荐使用以下方式
rake RAILS_ENV=production jobs:work &
4、修改dashboard时区
Dashboard默认时区为UTC格式,我们这里需要更改为CST(Asia/Shanghai)格式
# cat /usr/share/puppet-dashboard/config/settings.yml
time_zone: 'Asia/Shanghai' …
**备注**:设置的settings.yml会覆盖掉config/environment.rb中对应的配置项(config.time_zone = 'UTC')
七、显示报告
通过http://IP:3000/ 及时查看节点更新的报告信息,可以看到很多节点,默认显示时间为CST格式,除此之外还可以看到某一个节点在某一个时刻的更新报告和运行曲线图
八、Dashboard日志、数据优化
1、Dashboard日志清理
Dashboard和其他的Rails程序一样,会将整个的运行过程的信息记录在/usr/share/puppet-dashboard/log目录中,这些日志会随着访问量不断地增长,我们需要定时对此目录中的文件进行清理,以免日志将磁盘充满,命令具体如下
cd /usr/share/puppet-dashboard; rake log:clear
最好将他写入到crontab定时任务中,定时清理残留日志。
2、数据库优化
rake RAILS_ENV=production db:raw:optimize