天天看點

puppet 整合dashboard

轉載: http://blog.51cto.com/ywzhou/1576583

一、安裝配置Dshboard

1、功能說明

Puppet Dasshboard是由支援Puppet開發的公司Puppetlabs建立的,是Ruby on Rails程式;

可以作為一個ENC(外部節點分類器)以及一個報告工具,包含許多Puppet新功能的內建界面,例如審計和資源管理功能;

能顯示Puppet master和agent的相關資訊;

它能作為一個ENC來配置Puppet節點,并指定這些節點上的類和參數;

Puppet Dashboard(1.2.3)程式目前版本隻支援Ruby 1.8.x,以及隻支援MySQL作為資料庫後端。

官方配置指南:

https://docs.puppetlabs.com/dashboard/manual/1.2/

2、安裝軟體包

安裝rubygem-rake

[root@puppet ~]# rpm -ivh ftp://rpmfind.net/linux/centos/6.5/os/x86_64/Packages/rubygem-rake-0.8.7-2.1.el6.noarch.rpm
[root@puppet ~]# yum install -y ruby-mysql mysql-server puppet-dashboard
           

3、配置mysql

[root@puppet ~]# service mysqld start
[root@puppet ~]# chkconfig mysqld on
[root@puppet ~]# mysqladmin -uroot password 123456
[root@puppet ~]# mysql -p123456
mysql> create database dashboard character set utf8;
mysql> grant all on dashboard.* to 'dashboard'@'localhost' identified by "123456";
mysql> flush privileges;
mysql> quit
[root@puppet ~]# vi /etc/my.cnf
[mysqld] 
max_allowed_packet=32M 
[root@puppet ~]# service mysqld restart
           

4、配置dashboard

[root@puppet ~]# cd /usr/share/puppet-dashboard/
[root@puppet puppet-dashboard]# vi config/database.yml
production:   
  database: dashboard   
  username: dashboard   
  password: 123456   
  encoding: utf8   
  adapter: mysql
[root@puppet puppet-dashboard]# vi config/settings.yml
time_zone: 'Asia/Shanghai'
[root@puppet puppet-dashboard]# rake gems:refresh_specs
[root@puppet puppet-dashboard]# rake RAILS_ENV=production db:migrate
           

使用合适的表填充資料庫,環境變量RAILS_ENV=production告訴Ruby on Rails我們工作在生産環境。

[root@puppet puppet-dashboard]# service puppet-dashboard start
           

5、檢查資料

檢視導入資料:

[root@puppet ~]# mysql -udashboard -p123456
mysql> use dashboard;
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)
mysql> quit
           

檢視工作狀态:

[root@puppet ~]# cd /usr/share/puppet-dashboard/
[root@puppet puppet-dashboard]# ./script/server -e production
=> Booting WEBrick
=> Rails 2.3.17 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2014-11-14 15:36:28] INFO  WEBrick 1.3.1
[2014-11-14 15:36:28] INFO  ruby 1.8.7 (2011-06-30) [x86_64-linux]
[2014-11-14 15:36:28] INFO  WEBrick::HTTPServer#start: pid=36461 port=3000
^C[2014-11-14 15:37:36] INFO  going to shutdown ...
[2014-11-14 15:37:36] INFO  WEBrick::HTTPServer#start done.
Exiting
           

可以看到dashboard預設運作在WEBrick的3000端口,按Ctrl+C關閉服務,下面改成apache運作。

二、dashboard整合apache

1、配置

參考示例:/usr/share/puppet-dashboard/ext/passenger/dashboard-vhost.conf
           
[root@puppet ~]# vi /etc/httpd/conf.d/dashboard.conf
Listen 8141
<VirtualHost *:8141>
        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>
           
不是在配置passenger.conf上面修改,而是建立的專門給dashboard的配置,端口也不一樣。
           

2、服務

關閉WEBRick使用apache代替
           
[root@puppet ~]# service puppet-dashboard stop
[root@puppet ~]# service puppetmaster stop
[root@puppet ~]# service httpd restart
[root@puppet ~]# iptables -I INPUT -p tcp --dport 8141 -j ACCEPT
[root@puppet ~]# service iptables save
           

3、檢查

不能顯示頁面:http://10.188.1.73:3000/

可以正常顯示頁面:http://10.188.1.73:8141/
           
puppet 整合dashboard

wKiom1RltcLTY4hrAAR_P8Rjl7I759.jpg

[root@puppet ~]# tailf /var/log/httpd/dashboard.access.log
           
http://s3.51cto.com/wyfs02/M01/53/46/wKioL1RltZWzlEs2AAFxW2VXMN0123.jpg
puppet 整合dashboard
http://s3.51cto.com/wyfs02/M01/53/46/wKioL1RltZWzlEs2AAFxW2VXMN0123.jpg wKioL1RltZWzlEs2AAFxW2VXMN0123.jpg http://s3.51cto.com/wyfs02/M01/53/46/wKioL1RltZWzlEs2AAFxW2VXMN0123.jpg
[root@puppet ~]# puppet agent --server puppet.ewin.com --test
           
http://s3.51cto.com/wyfs02/M01/53/46/wKioL1RltXjyuhp4AABz1qsjK-0914.jpg
puppet 整合dashboard
http://s3.51cto.com/wyfs02/M01/53/46/wKioL1RltXjyuhp4AABz1qsjK-0914.jpg wKioL1RltXjyuhp4AABz1qsjK-0914.jpg http://s3.51cto.com/wyfs02/M01/53/46/wKioL1RltXjyuhp4AABz1qsjK-0914.jpg

三、Puppet整合Dashboard

1、手動導入

[root@puppet ~]# cd /usr/share/puppet-dashboard/
[root@puppet puppet-dashboard]# rake RAILS_ENV=production reports:import
Importing 13456 reports from /var/lib/puppet/reports in the background
Importing:     100% |#########################################| Time: 00:06:27
13456 of 13456 reports queued
           
puppet報告儲存目錄/var/lib/puppet/reports/

頁面左上角“**Backgroud Tasks”**表示正在等待的任務(将puppet傳給http的reports導入dashboard),但沒有生效,使用如下指令啟動修改:
           
[root@puppet puppet-dashboard]# env RAILS_ENV=production script/delayed_job -p dashboard -n 1 -m start
           

2、自動導入(整合)

(1)Linux用戶端配置:

[root@zabbix ~]# vi /etc/puppet/puppet.conf
[agent] 
report = true  #從2.7.0版本開始預設開啟
           

(2)Windows用戶端配置:

D:\Program Files\Puppet Labs\Puppet\puppet\ext\redhat\puppet.conf
C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf
           
兩個配置檔案都沒有設定report=true但報告正常,待解~~
           

(3)****Puppet服務端配置(關鍵):

[root@puppet ~]# vi /etc/puppet/puppet.conf
[main] 
reports = http,store          #如果不加上store,将不再在/var/lib/puppet/reports/存儲報告
reporturl = http://localhost:8141/reports
           
如果要取消puppet內建dashboard,注消上面兩行即可。

如果是在puppet服務端直接修改,别忘了送出到SVN,是以建議養成在管理機器上修改的習慣:
           
[root@puppet ~]# svn ci /etc/puppet/ -m "update reports url"
           

(4)****啟動服務:

[root@puppet ~]# service httpd restart
[root@puppet ~]# cd /usr/share/puppet-dashboard/
[root@puppet puppet-dashboard]# rake RAILS_ENV=production jobs:work
[Worker(host:puppet.ewin.com pid:61845)] Starting job worker
[Worker(host:puppet.ewin.com pid:61845)] Report.create_from_yaml_file completed after 2.2778
[Worker(host:puppet.ewin.com pid:61845)] Report.create_from_yaml_file completed after 1.0872
[Worker(host:puppet.ewin.com pid:61845)] Report.create_from_yaml_file completed after 1.0863
[Worker(host:puppet.ewin.com pid:61845)] Report.create_from_yaml_file completed after 2.2699 ...
           

Rake指令使導入報告任務開始運作,運作後可以按Ctrl+C退出,它會在背景自動運作;

[root@puppet puppet-dashboard]# echo "rake RAILS_ENV=production jobs:work" >> /etc/rc.local
           
Rake指令需要加入到開機啟動,否則你會發現重新開機伺服器後Dashboard的WEB頁面的最新reports不更新了,而且左上角的“**Backgroud Tasks”**等待任務在不斷增加,就是因為這個開機後沒運作導緻的。
           

3****、****其他指令

優化資料庫:
           
[root@puppet puppet-dashboard]# rake RAILS_ENV=production db:raw:optimize
           
删除報告:
           
[root@puppet puppet-dashboard]# rake RAILS_ENV=production reports:prune upto=1 unit=mon
Deleting reports before 2014-10-15 08:38 UTC...
Deleted 0 reports.
           
upto=1 unit=mon表示1個月前的報告,可用day表示天。
           
檢視報告:
           
http://s3.51cto.com/wyfs02/M02/53/4A/wKiom1RlunKQ8aPRAABps-40kAw634.jpg
puppet 整合dashboard
http://s3.51cto.com/wyfs02/M02/53/4A/wKiom1RlunKQ8aPRAABps-40kAw634.jpg wKiom1RlunKQ8aPRAABps-40kAw634.jpg http://s3.51cto.com/wyfs02/M02/53/4A/wKiom1RlunKQ8aPRAABps-40kAw634.jpg
紅色表示運作失敗

  橙色表示等待運作

  藍色表示運作成功及改變的資訊

  綠色表示運作成功但什麼都沒做