2 min read

Uptime Monitoring memakai Node.js

Beberapa hari ini lagi mikirin ide untuk pemakaian domain dan vps yang nganggur, dan alhamdulillah akhirnya dapat ide juga.
Sebuah vps dari Digital Ocean, dengan memory 512MB, dan domain www.vpsdi.com, akhirnya dipakai untuk menjalankan sebuah program monitoring memakai Node.js dengan mempergunakan script dari fzaninotto
Program monitoring uptime ini, dijalankan dengan memakai sistem proxy melalui Nginx, supaya vpsnya juga dapat dipergunakan untuk menghosting situs lain.
Berikut adalah cara-cara membuat programnya berjalan :

  • Install Node.js
    # apt-get install python g++ make checkinstall
    # mkdir ~/src && cd $_
    # wget -N http://nodejs.org/dist/node-latest.tar.gz
    # tar xzvf node-latest.tar.gz && cd node-v*
    # ./configure
    # make && make install
    Verify that your Node.js and Npm have been installed :
    # node -v
    # npm -v
  • Install Mongodb
    # apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
    # echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list
    # apt-get update -y
    # apt-get install mongodb-10gen
    start mongodb
    # /etc/init.d/mongodb start
  • Membuat database, user dan password di Mongodb
    # mongo
    > use uptime # ini adalah nama database
    > db.addUser('namauser','password');
    > exit
  • Cloning repository Git dan konfigurasinya
    # apt-get install git -y
    # git clone https://github.com/fzaninotto/uptime
    # cd uptime
    Menginstall package yang diperlukan
    # npm install
    Testing aplikasinya
    # node app
    Matikan aplikasi dengan menekan Ctrl+C
  • Atur konfigurasi file di /uptime/config/default.yaml
    mongodb:
      server:   localhost
      database: uptime # silakan disesuaikan nama databasenya
      user:     user # silakan disesuaikan usernya
      password:	uptime # silakan disesuaikan passwordnya
      connectionString:       # alternative to setting server, database, user and password separately
    monitor:
      name:                   origin
      apiUrl:                 'http://123.123.123.123:8082/api' # IP dari vps
      pollingInterval:        10000      # ten seconds
      timeout:                5000       # five seconds
      userAgent:              NodeUptime/3.0 (https://github.com/fzaninotto/uptime)
    analyzer:
      updateInterval:         60000      # one minute
      qosAggregationInterval: 600000     # ten minutes
      pingHistory:            8035200000 # three months
    autoStartMonitor: true
    server:
      port:     8082
    plugins:
      - ./plugins/console
      - ./plugins/patternMatcher
      - ./plugins/httpOptions
      # - ./plugins/email
      - ./plugins/basicAuth
    email:
      method:      SMTP  # possible methods are SMTP, SES, or Sendmail
      transport:         # see https://github.com/andris9/nodemailer for transport options
        service:   Gmail # see https://github.com/andris9/Nodemailer/blob/master/lib/wellknown.js for well-known services
        auth:
          user:          # The email account username, e.g. 'username@gmail.com'
          pass:          # The email account password, e.G. 'password'
      event:
        up:        true
        down:      true
        paused:    false
        restarted: false
      message:
        from:            # The message sender, e.g. 'Fred Foo <foo@blurdybloop.com>'
        to:              # The message recipient, e.g. 'bar@blurdybloop.com, baz@blurdybloop.com'
      dashboardUrl: 'http://123.123.123.123:8082'
    basicAuth:
      username:    namauser
      password:    password
    verbose: true # only used in dev
  • Konfigurasi Nginxnya :
    server {
    	listen 80;
    	listen [::]:80;
    	server_name vpsdi.com;
    	rewrite ^/(.*) http://www.vpsdi.com/$1 permanent;
    }
    server {
    	listen 80;
    	listen [::]:80;
    	server_name www.vpsdi.com;
    	location / {
                proxy_pass http://123.123.123.123:8082/;
                proxy_set_header Host $host;
                proxy_buffering off;
        }
    }
  • Menjalankan aplikasi
    Masuk ke direktory tempat menginstall aplikasi, misalnya :
    # cd /home/uptimoe/
    # node app

    Aplikasi akan berjalan selama jendela sshnya masih terbuka/berjalan. Untuk membuat agar aplikasi Node.js terus berjalan, kita bisa mempergunakan program supervisord, namun kelemahannya vps harus direstart untuk mendeteksi penambahan konfigurasinya. Inilah yang menyebabkan vps dari Digital Ocean saya uptimenya rendah 😀

  • Selanjutnya, aplikasi tadi bisa dibuka dengan cara membuka alamat IP diakhiri dengan Port yang dipakai tadi
    http://123.123.123.123:8082