Linux中國

如何為你的平台部署一個公開的系統狀態頁

Cachet 特性

在詳細的配置 Cachet 之前,讓我簡單的介紹一下它的主要特性。

  • 全 JSON API:Cachet API 可以讓你使用任意的外部程序或腳本(例如,uptime 腳本)連接到 Cachet 來自動報告突發事件或更新狀態。
  • 認證:Cachet 支持基礎認證和 JSON API 的 API 令牌,所以只有認證用戶可以更新狀態頁面。
  • 衡量系統:這通常用來展現隨著時間推移的自定義數據(例如,伺服器負載或者響應時間)。
  • 通知:可選地,你可以給任一註冊了狀態頁面的人發送突發事件的提示郵件。
  • 多語言:狀態頁被翻譯為11種不同的語言。
  • 雙因子認證:這允許你使用 Google 的雙因子認證來提升 Cachet 管理賬戶的安全性。
  • 跨資料庫支持:你可以選擇 MySQL,SQLite,Redis,APC 和 PostgreSQL 作為後端存儲。

剩下的教程,我會說明如何在 Linux 上安裝配置 Cachet。

第一步:下載和安裝 Cachet

Cachet 需要一個 web 伺服器和一個後端資料庫來運轉。在這個教程中,我將使用 LAMP 架構。以下是一些特定發行版上安裝 Cachet 和 LAMP 架構的指令。

Debian,Ubuntu 或者 Linux Mint

$ sudo apt-get install curl git apache2 mysql-server mysql-client php5 php5-mysql
$ sudo git clone https://github.com/cachethq/Cachet.git /var/www/cachet
$ cd /var/www/cachet
$ sudo git checkout v1.1.1
$ sudo chown -R www-data:www-data .

在基於 Debian 的系統上設置 LAMP 架構的更多細節,參考這個教程

Fedora, CentOS 或 RHEL

在基於 Red Hat 系統上,你首先需要設置 REMI 軟體庫(以滿足 PHP 的版本需求)。然後執行下面命令。

$ sudo yum install curl git httpd mariadb-server
$ sudo yum --enablerepo=remi-php56 install php php-mysql php-mbstring
$ sudo git clone https://github.com/cachethq/Cachet.git /var/www/cachet
$ cd /var/www/cachet
$ sudo git checkout v1.1.1
$ sudo chown -R apache:apache .
$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --reload
$ sudo systemctl enable httpd.service; sudo systemctl start httpd.service
$ sudo systemctl enable mariadb.service; sudo systemctl start mariadb.service

在基於 Red Hat 系統上設置 LAMP 的更多細節,參考這個教程

配置 Cachet 的後端資料庫

下一步是配置後端資料庫。

登錄到 MySQL/MariaDB 服務,然後創建一個空的資料庫稱為『cachet』。

$ sudo mysql -uroot -p
mysql> create database cachet;
mysql> quit

現在用一個示例配置文件創建一個 Cachet 配置文件。

$ cd /var/www/cachet
$ sudo mv .env.example .env

在 .env 文件里,填寫你自己設置的資料庫信息(例如,DB_*)。其他的欄位先不改變。

APP_ENV=production
APP_DEBUG=false
APP_URL=http://localhost
APP_KEY=SomeRandomString

DB_DRIVER=mysql
DB_HOST=localhost
DB_DATABASE=cachet
DB_USERNAME=root
DB_PASSWORD=<root-password>

CACHE_DRIVER=apc
SESSION_DRIVER=apc
QUEUE_DRIVER=database

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ADDRESS=null
MAIL_NAME=null

REDIS_HOST=null
REDIS_DATABASE=null
REDIS_PORT=null

第三步:安裝 PHP 依賴和執行資料庫遷移

下面,我們將要安裝必要的PHP依賴包。我們會使用 composer 來安裝。如果你的系統還沒有安裝 composer,先安裝它:

$ curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

現在開始用 composer 安裝 PHP 依賴包。

$ cd /var/www/cachet
$ sudo composer install --no-dev -o

下面執行一次性的資料庫遷移。這一步會在我們之前創建的資料庫裡面創建那些所需的表。

$ sudo php artisan migrate

假設在 /var/www/cachet/.env 的資料庫配置無誤,資料庫遷移應該像下面顯示一樣成功完成。

下面,創建一個密鑰,它將用來加密進入 Cachet 的數據。

$ sudo php artisan key:generate
$ sudo php artisan config:cache

生成的應用密鑰將自動添加到你的 .env 文件 APP_KEY 變數中。你不需要自己編輯 .env。

第四步:配置 Apache HTTP 服務

現在到了配置運行 Cachet 的 web 服務的時候了。我們使用 Apache HTTP 伺服器,為 Cachet 創建一個新的虛擬主機,如下:

Debian,Ubuntu 或 Linux Mint

$ sudo vi /etc/apache2/sites-available/cachet.conf
<VirtualHost *:80>
    ServerName cachethost
    ServerAlias cachethost
    DocumentRoot "/var/www/cachet/public"
    <Directory "/var/www/cachet/public">
        Require all granted
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

啟用新虛擬主機和 mod_rewrite:

$ sudo a2ensite cachet.conf
$ sudo a2enmod rewrite
$ sudo service apache2 restart

Fedora, CentOS 或 RHEL

在基於 Red Hat 系統上,創建一個虛擬主機文件,如下:

$ sudo vi /etc/httpd/conf.d/cachet.conf
<VirtualHost *:80>
    ServerName cachethost
    ServerAlias cachethost
    DocumentRoot "/var/www/cachet/public"
    <Directory "/var/www/cachet/public">
        Require all granted
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

現在重載 Apache 配置:

$ sudo systemctl reload httpd.service

第五步:配置 /etc/hosts 來測試 Cachet

這時候,初始的 Cachet 狀態頁面應該啟動運行了,現在測試一下。

由於 Cachet 被配置為Apache HTTP 服務的虛擬主機,我們需要調整你的客戶機的 /etc/hosts 來訪問他。你將從這個客戶端電腦訪問 Cachet 頁面。(LCTT 譯註:如果你給了這個頁面一個正式的主機地址,則不需要這一步。)

打開 /etc/hosts,加入如下行:

$ sudo vi /etc/hosts
<cachet 伺服器的 IP 地址>    cachethost

上面名為「cachethost」必須匹配 Cachet 的 Apache 虛擬主機文件的 ServerName。

測試 Cachet 狀態頁面

現在你準備好訪問 Cachet 狀態頁面。在你瀏覽器地址欄輸入 http://cachethost。你將被轉到如下的 Cachet 狀態頁的初始化設置頁面。

選擇 cache/session 驅動。這裡 cache 和 session 驅動兩個都選「File」。

下一步,輸入關於狀態頁面的基本信息(例如,站點名稱、域名、時區和語言),以及管理員認證賬戶。

你的狀態頁初始化就要完成了。

繼續創建組件(你的系統單元)、事件或者任意你要做的維護計劃。

例如,增加一個組件:

增加一個維護計劃:

公共 Cachet 狀態頁就像這樣:

集成了 SMTP,你可以在狀態更新時發送郵件給訂閱者。並且你可以使用 CSS 和 markdown 格式來完全自定義布局和狀態頁面。

結論

Cachet 是一個相當易於使用,自託管的狀態頁面軟體。Cachet 一個高級特性是支持全 JSON API。使用它的 RESTful API,Cachet 可以輕鬆連接單獨的監控後端(例如,Nagios),然後回饋給 Cachet 事件報告並自動更新狀態。比起手工管理一個狀態頁它更快和有效率。

最後一句,我喜歡提及一個事。用 Cachet 設置一個漂亮的狀態頁面是很簡單的,但要將這個軟體用好並不像安裝它那麼容易。你需要完全保障所有 IT 團隊習慣準確及時的更新狀態頁,從而建立公共信息的準確性。同時,你需要教用戶去查看狀態頁面。最後,如果沒有很好的填充數據,部署狀態頁面就沒有意義,並且/或者沒有一個人查看它。記住這個,尤其是當你考慮在你的工作環境中部署 Cachet 時。

故障排查

補充,萬一你安裝 Cachet 時遇到問題,這有一些有用的故障排查的技巧。

  1. Cachet 頁面沒有載入任何東西,並且你看到如下報錯。
production.ERROR: exception &apos;RuntimeException&apos; with message &apos;No supported encrypter found. The cipher and / or key length are invalid.&apos; in /var/www/cachet/bootstrap/cache/compiled.php:6695

解決方案:確保你創建了一個應用密鑰,以及明確配置緩存如下所述。

$ cd /path/to/cachet
$ sudo php artisan key:generate
$ sudo php artisan config:cache
  1. 調用 composer 命令時有如下報錯。
- danielstjules/stringy 1.10.0 requires ext-mbstring * -the requested PHP extension mbstring is missing from your system.
- laravel/framework v5.1.8 requires ext-mbstring * -the requested PHP extension mbstring is missing from your system.
- league/commonmark 0.10.0 requires ext-mbstring * -the requested PHP extension mbstring is missing from your system.

解決方案:確保在你的系統上安裝了必要的 PHP 擴展 mbstring ,並且兼容你的 PHP 版本。在基於 Red Hat 的系統上,由於我們從 REMI-56 庫安裝PHP,所以要從同一個庫安裝擴展。

$ sudo yum --enablerepo=remi-php56 install php-mbstring
  1. 你訪問 Cachet 狀態頁面時得到一個白屏。HTTP 日誌顯示如下錯誤。
PHP Fatal error:  Uncaught exception &apos;UnexpectedValueException&apos; with message &apos;The stream or file "/var/www/cachet/storage/logs/laravel-2015-08-21.log" could not be opened: failed to open stream: Permission denied&apos; in /var/www/cachet/bootstrap/cache/compiled.php:12851

解決方案:嘗試如下命令。

$ cd /var/www/cachet
$ sudo php artisan cache:clear
$ sudo chmod -R 777 storage
$ sudo composer dump-autoload

如果上面的方法不起作用,試試禁止 SELinux:

$ sudo setenforce 0 

via: http://xmodulo.com/setup-system-status-page.html

作者:Dan Nanni 譯者:wyangsun 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國