Monday, November 18, 2013

System Monitor

HƯỚNG DẪN TRIỂN KHAI HỆ THỐNG MONITOR HOST, SERVICE, NETWORK TRÊN UBUNTU
- Hệ thống monitor này giúp admin giám sát tình trạng hoạt động của các thiết bị và các dịch vụ mạng, băng thông mạng
- Cảnh báo qua email, sms, calling khi các thiết bị, dịch vụ mạng gặp sự cố


1.    INSTALL NAGIOS
1.1         INSTALLATION ALL COMPONENTS
from terminal prompt:
$: sudo apt-get install build-essential apache2 php5-gd wget libgd2-xpm libgd2-xpm-dev libapache2-mod-php5 libssl-dev

1.2         CONFIGURATION BASE FOR NAGIOS
$: sudo mkdir -p /etc/nagios /var/nagios
$: sudo groupadd --system --gid 9000 nagios
$: sudo groupadd --system --gid 9001 nagcmd
$: sudo adduser --system --gid 9000 --home /usr/local/nagios nagios
$: sudo usermod --groups nagcmd nagios
$: sudo usermod --append --groups nagcmd www-data
$: sudo chown nagios:nagios /usr/local/nagios /etc/nagios /var/nagios

1.3         INSTALLATION NAGIOS
$: cd /usr/local/src/
$: sudo wget http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.4.4/nagios-3.4.4.tar.gz
$: sudo wget http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz

1.4         COMPILE NAGIOS
$: sudo tar -xzvf /usr/local/src/nagios-3.4.4.tar.gz
$: cd /usr/local/src/nagios
$: sudo ./configure --sysconfdir=/etc/nagios --localstatedir=/var/nagios --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagcmd --with-openssl=/usr/bin/openssl --enable-perl-modules --with-mail=/usr/bin/postfix
$: sudo make all
$: sudo make install
$: sudo make install-init
$: sudo make install-config
$: sudo make install-commandmode

1.5         CONFIGURATION OF NAGIOS
make the first configuration, from terminal prompt the following commands:

$: sudo nano /etc/nagios/objects/contacts.cfg

and set as admin email

define contact{
 contact_name nagiosadmin ; 
 use generic-contact ; 
 alias Nagios Admin ; 
 }
Then

$: cd /usr/local/src/nagios
$: sudo make install-webconf

create a password for the nagiosadmin

$: sudo htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
$: sudo /etc/init.d/apache2 reload

check if everything is made well

$: sudo /usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg

1.6         INSTALL NAGIOS PLUGINS

$: cd /usr/local/src
$: wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz
$: sudo tar -zxvf /usr/local/src/nagios-plugins-1.4.16.tar.gz
$: cd /usr/local/src/nagios-plugins-1.4.16
$: sudo ./configure --sysconfdir=/etc/nagios --localstatedir=/var/nagios --with-nagios-user=nagios --with-nagios-group=nagios
$: sudo make
$: sudo make install

1.7         LAST CONFIGURATION OF NAGIOS
from terminal

$: sudo /usr/sbin/update-rc.d -f nagios defaults 99
$: sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
$: sudo /etc/init.d/nagios restart

restart the system

$: sudo reboot
and open the URL http://ip/nagios/ by our best browser, remember to use as access parameters nagiosadmin e nagiosadmin.
“cya to the next 1…. Njoy !”
2.    CONFIG NAGIOS SENDMAIL
2.1         Installation of Postfix
$: sudo apt-get install postfix
select “no configuration”.

2.2         Configuration of Postfix
proceed with the configuration, from terminal prompt:

$: sudo /etc/init.d/postfix stop
$: sudo dpkg-reconfigure postfix

When you installed Postfix you will be prompted to make configurative choices. You choosen “Internet” in this case:
General type of mail configuration: Internet Site
System mail name: e.g. servernagios.ideasnet.net
Root and postmaster mail recipeint:  [email protected]
Other destinations to accept mail for (blank for none): [email protected], [smtp.gmail.com]:587, localhost $myhostname, localhost.$mydomain, localhost
Force synchronous updates on mail queue?: Yes
Local networks: Use default: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
Mailbox isze limit (bytes): 0 (default)
Local address extension character: + (default)
Internet protocols to use: all (default)

Open the main file and bottom it adding that lines
$: sudo nano /etc/postfix/main.cf
adding at the end

#############
##LINES ADDED##
#############
##### client TLS parameters #####
smtp_tls_loglevel=1
smtp_tls_security_level=encrypt
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl/passwd
smtp_sasl_security_options = noanonymous
smtp_generic_maps=hash:/etc/postfix/generic
relayhost = [smtp.gmail.com]:587
################
##END LINES ADDED##
################

create a file named generic

$: cd /etc/postfix 
$: sudo nano /etc/postfix/generic
and add these


/etc/postfix/generic.db file will be generated from this using the postmap command:
$: sudo postmap generic

Create a file for the password of your Gmail account.
$: cd /etc/postfix/sasl
$: sudo nano passwd

The passwd file contains your Gmail password
[smtp.gmail.com]:587    [email protected]:your-gmail-password

To create passwd.db, and set ownership and permissions appropriately, run the following commands:
$: sudo postmap passwd
$: sudo chown root.root passwd passwd.db
$: sudo chmod 600 passwd passwd.db

if you previously stopped Postfix, start it with
$: sudo /etc/init.d/postfix start

2.3         Installation of heirloom-mailx
Heirloom-MailX is a small binary program that is used by Nagios to send mail to the Postfix mail server
$: sudo apt-get install heirloom-mailx

2.4         Configuration of Nagios
Ok, now Postifix is configured it’s the moment to start with the configuration of Nagios.
$: cd /etc/nagios/objects/

Open the commands.cfg file and change the lines in this way:
# 'notify-host-by-email' command definition
define command{
    command_name    notify-host-by-email
    command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mailx -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
    }

# 'notify-service-by-email' command definition
define command{
    command_name    notify-service-by-email
    command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mailx -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
    }

restart Nagios
$: sudo /etc/init.d/nagios restart
$: sudo /etc/init.d/postfix restart

to test run the command:
$: echo "This is Content" | sudo mail -s "This is subject" [email protected]
and check /var/log/mail.log file to see that all works well

3.    INSTALL CACTI

$: sudo apt-get install cacti
After installing Cacti done, you can access it from browser by typing your_ip_address/cacti.
select Next to continue the installation,

to the end of it

use the above parameters to run the login
user admin
pwd admin

so, it’s the time to configure Cacti to view our devices. To make that select Create device and add the switch device as reported in above picture:
note: remember to active SNMP service on switch device

save it and add the device on Tree selecting the voice Place on a Tree and Go. Initially my router Cisco1 has a status of Unknown. Click refresh after a while and Cisco1′s status shows as Up

click on Create Graphs for this host. On the list of the ports select the link Fa0/0 and click Create


4.    ADD SOUND ALERT FOR NAGIOS:
Nagios allows custom WAV sounds to be played as alerts on the web page , and in this howto we see how to set it. As first step make the download of these files:
To enable Nagios to use that we need to edit the file /etc/nagios/cgi.cfg
$: sudo nano /etc/nagios/cgi.cfg

and the lines to use are:
#host_unreachable_sound=host-unreachable.wav
#host_down_sound=host-down.wav
#service_critical_sound=critical.wav
#service_warning_sound=warning.wav
#service_unknown_sound=warning.wav
#normal_sound=noproblem.wav

in our example we uncomment
host_unreachable_sound=host-unreachable.wav
host_down_sound=host-down.wav
#service_critical_sound=critical.wav
#service_warning_sound=warning.wav
#service_unknown_sound=warning.wav
normal_sound=noproblem.wav

Then unzip that files and copy your best audio into the directory:
$: sudo mv command-path-discontinuity.wav /usr/local/nagios/share/media/host-unreachable.wav
$: sudo mv losing-power.wav /usr/local/nagios/share/media/host-down.wav
$: sudo mv i-hate-prototypes.wav /usr/local/nagios/share/media/noproblem.wav
$: sudo chown nagios:nagios /usr/local/nagios/share/media/*.wav
$: sudo chmod 0444 /usr/local/nagios/share/media/*.wav
 
5.    MRTG INSTALLATION:
 
$: sudo apt-get install mrtg

MRTG installs a sample configuration file /etc/mrtg.cfg used to hold the SNMP information obtained from your gateway\router. For a full listing of what MRTG installs and where, run the locate command:
$: sudo updatedb && locate mrtg

Technically speaking, mrtg.cfg could remain in /etc, but just to keep things tidy and to help facilitate the startup script that will be discussed later, let’s create a directory for it and move it into that directory:

$: sudo mkdir /etc/mrtg && sudo mv /etc/mrtg.cfg /etc/mrtg

That’s it for installing MRTG. Now let’s move on and configure it.
Configure
MRTG includes a script called cfgmaker that will help us populate /etc/mrtg/mrtg.cfg with the information obtained from your gateway\router. But before you run cfgmaker, you should setup the SNMP service in your gateway\router. This usually involves logging into your gateway\router and enabling SNMP. The default SNMP community name is typically “public.” If you change the SNMP community name to something else, make note of it. Now, run the following command, substituting your SNMP community name, if you’ve changed it, and adding the IP address of your gateway\router:

$: sudo cfgmaker --output=/etc/mrtg/mrtg.cfg [email protected]'s-IP-address
If you would like to add more than one gateway\router to MRTG simply append the additional URL(s) to the same mrtg.cfg file. Then, when you build the web page using the indexmaker command described below, all the gateway\routers (and their associated graphs) will be displayed on the same HTML page.

$: sudo cfgmaker --output /etc/mrtg/mrtg.cfg [email protected]'s-IP-address [email protected]'s-IP-address

Next, open /etc/mrtg/mrtg.cfg in a text editor and make sure under Global Configuration Options that the lines “WorkDir: /var/www/mrtg” (under Debian), and “Options[_]: growright, bits” (under Global Defaults) are uncommented. Finally, add the following lines under the Global Defaults section:
RunAsDaemon: Yes
Interval: 5
Logdir: /var/log/
EnableIPv6: no


sudo mkdir /var/www/mrtg
sudo indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

MRTG has been configured. Let’s start it up and see what it displays.
Start
sudo env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg

When you run MRTG for the first time you may see a lot of complaints about missing log files. No worries, this is normal for the first 2-3 times you start MRTG this way. If, however, it continues to complain you may want to look into the source of the problem.
Well, that’s it. Now point your browser to http://your-server-address/mrtg and you should see a page that resembles the following. You may have more or less graphs depending on the number of interfaces reported by your gateway\router(s).

Because of the aforementioned options added to /etc/mrtg/mrtg.cfg, you’ll see the graph starting “grow” to the right as the traffic is monitored over time, and the Y axis displayed as bits per second. If you click on any one of these graphs you’ll be taken to another page showing individual graphs for daily, weekly, monthly, and yearly traffic averages, along with the maximum, average, and current bit rate in and out of that particular interface. Only interested in displaying one particular interface? Don’t like the look of the page? No worries, just edit /etc/mrtg/mrtg.cfg and/or /var/www/mrtg/index.html until you get pages looking the way you want.
Okay, so now that we have MRTG installed, configured and running let’s move on and discuss how to keep it running.
Operate
Starting MRTG by hand is not ideal in the long run. So perhaps after you’ve done some tweaking on MRTG and are satisfied with the results, you can automate the process of running MRTG by using a startup script in your system startup sequence. Here’s the script that I use:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          mrtg
# Required-Start:   
# Required-Stop:    
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mrtg init script
# Description:       This file is used to start, stop, restart,
#                                  and determined status of the mrtg daemon.
# Author:                    iceflatline <[email protected]>
### END INIT INFO

### START OF SCRIPT
set -e
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="mrtg"
NAME=mrtg
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="/etc/mrtg/mrtg.cfg"
PIDFILE=/etc/mrtg/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the mrtg package is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# Function that starts the mrtg daemon
start()
{
     env LANG=C start-stop-daemon --start --quiet \
     --exec $DAEMON -- $DAEMON_ARGS
}

# Function that stops the mrtg daemon
stop()
{
     start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
     --pidfile $PIDFILE
}

case "$1" in
  start)
     log_daemon_msg "Starting $DESC"
     start
     case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;;
     esac
     ;;
  stop)
     log_daemon_msg "Stopping $DESC"
     stop
     case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;;
     esac
     ;;
  restart|force-reload)
     log_daemon_msg "Restarting $DESC"
     stop
     case "$?" in
       0|1)
            start
            case "$?" in
                    0) log_end_msg 0 ;;
                    1) log_end_msg 1 ;;
            esac
            ;;
     esac
     ;;
     status)
    status_of_proc "$DAEMON" "$NAME" 
    ;;
  *)
     echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}"
     ;;
esac
exit 0
### END OF SCRIPT

 To use the script, save it to your home directory as mrtg and make it executable. Then move or copy it to /etc/init.d:
cd ~
chmod +x mrtg
sudo mv mrtg /etc/init.d/


Now, link the mrtg script to all of Ubuntu server’s multi-user run levels (2-5):
sudo update-rc.d mrtg defaults

Now, let’s start MRTG using our script. If it’s currently running then substitute restart for start in the following command:
sudo /etc/init.d/mrtg start

That’s it. Now if for some reason your server is rebooted, MRTG should fire up automatically (to remove the link from the server’s multi-user run levels, use the command sudo update-rc.d -f mrtg remove).

6.    CÀI ĐẶT VÀ CẤU HÌNH HỆ THỐNG CẢNH BÁO QUA SMS 
6.1         Yêu cầu và chuẩn bị
·         Một Nagios monitoring server 
·         Một USB 3G, ở đây sử dụng thiết bị D-Com 3G
·         Gói mã nguồn của Gammu, tải về phiên bản 1.32.0 tại địa chỉ:  http://sourceforge.net/projects/gammu/files/gammu/1.32.0/gammu-1.32.0.tar.bz2
·         Các gói phụ thuộc bắt buộc cho Gammu : make, cmake, gcc, pkg-config, libusb-dev tcl
·         Các gói phụ thuộc tùy chọn giúp mở rộng tính năng cho Gammu là: Bluez-libs, libusb-1.0, libCURL, libiconv, Gettext, MySQL, PostgreSQL, unixODBC, libdbi, Python SQLite + libdbi-drivers + SQLite
·         Nếu máy Nagios chưa nhận ra D-Com 3G như là một USB modem thì cần cài thêm gói usb_modeswitch để chuyển từ chế độ storage sang modem. Tải về mã nguồn của phiên bản 1.2.3 tại:
·         Cần tới quyền root trong quá trình cài đặt và cấu hình hệ thống.

6.2         Các bước thực hiện
6.2.1     Kết nối USB 3G với máy Nagios
-       Kiểm tra xem máy Nagios đã nhận USB 3G là một GSM modem chưa ta dùng lệnh sau:
# dmesg | grep GSM
Nếu thấy output như dưới đây thì ta chuyển qua bước 2.2.2 để làm tiếp
Code:
USB Serial support registered for GSM modem (1-port)
option 1-1:1.0: GSM modem (1-port) converter detected
usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
....
(để ý là tập tin đại diện cho thiết bị là /dev/ttyUSB0) 
- Nếu output trống rỗng thì cần thêm gói usb_modeswitch. Trình tự cài đặt như sau:
Code:
# tar jxf usb-modeswitch-data-20120531.tar.bz2
# cd usb-modeswitch-data-20120531
# make install
# tar jxf usb-modeswitch-1.2.5.tar.bz2
# cd usb-modeswitch-1.2.5
# make install

6.2.2     Biên dịch và cài đặt Gammu
- Download gammu:
- Giải nén gói mã nguồn của Gammu:
Code:
# tar jxvf gammu-1.32.0.tar.bz

- Chuyển vào thư mục vừa được giải nén ở trên:
Code:
# cd gammu-1.32.0

- Chạy các lệnh sau để cấu hình, biên dịch và cài đặt Gammu:
Code:
# ./configure
# make
# make install

- Kiểm tra bằng lệnh:
Code:
# gammu

- Nếu nhận được thông báo lỗi liên quan tới library thì chạy 2 dòng lệnh sau:
Code:
# ln -s /usr/local/lib/libGammu.so.7 /usr/lib/libGammu.so.7
# ln -s /usr/local/lib/libgsmsd.so.7 /usr/lib/libgsmsd.so.7

6.2.3     Cấu hình Gammu gửi SMS
- Tạo tập tin chứa thông số cấu hình của USB 3G cho Gammu:
Code:
# vi /etc/gammurc

Với nội dung mẫu như sau:
Code:
[gammu]
port = /dev/ttyUSB0                                    //đường dẫn tới tập tin device của thiết bị
connection = at19200                //loại kết nối, tương thích với tập lệnh AT

Ngoài ra, có thể sử dụng lệnh sau để cấu hình dễ dàng cấu hình các thông số bằng giao diện đồ họa:
Code:
# gammu-config

- Xác nhận USB 3G đã được nhận dạng thành công:
Code:
# gammu --identify

Device               : /dev/ttyUSB3
Manufacturer         : ZTE CORPORATION
Model                : unknown (MF190S)
Firmware             : BD_MF190SV1.0.0B01
IMEI                 : 864482000915806

Ngoài ra còn có 2 lệnh sau để theo dõi hoạt động của thiết bị cũng như thông tin về mạng di động:
Code:
# gammu –-monitor
# gammu –-networkinfo

- Nagios chạy với quyền của user nagios, vậy nên nếu muốn Nagios gửi được SMS thì user nagios phải có quyền truy cập tới các tập tin device, config và binary của Gammu. Chạy các lệnh sau để gán các quyền thích hợp đó cho user nagios:
Code:
# cp /etc/gammurc/.gammurc  /usr/local/nagios
# chown nagios.nagios /usr/local/nagios /.gammurc
# chmod 4755 /usr/bin/gammu
# usermod -a -G dialout nagios
# usermod -a -G dialout apache

- Chuyển qua user nagios và thử gửi một SMS mẫu:
Code:
# su - nagios
$ echo "test SMS nagios" | gammu --sendsms TEXT +84932xxxxxx


Code:
If you want break, press Ctrl+C...
Sending SMS 1/1....waiting for network answer..OK, message reference=181
Nếu số điện thoại trong câu lệnh ở trên nhận được thông điệp “test SMS nagios” thì việc cấu hình để Gammu gửi đi SMS đã thành công. Tiếp theo sẽ cấu hình cho Nagios. 
6.2.4     Cấu hình Nagios để gửi SMS theo nhóm
- Phần này sẽ trình bày các bước để khởi tạo và định nghĩa các contact cho những cá nhân và nhóm sẽ nhận được cảnh báo khi một máy tính, thiết bị hay dịch vụ nào đó trong hệ thống xảy ra sự cố.

- Đầu tiên, cần thêm vào 2 câu lệnh để thực hiện việc gửi SMS tới các số điện thoại của các contact được định nghĩa trong tập tin contacts.cfg. Mở tập tin 
/etc/nagios/object//commands.cfg và bổ sung nội dung mẫu sau:

Code:
# 'notify-host-by-sms' command definition
define command
         {
        command_name    notify-host-by-sms
        command_line    /usr/bin/printf "%b" "*** Nagios ***\n Notification Type: $NOTIFICATIONTYPE$\n Host: $HOSTNAME$\n State: $HOSTSTATE$\n Address: $HOSTADDRESS$\n Info: $HOSTOUTPUT$\n Date/Time: $LONGDATETIME$" | /usr/local/bin/gammu --sendsms TEXT $CONTACTPAGER$
        }

# 'notify-service-by-sms' command definition
define command
         {
        command_name    notify-service-by-sms
        command_line    /usr/bin/printf "%b" "*** Nagios ***\n Notification Type: $NOTIFICATIONTYPE$\n Service: $SERVICEDESC$\n Host: $HOSTALIAS$\n Address: $HOSTADDRESS$\n State: $SERVICESTATE$\n Date/Time: $LONGDATETIME$\n Additional Info: $SERVICEOUTPUT$" | /usr/local/bin/gammu --sendsms TEXT $CONTACTPAGER$
         }
-     Sau đó, tùy chỉnh lại mẫu generic-contact mà Nagios cung cấp sẵn sau khi cài đặt để các contact được tạo ở bước sau sẽ nhận được thông báo qua SMS. Mở tập tin /etc/nagios/object/templates.cfg và sửa mục generic-contact như sau:
define contact{
       name                            generic-contact
       service_notification_period     24x7
       host_notification_period        24x7
       service_notification_options    w,u,c,r
       host_notification_options       d,u,r
       service_notification_commands   notify-service-by-sms ,notify-service-by-email
       host_notification_commands      notify-service-by-sms ,notify-host-by-email
       register                        0
}
-   Tiếp đến, thêm mới các contact cho những người muốn nhận thông báo qua email và SMS từ Nagios. Mở tập tin /usr/local/nagios/etc/objects/contacts.cfg và bổ sung nội dung mẫu sau:
define contact{
       contact_name                    Dungtt                       
       use                                      generic-contact                
       alias                                    Tran Trung Dung
       email                                   [email protected]
       pager                                  +8490xxxxxxx         //thay bằng sđt thực
}

define contact{
       contact_name                    Antt                       
       use                                      generic-contact                
       alias                                    Truong Ngoc An
       pager                                  +8490xxxxxxx         //thay bằng sđt thực
}
-           Giờ ta sẽ gom nhóm các contact để gửi các thông báo thích hợp. Ví dụ, các thông báo liên quan tới thiết bị mạng chỉ được gửi tới nhóm network, thông báo liên quan tới máy chủ sẽ được gửi tới nhóm system, thông báo liên quan tới CSDL thì gửi tới nhóm database, v.v… Cũng trong tập tin contacts.cfg trên, tạo thêm các contactgroup theo mẫu sau:
define contactgroup{
       contactgroup_name               admins
       alias                                             Administrators
       members                                     Dungtt, Antt
}

Hướng phát triển:
- Phát triển thêm phần cảnh báo bằng cách gọi điện thoại


ttrungdung

About ttrungdung

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.