Puppet Configuration Management Tool

July 28th, 2010

Introduction

Puppet is a Ruby based Configuration Management System with client/server model and it was licensed under GPLv2 .It has one Master server puppetmasterd  and all other machines are configured as puppet clients . We set every configuration at the puppet server and then push them to all clients which are connected to the master. The client puppet correctly apply the corresponding configurations at the client regardless of their platform difference.

Puppet is a gift to the server administrators who need to manage large number of systems with different flavors of Gnu/Linux systems ,Mac, Solaris and other Unix Based systems.If we are managing it via remote administration then it would be a headache to the administrator and if the systems are different then the complexity will increase. Some accidental configuration changes may cause problems resulting in inconsistency working of the server. If we are using the puppet for the configuration management then it will be an one time implementation of these configurations only at puppet server, then we just duplicate it on different puppet clients with out any delay.

Another power of the puppet is, it using a Declarative Language to define configuration settings at the puppet master server. This language includes all major high level language features like Functions, Conditional Statements, Inheritance and other OOPs concepts. This feature makes the Puppet configurations settings are more readable, reusable and consistent when we compared with other configuration management tools like Cfengine.

Working

Puppet master server hold all clients configurations, each client will contact the server via port 8140 (by default). The connection between server and client are encrypted. The client will generate a self signed key before it will connect to server and will submit this self signed key to the master server and get the verified key back, here master server acts like a Certification Authority. After this process client will establish a encrypted session with server ,and get the configuration settings, compile and apply it on client system. The client will show an error if  there is any at the configuration definition when compiling. We can verify this at puppet server and client log file.

Here is the outline of puppet server and client Architecture

Puppet Architecture

Puppet Architecture

Installation

Before installing the puppet we need to setup some dependencies needed for puppet. First we need ruby with common library files(xml,ssl,etc.) installed, and facter, its an another ruby project to get all system informations, facter will be installed in all puppet clients. The puppet server get the client configuration settings and other system specific informations from the facter.

You can use the ruby’s inbuilt library management tool rubygem(rake) similar to CPAN for Perl to solve the dependency problems with libraries.

facter installation :-

Get latest version from www.reductivelabs.com


tar -zvf facter-<version>.tar.gz

cd facter

ruby install.rb

facter --version

puppet installation :-

If we are installing from the package manager there will be two packages, puppetd as the client and puppet-master as the puppet server, we need to install them both to setup client and server. If we are install form the source we can install both from the source code.

download latest package from the www.puppetlabs.com, then similar to facter installation,


tar -xzvf puppet-<latest version>;

cd puppet-<latest-version>;

ruby install.rb

This step will install the required packages for the puppet client and server. If you have any dependency problem then it will be most of the time due to the version mis match problem between ruby/puppet/facter, so select the version accordingly to avoid these types of errors.

By default the configuration files are listed under /etc/postfix and all others are at /var/lib/puppet  folder including log files.

Currently puppet support all major Unix like systems but not Windows.The latest versions of the puppet has introduced support to the windows systems too, by developing Windows specific facter tool to get Windows system informations and puppet.

How to configure Puppet server :-

After Successful installation of puppet master server and client, there will be set of daemons associated with this package, it also provide commands line utility to manage these daemons. They are,


puppetmasted   #Puppet Master Server

puppetd            #puppet Client.

puppetca           #Key management daemon

#and Set of other Utility commands.

The puppet server will work with out creating configuration files explicitly, they are already pre-configured with corresponding daemons. But to start the interaction with client we need to do some changes. Before that we can check the structure of the configuration file of the puppet.

It good practice using explicit configuration file,the latest versions of puppet using single configuration file to manage every daemons. By default configuration files are comes under /etc/puppet. The file /etc/puppet/puppet.conf is the file where we store all the configuration details major daemons, puppet.conf using special type of configuration structure to include all daemons configuration details. It holds following parts,


#Cat /etc/puppet/puppet.conf

[main]

Here We specify Set of configurations default to all daemons.

[puppetmasterd]

Here comes the puppet master servers specific configuration details.

[puppetd]

To include the Puppet client configuration.

[puppetca]

Configuration details of puppet key management tool.

To get all the parameters under each daemon and main section with its functional details, please refer this page

How to Configure Puppet Client With Puppet Server

To setup a client we  just have to install the puppet client version or every package in another system. Your master server is now capable to work as a puppet client too. At the master server we need to specify the set of configuration that we want enforce it with our puppet client.

Puppet server and client using Hostname to communicate with each other and also used it with key generation and signing, so we need a stable hostname resolution system (DNS or Local settings) in our network to ensure the proper connection between client and server.Then after that properly select the hostname to your server and clients like,

puppet-server.com #For your Master Server

puppet-client1.com,puppet-client2.com,etc... #Your clients.

After this correct hostname allocation we need to start the server and client.Use command line options at first to know the correct interaction between client and server.

To start master server :-

 puppetmasterd --no-daemonize --logdest console

Then Start the puppet Client, specify the server name


puppetd --server puppet-server.com --verbose --waitforcert 30

At the client side we will get following message with the information about the creation of self signed key and waiting for the verification from server.


<em>Creating a new SSL key for puppet-client.com
Creating a new SSL certificate request for puppet-client.com
Certificate Request fingerprint (md5): 37:89:4E:86:C0:A7:5B:24:1A:E2:9B:85:83:90:0F:CE
Did not receive certificate</em>

<em>

At same time server side we will get the following message at the console.


notice: Starting Puppet master version 2.6.0
notice: puppet-client.com has a waiting certificate request

So at the server side we need to verify this key from the puppet-client.com. For that we can use the key management tool puppetca.


puppetca --list  #To list the unverified requests.

puppetca --sign puppet-client.com  # To complete the server verification.

Now If we are restarting the puppet client with following command, you can see the client will immediately apply the configurations. You can check this from the log file or from the console if you are running the client none daemonize mode.


puppetd --server puppet-server.com

Note:- If we are specify these settings at puppet.conf then you can just type the command without any parameter to start appropriate daemons.

The Configuration Management

Last and very powerful feature of the puppet is the creation of Client configuration specifications. For that puppet using one Language which support most of the high level language constructs like OOPs. So lets check for the one simple configuration which change the permission of /etc/passwd file of all the client connected with server to 640 and ensure the apache webserver.

These configurations specifications are defined under a file “/etc/puppet/manifests/site.pp” ,default file , we can split it in to several files then include them at sites.pp.

Here is the sample site.pp file.


file { "password":
name => "/etc/passwd",
 owner => "root",
 group => "bin",
 mode => 644,
}

class apache {

package {       httpd: ensure => installed  }

service { "httpd":

name => $operatingsystem ? {
debian  => "apache2",
redhat  => "httpd",
default => "apache",
CentOS  => "httpd",
},
ensure => running,
require => Package["httpd"],
}
}

node 'puppet-client.com' {
include apache
}
#All other nodes which are not defined and matched with any definitions ,will use the follwing node definition.

node default {
case $operatingsystem {
CentOS: {include apache }
default: {}
}
}

Above file is the Puppet configuration specification written in puppet declarative language.

Language have lot of constructs to define the resource and its properties …

more about it soon….

VN:F [1.9.1_1087]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.1_1087]
Rating: 0 (from 0 votes)

Haridas N linux , , , ,

Dynamic Agent Login in AsteriskNOW

July 21st, 2010

This blog explains how an agent can login to a queue directly through an extension. In asterisk’s terms an agent is human and an extension is device. Here an agent will be able to login into the queue through an extension by dialing a queue login number and you do not need to make any configurations in agents.conf or queues.conf.  For this setup to work properly, you need to have the correct dialplans in corresponding  extension files.

In the case of asteriskNOW, extension_additional.conf contains dialplans to handle  queue login.

[ext-queues]
exten => 5000*,1,Macro(agent-add,5000,)
exten => 5000**,1,Macro(agent-del,5000,5000)

If [macro-agent-add] and [macro-agent-del] contexts are already present in extensions_additional.conf you need to put the dialplans for these contexts in /etc/asterisk/extensions_override_freepbx.conf otherwise you can add the dialplans in /etc/asterisk/extensions_custom.conf.

[macro-agent-add]
include => macro-agent-add-custom
exten => s,1,Wait(1)
exten => s,n,Macro(user-callerid,SKIPTTL)
exten => s,n,Set(CALLBACKNUM=${AMPUSER})
exten => s,n,AddQueueMember(${ARG1},Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,UserEvent(Agentlogin,Agent: ${CALLBACKNUM})
exten => s,n,Wait(1)
exten => s,n,Playback(agent-loginok&with&extension)
exten => s,n,SayDigits(${CALLBACKNUM})
exten => s,n,Hangup
exten => s,n,MacroExit()
exten => s,n(invalid),Playback(pbx-invalid)
exten => s,n,Goto(a3)

; end of [macro-agent-add]
[macro-agent-del]
include => macro-agent-del-custom
exten => s,1,Wait(1)
exten => s,n,Macro(user-callerid,SKIPTTL)
exten => s,n,Set(CALLBACKNUM=${AMPUSER})
exten => s,n,ExecIf($["${CALLBACKNUM}" = ""],Set,CALLBACKNUM=${CALLERID(number)})
exten => s,n,RemoveQueueMember(${ARG1},Local/${CALLBACKNUM}@from-internal/n)
exten => s,n,UserEvent(RefreshQueue)
exten => s,n,Wait(1)
exten => s,n,Playback(agent-loggedoff&with&extension)
exten => s,n,SayDigits(${CALLBACKNUM})
exten => s,n,Hangup
; end of [macro-agent-del]

In this dialplan 5000 is the queue number. You can use any queue number instead of it. To login to queue dial 5000* from your phone (either a softphone like xlite or a hard phone like Linksys) and you will hear a login confirmation and to logout from the queue you need to dial 5000** as per the dial plan. The advantage of this method is that an agent can do a login or logout by just dialing the corresponding number. Once logged in we can check current members in the queue using the command.

From shell
#asterisk -rx "queue show 5000"   (5000 is the queue number)
From asterisk CLI
> queue show 5000
VN:F [1.9.1_1087]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.1_1087]
Rating: 0 (from 0 votes)

Tino Thomas linux , , , , , , ,

How to customize call recording location in asteriskNOW

July 20th, 2010

Customize call recording location in asteriskNow.

By default AsteriskNOW saves call recordings under the directory /var/spool/asterisk/monitor. This way of call recording has got some disadvantages since number of files can grow beyond a limit . You will find it difficult to recognize call recordings related to a particular extension. A solution to this issue is to customize the call recording location. You need to override the dialplan for the context [macro-record-enable] present in /etc/asterisk/extensions_additional.conf. To override these dialplans you need to add new dialplan in a file called /etc/asterisk/extensions_override_freepbx.conf.  Following is the default dialplan for the context [macro-record-enable] present in /etc/asterisk/extensions_additional.conf.


[macro-record-enable]
include => macro-record-enable-custom
exten => s,1,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR(w)
exten => s,n,StopMixMonitor()
exten => s,n(check),AGI(recordingcheck,${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)},${UNIQUEID})
exten => s,n,MacroExit()
exten => s,1+998(record),MixMonitor(${MIXMON_DIR}${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})
; end of [macro-record-enable]

You need to add the following dialplan in /etc/asterisk/extensions_override_freepbx.conf, which will override the above dialplan to customize the call recording location.


[macro-record-enable]
include => macro-record-enable-custom
exten => s,1,GotoIf($["${BLINDTRANSFER}" = ""]?check)
exten => s,n,ResetCDR(w)
exten => s,n,StopMixMonitor()
exten => s,n(check),AGI(recordingcheck,${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)},${UNIQUEID})
exten => s,n,MacroExit()
exten => s,n(record),System(/bin/mkdir -p /var/spool/asterisk/monitor/freepbx/${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},
,%m)}/${STRFTIME(${EPOCH},,%d)}/${ARG1}/${UNIQUEID})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/freepbx/${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},,%m)}/${STRFTIME($
{EPOCH},,%d)}/${ARG1}/${UNIQUEID}/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})

The changes made are

exten => s,n(record),System(/bin/mkdir -p /var/spool/asterisk/monitor/freepbx/${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},
,%m)}/${STRFTIME(${EPOCH},,%d)}/${ARG1}/${UNIQUEID})

Here we are using ‘System’ command to create directories during the call recording. Inside the system command we can execute the unix shell commands. Here we used ‘mkdir’ command to create directories followed by a number of variables in asterisk. Here ‘STRFTIME’ used to get the year, month & date . ${ARG1} used to get the asterisk user extension ,who is participating in that call ;${UNIQUEID} to get the unique id of that call. UNIQUEID is assigned by asterisk and it is the unix time of orgination of that call.

<pre>exten => s,n,MixMonitor(/var/spool/asterisk/monitor/freepbx/${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},,%m)}/${STRFTIME($
{EPOCH},,%d)}/${ARG1}/${UNIQUEID}/${CALLFILENAME}.${MIXMON_FORMAT},,${MIXMON_POST})</pre>

In succeeding priority we use MixMonitor command to record the conversations in that channel. The format of MixMonitor command is MixMonitor(<file>.<ext>[|<options>[|<command>]]). Here in the ‘filename’ field we will give path of created directory in the preceding line.

Once you made the above changes you need to reload the dialplan through either of the following two ways.

from shell

#asterisk -rx “dialplan reload”

from asterisk CLI

> dialplan reload

VN:F [1.9.1_1087]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.1_1087]
Rating: 0 (from 0 votes)

Tino Thomas linux , , , , , , ,

How to install AsterCRM and integrate it with external CRM

July 19th, 2010

1) Download and unzip the source (assuming your WEB root is /var/www/html)

Get the software from


http://astercc.org/downloads
cd /var/www/html

unzip astercc-X.X.zip

mv astercc-X.X astercc

/var/www/html/astercc/astercrm                 # main directory and PHP scripts  of astercrm
/var/www/html/astercc/asterbilling              #  main directory and PHP scripts of asterbilling
/var/www/html/astercc/sql                          # sql to create database  tables
/var/www/html/astercc/script                      # astercc  daemon and some other script files
/var/www/html/astercc/index.html               #guide page
/var/www/html/astercc/astercc_full_logo.png  #logo

2) It is highly advised that the whole script directory be moved to a more secure location like /opt and out of the WEB root directory


mkdir -p /opt/asterisk/scripts/astercc
mv  /var/www/html/astercc/scripts/*  /opt/asterisk/scripts/astercc
chmod +x /opt/asterisk/scripts/astercc/*

3) Create the MySQL database and tables, asterCRM need mysql 4.1 or above

Note: here we create the database named astercc, it both used for astercrm and asterbilling, you could use whatever db name you want use your configration to replace “yourmysqluser” and “yourmysqlpasswd”


mysqladmin -uyourmysqluser  -pyourmysqlpasswd create astercc
mysql -uyourmysqluser  -pyourmysqlpasswd astercc < /var/www/html/astercc/sql/astercc.sql

4) Update /etc/asterisk/manager.conf to enable Manager connections

Note:allow asterisk on different server .Add something like this to the manager.conf file:


[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
;displayconnects = yes

;the following line could be  changed by yourself
[astercc]
secret = astercc
read = system,call,log,verbose,command,agent,user
write =  system,call,log,verbose,command,agent,user
deny=0.0.0.0/0.0.0.0
; if you want to run astercc on another  server
; use your astercc ip to replace 127.0.0.1 or add a  new line
permit=127.0.0.1/255.255.255.0

5) Modify config file

for asterCRM:
modity /var/www/html/astercc/astercrm/astercrm.conf.php to fit your configration
for asterCC:
modity /var/www/html/astercc/asterbilling/asterbilling.conf.php to fit your configration

6) Start Asterisk and daemon

There are two daemon modes you can choose, astercc mode or eventsdaemon(can be used for astercrm only) mode.

A) For astercc mode(can be used for both astercrm and asterbilling.

try start astercc:
modify /opt/asterisk/scripts/astercc/astercc.conf to fit your configuration mainly database setting and AMI setting.

run astercc for test


/opt/asterisk/scripts/astercc/astercc

if you could read like following line:


"Connecting to mysql database on  127.0.0.1:
Database connection successful.
Connecting to asterisk on 127.0.0.1 port 5038:
Asterisk socket connection successful.
Check  asterisk username & secret:
Success
Monitor Start:
...(some log message)..."

congratulations, your astercc works well, use 'ctrl + c' to exit
or else, please check your database/AMI configration in astercc.conf

Start up astercc (default settings):
modify /var/www/html/astercrm/astercrm.conf.php set eventtype to curcdr


/opt/asterisk/scripts/astercc/astercc -d

Start up astercc daemons when system startup:
Note: This option can only fit to redhat-release system. If you want astercc daemons to start automatically when you boot your machine, you need to :


cp /opt/asterisk/scripts/astercc/asterccd  /etc/rc.d/init.d
chmod 755 /etc/rc.d/init.d/asterccd
chkconfig --add asterccd

Advice: Configure your astercc restart once everyday, it’s not necessary, but it ’s good for your astercc operation. for example: you want to restart astercc at 0′clock everyday, just do the following line as root.


crontab -e
add a new  line:
0 0 * * * /etc/rc.d/init.d/asterccd restart
the first "0" figures minutes and the second "0" figures hours.

B) For eventsdaemon mode(can be used for astercrm only) try start eventsdaemon:
modify eventsdaemon.pl to fit your configuration mainly database setting and AMI setting.

/opt/asterisk/scripts/astercc/eventsdaemon.pl
if you could  read:

"Message: Authentication accepted"

congratulations,  your eventsdaemon works well
use ctrl + c to exit
or else, please check your database/AMI configration in eventsdaemon.pl

Start eventsdaemon (default settings):
modify astercrm.conf set eventtype to event


/opt/asterisk/scripts/astercc/eventsdaemon.pl -d

At some point it may be desirable to delete unwanted events from the database table. The eventsdaemon is also designed for this. please check eventsdaemon.pl for parameter “log_life” .also we provide a “watch dog”, it would help you restart eventsdaemon when it shutdown add this shell to your start-up file, for example:


echo /opt/asterisk/scripts/astercc/eventdog.sh >>  /etc/rc.d/rc.local

so that everytime your server start, eventsdaemon would be loaded

7) Set file & folder access for astercrm

chmod 777 /var/www/html/astercc/astercrm/upload
chmod 777 /var/www/html/astercc/astercrm/astercrm.conf.php

If asterisk and astercrm running in one server, you could make a soft link to astercrm web directory for listening monitor records online.
ln -s /var/spool/asterisk/monitor/ /var/www/html/astercc/astercrm/monitor
note: astercrm support listen monitors online only can be wav format file.

8 ) Web browsing

For astercc:


http://localhost/astercc

or  http://YOUR-WEB-SERVER-ADDRESS/astercc

For astercrm:


http://localhost/astercc/astercrm

or  http://YOUR-WEB-SERVER-ADDRESS/astercc/astercrm

login with admin/admin

Integration of External CRM With AsterCRM

In your astercrm, go to
Manager-> preference

If asterCRM use external CRM software, change the value of enable_external_crm to 1. When using external CRM, the default page to be displayed is specified in external_crm_default_url .Value of external_crm_url specifies, when asterCRM need to pop up, which url would recevie the event, %callerid: %calleeid: %method dialout or dialin. Save the changes made by clicking Save button.

VN:F [1.9.1_1087]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.1_1087]
Rating: 0 (from 0 votes)

Tino Thomas linux , , , , , , ,

What is Video Streaming

July 13th, 2010

Video stream servers are meant to provide the video content across internet in reliable and generic way so that any client can access easily. They uses diffrent protocols other than http namely rtsp, rtmp, rtp etc. And these protocols mainly uses udp. A basic video streaming system contains 3 components. A video publishing side, The video streaming server and the client side player (usually flash player embedded in the webpage). The video publishing system will upload a live or static video content to the Video Stream Server and the video stream sever will broadcast (means streaming)  that uploaded video such that the clients can view the videos without bothering about any codecs. The video uploading system should have an encoder to publish live contents to the server. The encoder does the process of transcoding to provide the content to the desired format of the stream server.

Major stream server applications are Wowza Media Server, Adobe Flash Media Server, Red5:open source flash server, Darwin Streaming server (open source) etc.

Working
Actual work flow when a web client is accessing stream video from a website is deiscribed in the figure. When the user clicks on a particular video icon the web server passes a request to the stream server. It will also notify the information about the client side  player (usually it will be a flash player application). Because the if it is a flash client then the request sent will be rtmp (Real Time Messaging Protocol ) protocol based. The stream server will stream (send the video packets) video based on rtmp protocol for flash players. For client players like vlc, apple quick-time etc  the protocol used is rtsp (Real Time Streaming Protocol).

A video streaming setup contains 3 components they are

  1. Video Stream server
  2. Web server for providing a web interface to the clients
  3. The flash player embedded on the web page (Or stand alone players like vlc, quicktime etc if not accessing through the site).

If the video server streams a live video then one publishing site will be there which will provide the  the live video source. Figure 2 illustrates such a video stream server setup. A video Streaming server application would be running on the Streaming server. The broadcaster would use an live  encoding tool (eg: flash live media encoder). If the client is accessing the video on an html web page the player might be adobe flash player. Flash offers online broadcasters a platform rich with unmatchable flexibility and superior quality video delivery. Flash has fast become the standard for delivery of rich-media over the internet. TV and Video Broadcasters and a wide variety of content creators around the globe have chosen Flash as their No. 1 streaming format.

Live video stream setup

If the video server streams a live video then one publishing site will be there which will provide the the live video source. Figure 2 illustrates such a video stream server setup. A video Streaming server application would be running on the Streaming server. The broadcaster would use an live encoding tool (eg: flash live media encoder). If the client is accessing the video on an html web page

the player might be adobe flash player. Flash offers online broadcasters a platform rich with unmatchable flexibility and superior quality video delivery. Flash has fast become the standard for delivery of rich-media over the internet. TV and Video Broadcasters and a wide variety of content creators around the globe have chosen Flash as their No. 1 streaming format.

VN:F [1.9.1_1087]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.1_1087]
Rating: 0 (from 0 votes)

Jaseer Articles, general , , , ,

new infrastructure getting ready

April 29th, 2010

Well, our new office is getting ready in 2 weeks which will enable us to double our capacity and provide innovative technical solutions to a wider audience.

Here is work in progress:

view from a conference room.

sparksupport - managed service provider

VN:F [1.9.1_1087]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.1_1087]
Rating: +3 (from 3 votes)

Bobinson K B Uncategorized

E-mail Marketing Trend

April 6th, 2010

Email Marketing is not dead. SMB’s still believes Email Marketing as the popular way of marketing their products.

The other traditional marketing methods cannot be totally avoided because case studies shows that always try email marketing after you make a buzz using the traditional marketing methods like TV, news paper ads etc.

In a real world scenario suppose a company plans to market a new Laptop, they should first advertise the product using TV advertisement, newspaper and other traditional mediums. This will make the crowd aware that there is a new Laptop available in the market. Awareness plays a important role in the marketing
Next step is to send a customized mail to potential customers describing features of the new Laptop, its features, specifications, pricing and shops they are available. All the people who are aware of this product is definitely going to open and read this mail if it had reached his inbox.

If the mail is descriptive enough and a persuading one, for the potential customers there is a 90% chance that they makes an inquiry, and if you are providing a discount coupon along with this mail, the chance of inquiry further goes to 95%.

Once your product is purchased by the customers you can send out a feedback-form to these customers after a certain period of time. This enabled you to understand more about your product. If they have complaints you should rectify it as soon as possible and that makes customer happy because of you being pro-active. These steps will help you to further impress the customers and for creating goodwill about your product. Within no time your product is on the roll through word of mouth

VN:F [1.9.1_1087]
Rating: 10.0/10 (2 votes cast)
VN:F [1.9.1_1087]
Rating: +2 (from 2 votes)

Shijil T S email ,

Quick setup of Iozone benchmarking tool

February 24th, 2010

Introduction

Iozone is an open source file system benchmarking tool which lets you to evaluate various aspects of a filesystem performance like read, write, rewrite, random read etc etc. It is ported to various platforms and can be run on all major operating systems like Linux, Microsoft Windows Mac OS X. Though it can be used for the detailed analysis of the filesytem IO performances, here we describe in short how to install it in Linux and get the analysis plotted to a graph.

How to install

1. Download the rpm source fro the Iozone from the following link or enter the follwing command at the command prompt

wget http://www.iozone.org/src/current/iozone-3-338.i386.rpm

2. install Iozone using the following command

rpm -ivh /path/to/iozone-3-338.i386.rpm

Now the filesystem benchmarking tool is installed. To verify the installation you can find the files of Iozone tool in the directory /opt/iozone/

Plotting a graph from Iozone analysis

For the plotting of a graph you should ensure that gnuplot is already installed in your machine. Gnuplot is a command-driven opensource function plotting tool. If it isn’t installed you may install it using the following command

yum install gnuplot

After ensuring that you have got gnuplot installed. Lets try plotting the analysis of the Iozone tool on a graph. Here we will analyze the filesystem with in auto mode. Run th iozone command and redirect its output to a file.

/opt/iozone/bin/iozone -a -g 4m &gt; /tmp/test_analysis

In the above command we have set the maximum size of a file for auto mode  to 4mb with -g option. For brief study about Iozone commands use

/opt/iozone/bin/iozone -h

To generate the graph there is another command which is installed with the iozone tool ie Generate_Graphs. To plot the graph use the following commands

/opt/iozone/bin/Generate_Graphs /tmp/test_analysis

A new window will pop up with the plotted graph of the write performance. At the command line if you hit enter then new graph is plotted fro the rewrite performance. Thus there will be graph plotted for many IO performances as you hit enter each time. Evaluate the required IO performances from the set of graphs depending on the application that you are planning to deploy.

Have a nice day :)

VN:F [1.9.1_1087]
Rating: 10.0/10 (4 votes cast)
VN:F [1.9.1_1087]
Rating: 0 (from 0 votes)

Mobin Skariya linux , , , , ,

Email Feedback Loop (FBL)

February 20th, 2010

What is FBL

Usually when users do not want to receive any more mails from an email account they just click the “report spam button” available in their web mail or mail client. As a result of that a complaint will be raised against the ip from which this email is sent and the isp will start blocking this ip after the complaint rate increases a certain limit. So it is crucial to know the users who do not want to receive mails from us  so that we can remove them from the mailing list and mails will not be sent to these users again. A feedback loop is a mechanism whereby an ISP will let you know when one of its subscribers complains about your e-mail.

How to Sign up For Email Feedback Loop

To use this service, you should send a request for an ISP feedback loop either via email or through a web form. Most of the ips provide a web from to register their feedback loop program. The usual information you need to provide to sign up for a feedback loop are:

* IP addresses that you want to receive feedback loops for

* The list of domains you want to subscribe

* A valid abuse@ and/or postmaster@ email address on the domains you want to subscribe

* Your contact information: name, contact email and phone number

* The email address a feedback loop will be sent at

* Quantity of email messages sent daily (weekly, monthly) to the domain of the feedback look

* Type of email content you send

A confirmation email will be sent to the contact email address you specify. Once your request has been approved, Feedback Loop email will be sent to the email address listed in the “Feedback Loop Email” field.

How FBL Works

1. Sender sends a mail to the user

2. User complaints to his ISP about the message by hitting the report spam button

3. The sender  will be notified when a recipient complains about your email.

4. The sender will receive an email message saying something like “a spam complaint was registered for the IP address xxx.xxx.xxx.xxx”.

Sender’s original email message will be attached to that notification email.

Advantages of Feedback Loops

Feedback loops help you reveal unhappy subscribers, improve your email deliverability and decrease your spam complaint rate. This helps you to maintain a good reputation for the ips. Feedback loops allow you to check  deeply into your sign up process that adds user to their mailing list when one user signs up. Increased complaint rate can be caused by subscribers not realizing what they signed up for, subscribers not getting what they thought they signed up for, or a long delay between sign-up and the first mailing. So these feedback loops help the sending organization to improve the quality of their sign up process.

Different Feedback Loop Programs

Every ISP’s feedback loop is different, making the aggregate data sometimes challenging to manage. Some use a standardized format – the Abuse Reporting Format. Some send feedback in real time, others send in batches. Many send the entire offending message, others only provide the e-mail address – and still others send the body of the message but no address. For Yahoo only senders who sign their outbound emails with DomainKeys and/or DKIM are eligible to participate in their feedback loop program. AOL will only active the service after an ip ownership test.It verify that a particular domain has a right to receive abuse complaints for the ips in the submitted request. There are five possible tests to prove IP ownership. Passing any one of the five tests says “AOL, yourdomain.com has a right to receive abuse complaints on behalf of our IP.” Also different isps are providing options to modify the existing feedback loop. You may add more ips or remove existing ips through web forms. Also in any point if you do not want to use feedback loop service from an isp you may write to the postmaster department of corresponding isp for that.

Conclusion

This one-time action will help you keep a good email sender reputation and improve your email delivery rate into the recipient’s Inbox. So it is always better to have feedback loop.

VN:F [1.9.1_1087]
Rating: 8.5/10 (4 votes cast)
VN:F [1.9.1_1087]
Rating: +1 (from 1 vote)

Tino Thomas Mailservice ,

Installing Nginx with PHP-FPM on a Linux server

February 17th, 2010

Nginx (pronounced as Engine-x) is a high performance web server,reverse proxy, mail proxy server which was originally written by Igor Sysoev in 2005. Here we discuss about setting up a very basic nginx web server on your Linux server , capable of parsing php pages.

Installing Nginx on your Linux server

Installing nginx on your Linux server is very simple and even on the first try itself, you will not face any difficulties.

The steps that i have followed on my first nginx installation are given bellow (of course with the help of others tutorials and other resources available from net)


#(Change directory to /usr/local/src [ its a good practice to download and compile software's  from /usr/local/src ] )
cd /usr/local/src

#(download nginx source from "nginx.org")
wget http://nginx.org/download/nginx-0.8.33.tar.gz

#(Extract the source file )
tar -xzf nginx-0.8.33.tar.gz
cd nginx-0.8.33

#Now configure Nginx , here we are using the 2 basic configuration options
[ --sbin-path=/usr/local/sbin #the nginx binary path ]
[ --with-http_ssl_module      #Enables https module ]

./configure --sbin-path=/usr/local/sbin --with-http_ssl_module

since you have included the –with-http_ssl_module there is a possibility of getting the following error ( at least i got this error on a fresh centos machine since no pcre libraries were pre-installed on the system)

checking for PCRE library in /usr/include/pcre/ ... not found

checking for PCRE library in /usr/pkg/ ... not found

checking for PCRE library in /opt/local/ ... not found

./configure: error: the HTTP rewrite module requires the PCRE library.

You can either disable the module by using --without-http_rewrite_module

option, or install the PCRE library into the system, or build the PCRE library

statically from the source with nginx by using --with-pcre=
option.

If you get the above error while configuring nginx , please download pcre (Perl Compatible Regular Expressions) from “http://www.pcre.org/” and change the nginx configure command as given bellow

Read more…

VN:F [1.9.1_1087]
Rating: 9.7/10 (3 votes cast)
VN:F [1.9.1_1087]
Rating: +1 (from 1 vote)

Vishnuprasad R linux ,