STEP TO SUCCESS!
ZABBIX INSTALLATION FROM SOURCE
Mục tiêu: build zabbix 3.4.2 từ mã nguồn
---------------------------------------------------------System:
VM: CENTOS 6.9 F, IP: 192.168.32.142
PHP: 5.6
SQL: MYSQL 5.6
---------------------------------------------------------
Vì sao là Centos 6?
Chủ yếu là vì trên centos 7, ubuntu hay debian thì cài thẳng từ repo cho lẹ :). Ở VN mọi người vẫn rất hay dùng centos 6 - vì thói quen thôi.
Hiện trên centos 6 chỉ có thể cài zabbix_agent thông qua yum.
Đây chính là mục đích của bài viết này: Tự build zabbix trên centos 6 (latest release: centos 6.9F).
P1. Install MySql Server
*Install MySQL 5.6
# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
# wget https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm# rpm -ivh mysql57-community-release-el6-11.noarch.rpm
Sửa Nội dung file /etc/yum.repos.d/mysql-community.repo
....
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
....
* Cài đặt MySQL:
# yum install mysql-community-server mysql-community-devel* Bảo mật MySql:
# service mysql start# mysql_secure_installation
P2. Tải source Zabbix:
Các phiên bản Zabbix có thể tại tại:https://sourceforge.net/projects/zabbix/files/
Tải Bản mới nhất: 3.4.2:
https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz
# cd /usr/local/src/
# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.2/zabbix-3.4.2.tar.gz
Xả nén bộ cài:
# tar -xzvf zabbix-3.4.2.tar.gz
P3. Cài đặt Cơ sở dữ liệu cho Zabbix
* Tạo CSDL zabbix:
# mysql -u root -pEnter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.6.37 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
* Import cấu trúc CSDL của zabbix :
# cd /usr/local/src/zabbix-3.4.2/database/mysql/# mysql -u root -p -D zabbix < schema.sql
# mysql -u root -p -D zabbix < images.sql
# mysql -u root -p -D zabbix < data.sql
P4. Build Zabbix server và cấu hình:
* Cài đặt các thư viện cần thiết để build source:
# yum install gcc make libxml2-devel net-snmp-devel libcurl-devel libssh2-devel libevent-devel pcre-devel iksemel-devel java-1.8.0-openjdk-devel openldap-devel openssl-devel* Tiến hành build source:
# groupadd zabbix# useradd -g zabbix zabbix
# cd /usr/local/src/zabbix-3.4.2
./configure --enable-server --enable-agent --prefix=/usr/local --sysconfdir=/etc/zabbix --enable-java --with-mysql --with-jabber --with-libcurl --with-net-snmp --with-ldap --with-iconv --with-libxml2 --with-openssl
# make
# make install
# chown zabbix:zabbix /var/log/zabbix/
# mkdir /var/run/zabbix/
# chown zabbix:zabbix /var/run/zabbix/
* Sửa file /etc/zabbix/zabbix_server.conf thành:
LogFile=/var/log/zabbix/zabbix_server.logLogFileSize=500
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
PidFile=/var/run/zabbix/zabbix_server.pid
* Sửa file /etc/zabbix/zabbix_agentd.conf thành:
# This is a configuration file for Zabbix agent daemon (Unix)# To get more information about Zabbix, visit http://www.zabbix.com
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=200
PidFile=/var/run/zabbix/zabbix_agent.pid
Server=127.0.0.1
StartAgents=5
ServerActive=127.0.0.1
Hostname=ZabbixServer
BufferSend=15
BufferSize=300
MaxLinesPerSecond=40
############ ADVANCED PARAMETERS #################
Timeout=5
User=zabbix
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
* Tạo file init script: /etc/init.d/zabbix-server
nội dung:
#!/bin/bash
#
# zabbix_server This shell script takes care of starting
# and stopping Zabbix Server daemon
#
# chkconfig: 35 96 14
# description: ZABBIX is an all-in-one 24x7 monitoring system
#
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
RETVAL=0
# Setting up configuration
ZABBIX_NAME="zabbix_server"
ZABBIX_CONF="/usr/local/etc/$ZABBIX_NAME.conf"
if [ ! -f $ZABBIX_CONF ]
then
echo "$ZABBIX_NAME configuration file $ZABBIX_CONF does not exist. "
exit 3
fi
# Source config file to load configuration
. $ZABBIX_CONF
ZABBIX_USER="zabbix"
ZABBIX_BIND="/usr/local/sbin"
ZABBIX_BINF="$ZABBIX_BIND/$ZABBIX_NAME"
if [ ! -x $ZABBIX_BINF ] ; then
echo "$ZABBIX_BINF not installed! "
exit 4
fi
ZABBIX_LOGD="`dirname $LogFile`"
ZABBIX_LOGF="$LogFile"
if [ -z $ZABBIX_LOGF ]
then
echo "LogFile path is not specified in $ZABBIX_CONF"
exit 5
fi
ZABBIX_PIDF="$PidFile"
if [ -z $ZABBIX_PIDF ]
then
echo "LogFile path is not specified in $ZABBIX_CONF"
exit 5
fi
# Functions
runcheck() {
[ ! -f $ZABBIX_PIDF ] && return 0
PID=`cat $ZABBIX_PIDF`
checkpid $PID
[ $? -ne 0 ] && rm -f $ZABBIX_PIDF
}
pidofzab() {
pidofproc -p "$ZABBIX_PIDF" $ZABBIX_NAME
}
start() {
# Start daemons.
echo -n $"Starting $ZABBIX_NAME: "
if [ -n "`pidofzab`" ]; then
echo -n "$ZABBIX_NAME: already running"
failure
echo
return 1
fi
if [ ! -d $ZABBIX_LOGD ]; then
mkdir -p $ZABBIX_LOGD
chown $ZABBIX_USER $ZABBIX_LOGD
fi
runcheck
daemon --user $ZABBIX_USER $ZABBIX_BINF -c $ZABBIX_CONF
RETVAL=$?
if [ -f $ZABBIX_PIDF ]; then
chown $ZABBIX_USER $ZABBIX_PIDF
fi
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$ZABBIX_NAME
return $RETVAL
}
stop() {
# Stop daemons.
echo -n $"Shutting down $ZABBIX_NAME: "
killproc $ZABBIX_NAME
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$ZABBIX_NAME
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
usleep 1000000
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/$ZABBIX_NAME ]; then
stop
usleep 1000000
start
RETVAL=$?
fi
;;
status)
status $ZABBIX_NAME
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
exit $RETVAL
*Tạo file init script: /etc/init.d/zabbix_agentd có nội dung:
#!/bin/bash
#
# zabbix_agentd This shell script takes care of starting
# and stopping Zabbix Agent daemon
#
# chkconfig: 35 95 15
# description: ZABBIX is an all-in-one 24x7 monitoring system
#
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
RETVAL=0
# Setting up configuration
ZABBIX_NAME="zabbix_agentd"
ZABBIX_CONF="/etc/zabbix/$ZABBIX_NAME.conf"
if [ ! -f $ZABBIX_CONF ]
then
echo "$ZABBIX_NAME configuration file $ZABBIX_CONF does not exist. "
exit 3
fi
# Source config file to load configuration
. $ZABBIX_CONF
ZABBIX_USER="zabbix"
ZABBIX_BIND="/usr/local/sbin"
ZABBIX_BINF="$ZABBIX_BIND/$ZABBIX_NAME"
if [ ! -x $ZABBIX_BINF ] ; then
echo "$ZABBIX_BINF not installed! "
exit 4
fi
ZABBIX_LOGD="`dirname $LogFile`"
ZABBIX_LOGF="$LogFile"
if [ -z $ZABBIX_LOGF ]
then
echo "LogFile path is not specified in $ZABBIX_CONF"
exit 5
fi
ZABBIX_PIDF="$PidFile"
if [ -z $ZABBIX_PIDF ]
then
echo "LogFile path is not specified in $ZABBIX_CONF"
exit 5
fi
# Functions
runcheck() {
[ ! -f $ZABBIX_PIDF ] && return 0
PID=`cat $ZABBIX_PIDF`
checkpid $PID
[ $? -ne 0 ] && rm -f $ZABBIX_PIDF
}
pidofzab() {
pidofproc -p "$ZABBIX_PIDF" $ZABBIX_NAME
}
start() {
# Start daemons.
echo -n $"Starting $ZABBIX_NAME: "
if [ -n "`pidofzab`" ]; then
echo -n "$ZABBIX_NAME: already running"
failure
echo
return 1
fi
if [ ! -d $ZABBIX_LOGD ]; then
mkdir -p $ZABBIX_LOGD
chown $ZABBIX_USER $ZABBIX_LOGD
fi
runcheck
daemon --user $ZABBIX_USER $ZABBIX_BINF -c $ZABBIX_CONF
RETVAL=$?
if [ -f $ZABBIX_PIDF ]; then
chown $ZABBIX_USER $ZABBIX_PIDF
fi
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$ZABBIX_NAME
return $RETVAL
}
stop() {
# Stop daemons.
echo -n $"Shutting down $ZABBIX_NAME: "
killproc $ZABBIX_NAME
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$ZABBIX_NAME
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
usleep 1000000
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/$ZABBIX_NAME ]; then
stop
usleep 1000000
start
RETVAL=$?
fi
;;
status)
status $ZABBIX_NAME
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
exit $RETVAL
* Chạy server & agent:
# server zabbix_server start# service zabbix_agentd start
P5. Cài đặt Zabbix web Frontend
Chúng ta sẽ sử dụng LAMP stack để chạy web server. Bước trên đã cài MySQL rồi, dưới đây ta cài PHP 5.6 và apacheTrên centos 6 để cài PHP 5.5 trở lên ta dùng remi repo
* Install epel remi repo
# wget https://rpms.remirepo.net/enterprise/remi-release-6.rpm
# rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
# nano /etc/yum.repos.d/remi.repo
=> Sửa Nội dung: /etc/yum.repos.d/remi.repo
...[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php56/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/6/php56/httpsmirror
mirrorlist=http://rpms.remirepo.net/enterprise/6/php56/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
...
* Cài dặt PHP 5.6 bằng lệnh yum
# yum install php php-cli php-common php-devel php-pear php-fpm php-gd php-bcmath php-mbstring php-xml php-mysql php-xmlwriter php-ldap* Cài đặt apache web server:
# yum install httpd httpd-devel* Copy frontend source code vào thư mục chứa website:
# mkdir /var/www/html/zabbix# cp -a /usr/local/src/zabbix-3.4.2/frontends/php/* /var/www/html/zabbix
# chown -R apache:apache /var/www/html/zabbix/
* Cấu hình php phù hợp với yêu cầu của Zabbix:
Pre-requisite
|
Minimum
value
|
Description
|
PHP version
|
5.4.0
|
|
PHP
memory_limit option
|
128MB
|
In php.ini:
memory_limit = 128M |
PHP
post_max_size option
|
16MB
|
In php.ini:
post_max_size = 16M |
PHP
upload_max_filesize option
|
2MB
|
In php.ini:
upload_max_filesize = 2M |
PHP
max_execution_time option
|
300 seconds (values 0 and -1 are
allowed)
|
In php.ini:
max_execution_time = 300 |
PHP
max_input_time option
|
300 seconds (values 0 and -1 are
allowed)
|
In php.ini:
max_input_time = 300 |
PHP
session.auto_start option
|
must be disabled
|
In php.ini:
session.auto_start = 0 |
PHP
mbstring.func_overload option
|
must be disabled
|
In php.ini:
mbstring.func_overload = 0 |
PHP
always_populate_raw_post_data option
|
must be disabled
|
Required only for PHP versions 5.6.0
or newer.
In php.ini: always_populate_raw_post_data = -1 |
sockets
|
php-net-socket. Required for user
script support.
|
Có thể sửa trực tiêp trong file /etc/php.ini
Hoặc dùng lệnh:
# sed -i 's/^max_execution_time.*/max_execution_time=300/' /etc/php.ini# sed -i 's/^max_input_time.*/max_input_time=300/' /etc/php.ini
# sed -i 's/^post_max_size.*/post_max_size=32M/' /etc/php.ini
# sed -i 's/^upload_max_filesize.*/upload_max_filesize=16M/' /etc/php.ini
# sed -i "s/^\;date.timezone.*/date.timezone=\'Asia\/Bangkok\'/" /etc/php.ini
# sed -i "s/^\;always_populate_raw_post_data.*/always_populate_raw_post_data=-1/" /etc/php.ini
Để bảo mật, đổi port chạy của webserver:
# sed -i "s/^\Listen.*/Listen 8889/" /etc/httpd/conf/httpd.conf
* Khởi động apache:
# service httpd startTiếp theo cài đặt các thông số trên front-end: Nhập các thông số theo server đã tạo
DB: zabbix
DB Port: 3306
USER: zabbix
Passwod: 123456
Đăng nhập vào zabbix Dashboard
username: Admin
Password: zabbix
Vào phần Configuration/Host và enable host:
vậy là xong!
Bổ xung: Cho những ai thích màu mè.
POINT TO SUCCESS: Cài đặt grafana kết hợp với zabbix.
Mọi thông tin & cài đặt cho các phiên bản linux đều có tại trang chủ:
http://docs.grafana.org/installation/Ta sẽ cài luôn trên centos vừa cài zabbix:
* Cài grafana-server trực tiếp từ RPM:
* Tải grafana-server RPM package:
# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.5.2-1.x86_64.rpm# yum install initscripts fontconfig urw-fonts
# rpm -Uvh grafana-4.5.2-1.x86_64.rpm
# service grafana-server start
* Cài plugin cho zabbix:
# grafana-cli plugins install alexanderzobnin-zabbix-app# service grafana-server restart
Xong, tiếp theo cấu hình trên giao diện web của grafana:
Truy cập http://IP_SERVER_ZABBIX:3000/username: admin Password: admin
Đăng nhập thành công, vào DASHBOARD => DATASOURCE =>> Add Data Source
Nhập tên: ZabbixType: Chọn ZabbixUrl http://IP_SERVER:PORT/zabbix/api_jsonrpc.phpSample: http://192.168.32.142:8889/zabbix/api_jsonrpc.phpPhần Zabbix API nhập tên đăng nhập zabbix.
Mọi thứ khác để mặc định
Click Add, nếu thành công sẽ báo:
Không có nhận xét nào:
Đăng nhận xét