機器監控不求人 - 猴子都會用的 Monit(Monitoring Your Ubuntu Machine for Dummies)

你是個前端工程師,但是,老闆賦予你MIS的神聖任務

還是,你是個後端工程師,無時無刻,要去看一下mysql是否還活著,apache2是否快掛了

還有,你是個全端工程師,雖然你已經強的跟神一樣,但是你就是不想要寫的script自動去重啟的service

這時候,你需要的是Monit

他可以幫你監控你的daemon processes、檔案系統、Network、Space

如果想要看完整的設定文件請點 Monit Documentation

整理一下,我的使用的感覺

  1. 使用DSL,所以用起來很直覺
  2. 使用 # 當作註解
  3. 不同的監控,可以有不同的動作(ex: alert, restart, stop, UNMONITOR)
  4. 彈性設定時間來監控
  5. 彈性設定幾次重啟後,就不要再重啟了
  6. 可以用if, else …等來做動作判斷!
  7. 提供網頁GUI,讓你很好的操作或是看伺服器狀態!
  8. 簡單來說,超多客製化應用!網路上也滿多資源可以參考!

但是,如果你跟我一樣是個懶人,這時候,你就需要看這篇文章

Read on →
MIS
Comments

[Ruby on Rails] Send Limited Mail on Staging Environment

For simulating production environment, we will build up a stage machine.

Plus, we usually use the copy of production database in stage server.

In some applications, we will send email to users for some purposes such as confirmation mail after user

register, reset password mail…etc.

And, in staging environment, we have to avoid our operators accidentally send email to real users.

Therefore, we have to implement some codes for filtering.

Let’s go

Read on →
Comments

[Howto] Using Google Analytics Enhanced Ecommerce Tracking Your Awesome Website via Ruby on Rails 如何在Ruby on Rails使用Google Analytics 進階電子商務追蹤

i-TRUE 的目標是成為全世界最棒的專業型Database Media Company

我每週一早上負責跟同事們介紹Google Analytics,這是其中一個介紹投影片!

陸續更新中…

Integrate Ruby on Rails With Google Analytics API

In this article, I try to get some Google Analytics data via Google API. Then, I saved data into MongoDB waiting for further calculation.

And you are able to learn

  1. How I do Google API pagination
  2. How I use module to build flexible function
  3. How I use Google Query Explorer to speed up development
  4. How to apply for google API access

Let’s check it out.

Read on →

Using Google Analytics for Email Click Tracking and Open Rate Tracking in Ruby on Rails

Requirement

  1. 每個連結的點擊數

  2. 開信率

Google Analytics

這是一個電子報,基本上屬於一種廣告!

那GA怎麼那麼厲害知道誰點了什麼?

該不會Google 大神,連Email也滲透?!

ps. 我猜他應該也差不多都知道我們在Email上的一舉一動,只要你用Gmail…

那GA要怎麼紀錄?

基本上就是將連結網址帶上一些”參數”,當使用者點了這個連結之後,就你就會被帶到那個連結網址,這時候那個網站一定有埋GA的javascript ,這就是他的Key~ GA透過js爬到你的網址,當他發現你有帶某些參數,他就知道你是從哪裡來的!

Read on →

[Ruby on Rails] Model Version Control Using Papertrail

Why use papertrail ?

ruby toolbox - active record versioning

Step1. Add lib

Gemfile

gem 'paper_trail', '~> 3.0.6'

Step2. create a migration

On Terminal

bundle exec rails generate paper_trail:install

他會建立,一個叫做versions的表

Step3. migrate

bundle exec rake db:migrate

Step4. Done

has_paper_trail 加上你想要追蹤的model

應用部分

若是想要不同model使用不同追蹤table?

假設我想要product有自己的versions表

  • Step1.

      rails g model product_version 
    
  • 貼上

      class CreateProductVersions < ActiveRecord::Migration
        def change
          create_table :product_versions do |t|
            t.string   :item_type, :null => false
            t.integer  :item_id,   :null => false
            t.string   :event,     :null => false
            t.string   :whodunnit
            t.text     :object
            t.datetime :created_at
            # t.string   :author_username 如果你需要自訂一些欄位讓他記錄,也可以在migration這邊加
          end
          add_index :product_versions, [:item_type, :item_id]
          end
        end
      end
    

ps. 這就是他本身內建會產生的欄位,只是我們手動把它copy一份出來

  • 別忘了

      bundle exec rake db:migrate
    
  • 改model ProductVersion

      class ProductVersion < PaperTrail::Version
        self.table_name = :product_versions
      end
    
  • 改model Product

      class Product < ActiveRecord::Base
          ...
          has_paper_trail class_name: 'ProductVersion'
          ...
      end
    

若是想要知道誰動了資料?

假設你有使用devise,然後是寫在後台

請加在 controller/admin/admin_controller.rb

def user_for_paper_trail
    admin_signed_in? ? current_admin.email : 'System'
end

假使你在前台,你可能需要這樣寫

def user_for_paper_trail
    user_signed_in? ? current_user.email : 'Public User'
end

若某個動作不想被追蹤

@product.without_versioning do
  @product.update_attributes :created_at => Time.now
end

若要刪除某個versions從哪天到某天

方法一:下SQL

delete from versions where created_at < 2014-01-01;

方法二:在rails c底下

PaperTrail::Version.delete_all ["created_at < ?", 1.year.ago]
Comments
Google Analytics Alternative