Monitors System - Hướng dẫn cài đặt Zabbix để monitor hệ thống máy chủ và network trên Centos 7


Buổi tối đầu tuần ngồi nhăm nhi ly cafe, nhìn lại phòng thằng TSO thì đi đánh Bida, còn thằng Network thì bay về nhà, còn thằng System Admin tiền thì hết nên ngồi viết blog :) Ngẫu hứng lên viết bài cài đặt Zabbix để monitor hệ thống và tạo chat bot Telegram để gởi tin nhắn cho quản trị viên biết hệ thống của mình bị gì. :)

Vậy Zabbix là cái gì ? Zabbix là một phần mềm doanh nghiệp mã nguồn mở giám sát các mạng và ứng dụng, được tạo ra bởi Alexei Vladishev và được công bố lần đầu tiên vào năm 2001. Nó được thiết kế để giúp admin mạng giám sát và theo dõi tình trạng của các dịch vụ mạng, máy chủ và phần cứng mạng khác một cách thông minh nhằm đảm bảo hệ thống luôn luôn được ổn định. (Wikipedia nói vậy thì nghe vậy :) )



Để cài Zabbix thì đầu tiên phải xem yêu cầu của nó như thế nào, cái này cần nhờ sự advise của Zabbix thôi, mình sài của họ thì nghe họ thôi.




Nhìn vào bảng gợi ý của họ ta sẽ chọn lọc ra cấu hình yêu cầu dựa vào host đang có để dùng, không quá dư thừa hoặc không quá thiếu hục để hệ thống đảm bảo yêu nhu cầu.

Hôm nay sẽ cài trên Centos, đầu tiên thì cần chuẩn bị một em máy chủ Centos 7, còn cài đặt như thế nào thì tham khảo các bài hướng dẫn cấu hình Centos 7 để biết thêm.

Ok, xúc thôi :) Đầu tiên trước khi cài ta cần xác định trong đầu trước như thế này, đừng quan tâm đến Zabbix tool, hệ thống monitor bla bla gì hết, nghĩ nhiều sẽ bị rối nhất là mấy bợn suy nghĩ cao siêu.

Zabbix là một công cụ chạy chạy nền tảng web nên ban đầu hình dung ra rằng web thì sao phải cẩn một cái host web cho nó chạy, vậy đầu tiên cần cài host trước.

Bắt đầu cài host như sau : Trên Centos 7 ta cài httpd - Apache Hypertext Transfer Protocol Server 

Cấu hình Host :
Trong Centos 7 cài khá đơn giản, chạy dòng lệnh sau tự động sẽ cài

[root@ localhost~]# yum install httpd -y



Nhanh gọn lẹ với 1 dòng đã chạy xong, tiếp theo khởi chạy nó với Start và Enable nó lên

[root@ localhost~]# systemctl start httpd



[root@ localhost~]# systemctl enable httpd

Chạy host này lên xem như thế nào, nhập IP host linux vào trình duyệt nếu thấy được apache là vui rồi. :)



Tiếp theo cần tạo một Virtual host như phamquangloc.local chẳng hạn, nhì cho ngầu ngầu xíu :)

Config virtual host bắt đầu như sau :

Ta tạo một virtual host là zabbix.phamquangloc.local, khi vào trình duyệt địa chỉ này sẽ chạy như tên miền.

Tạo một file zabbix.phamquangloc.local bên trong /etc/httpd với nội dung sau

[root@ localhost~]# vi /etc/httpd/conf.d/zabbix.phamquangloc.local.conf

Zabbix sẽ chạy http port 80 , code sẽ lưu ở var/www/zabbix.phamquangloc.local/public_html/

NameVirtualHost *:80
 
 
     ServerName zabbix.phamquangloc.local
     ServerAlias www.zabbix.phamquangloc.local
     DocumentRoot /var/www/zabbix.phamquangloc.local/public_html/
     ErrorLog /var/log/httpd/error.log 
     CustomLog /var/log/httpd/access.log combined





Bước tiếp theo tạo thư mục chứ code, cứ nhìn theo file config sao thì thư mục sẽ tạo như vậy

Tạo thư mục và phân quyền owner cho host này thuộc về apache

[root@ localhost~]# mkdir -p /var/www/zabbix.phamquangloc.local/public_html/
[root@ localhost~]#  chown apache:apache -R /var/www/zabbix.phamquangloc.local/public_html/


Khởi động lại httpd và tạo thử 1 file index.html để vào host xem sao :)

[root@ localhost~]# touch /var/www/zabbix.phamquangloc.local/public_html/index.html
[root@ localhost~]# systemctl restart httpd



Sau khi sửa cấu hình file host ở máy client để login vào web xong thì mở host bằng tên miền local check xem host ok chưa :)

Cấu hình Database :

Tiếp theo cần xác định sau này Zabbix lưu trữ ở đâu, ah thì nó sẽ lưu vào Database MariaDB(hình như không có Ozawa hay sao :) ) và quá trình cài đặt MariaDB như sau


Trước tiên ta sửa repo như sau :
Dùng dòng lênh dưới để tạo và mở file repo MariaDB thêm vào nội dung sau, tùy theo phiên bản thì chọn gói cài đặt phù hợp, ở đây cài bảng 10.2

[root@ localhost~]# vi /etc/yum.repos.d/MariaDB.repo

# MariaDB 10.2 CentOS repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


Sau khi thêm repo hoàn thành thì chạy các lệnh sau để cài đặt

[root@ localhost~]# yum repolist

[root@ localhost~]# yum install MariaDB-server MariaDB-client MariaDB-devel MariaDB-shared -y





Sau khi cài đặt MariaDB thành công thì khởi chạy và enable nó lên


[root@ localhost~]# systemctl start mysql.service

Phần cuối của cài đặt MariaDB là check security, đây là quá trình như enable mysql để vào bằng password, không cho Anonymous đăng nhập, xóa dữ liệu cũ, cho phéo remote database từ xa hay không bla bla, khi phần này cần chú ý đọc kỹ trước khi Yes/No

[root@ localhost~]#mysql_secure_installation



Cài đặt PHP :

Tại sao cài đặt PHP, ah thì thằng này chạy PHP nên cài PHP để có đầy đủ thư viện cho nó chạy, vậy thì quá trình cài như sau, khá là nhanh

[root@ localhost~]#yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm



[root@ localhost~]#yum install yum-utils


[root@ localhost~]#yum-config-manager --enable remi-php72   [Install PHP 7.2]



[root@ localhost~]#yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo 

[root@ localhost~]#php -v




Khi cài đặt php xong, nhưng lát sau sẽ có một vài thư viện yêu cầu của zabbix yêu cầu thêm, sẵn đây cài luôn cho đủ, cứ chạy hết có gì sẽ tính sau

[root@ localhost~]#yum install php-bcmath

[root@ localhost~]#yum install php-xmlwriter

[root@ localhost~]#yum install php-mbstring

Và config một xíu PHP, mở file php.ini lên thay thế một số giá trị

[root@ localhost~]#vi /etc/php.ini

post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Ho_Chi_Minh

Cài đặt Zabbix :

Đến phần quan trọng đó là cài đặt Zabbix

Trước khi cài đặt Zabbix cần tạo riêng cho nó một user và một group riêng, ở đây đặt tên luôn là zabbix

[root@ localhost~]#groupadd zabbix

[root@ localhost~]#useradd -m -s /sbin/nologin -g zabbix zabbix


Tiếp theo là tạo thư mục lưu trữ log và phân quyền thư mục lưu trữ log, mục này cực ký quan trọng, nếu không phân quyền đúng sẽ mang theo nhiều hệ lụy về sau, có thể sửa mòn mỏi phát sinh lỗi rất bực bội :)

Đầu tiên tạo phân vùng lưu log, ở đây sẽ lưu trong /var/log/zabbix

[root@ localhost~]#mkdir -p /var/log/zabbix/

Và tạo một file log mẫu là : zabbix_server.log

[root@ localhost~]#touch /var/log/zabbix/zabbix_server.log

Phần này quan trọng nhớ đừng sai, phân quyên owner cho phân vùng log của zabbix

[root@ localhost~]#chown -R zabbix:zabbix /var/log/zabbix

Phân quyền owner trong /var/log/zabbix, sau nó sẽ lưu các .Pid

[root@ localhost~]#chown -R zabbix:zabbix /var/run/zabbix

Và Chmod cho 2 phân vùng này 775

[root@ localhost~]#chmod -R 775 /var/log/zabbix/

[root@ localhost~]#chmod -R 775 /var/run/zabbix/


Tiếp theo cài đặt các thư viện tool như sau :

[root@ localhost~]#yum groupinstall "Development Tools" -y

[root@ localhost~]#yum install libxml2 libxslt libxml2-devel net-snmp-devel curl-devel libevent libevent-devel -y

Download source Zabbix và cài đặt :

Sau khi các thư viện ok tiến hành tải source code về cài đặt, ở đây sẽ tải bằng wget, nhưng mặc định Centos 7 không có wget vậy bên cày nó như sau

[root@ localhost~]#yum install wget

Tiến vào vùng OPT để tải thư viện

[root@ localhost~]#cd /opt/

[root@ localhost~]#wget -O zabbix-4.0.3.tar.gz https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz/download



Note :Ở trên là tải bảng zabbix 4.0.3 là mới nhất hiện tại, tương lai thì sao, kinh nghiệm tìm bản mới nhất sẽ như sau : vào đường dẫn sau là lấu phiên bản mới nhất

https://www.zabbix.com/download_sources



Xả nén và cài đặt Zabbix

[root@ localhost~]#tar xvf zabbix-4.0.3.tar.gz


[root@ localhost~]#cd zabbix-4.0.3

[root@ localhost~]#./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

[root@ localhost~]#make

[root@ localhost~]#make install

Config zabbix_server.service :

Tiếp theeo là bước cấu hình service zabbiz, bước này quan trọng thứ 2, chính xác nếu không sẽ phát sinh nhiều thứ

[root@ localhost~]#vi /lib/systemd/system/zabbix_server.service

Phần này cứ sao y bản chính và nhớ các mục chính sau : PIDFile=/var/run/zabbix/zabbix_server.pid

Đường dẫn này đã chmod và owner phía trên, nên cập nhật chính xác

[Unit]
Description=Zabbix Server
After=syslog.target network.target mysqld.service
 
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/zabbix_server -c /usr/local/etc/zabbix_server.conf
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload
RemainAfterExit=yes
PIDFile=/var/run/zabbix/zabbix_server.pid
 
[Install]
WantedBy=multi-user.target

Tiếp theo là Agent, nó là gì, đây là tự server zabbix tự nó quản lý nó, ngoài việc nó quản lý cho người ta thì nó cần phải tự quản lý nó. Cấu hình này để Agent tự gởi thông tin về chính nó.

[root@ localhost~]#vi /lib/systemd/system/zabbix_agentd.service

Cũng tương tự như trên cần lưu ý PIDFile=/var/run/zabbix/zabbix_agentd.pid chính xác

[Unit]
Description=Zabbix Agent
After=syslog.target network.target network-online.target
Wants=network.target network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/zabbix_agentd -c /usr/local/etc/zabbix_agentd.conf
RemainAfterExit=yes
PIDFile=/var/run/zabbix/zabbix_agentd.pid
[Install]
WantedBy=multi-user.target

Import Database mẫu của Zabbix:
Như đã nói ở trên, cần phải có Database để chạy, thì trong Zabbix có hỗ trợ import Data mẫu, đây là phần quan trọng cần thiết tứ 3.

[root@ localhost~]#cd /opt/zabbix-4.0.3/database/mysql

Đăng nhập vào MariaDB
[root@ localhost~]#mysql -u root -p

Tạo CSDL

MariaDB [(none)]> create database zabbix_db character set utf8 collate utf8_bin;

tạo và nâng quyền cho user

MariaDB [(none)]> grant all privileges on zabbix_db.* to 'zabbix_admin'@'localhost' identified by 'conchimnon';

MariaDB [(none)]> flush privileges;

MariaDB [(none)]>quit;





Import database mẫu của Zabbix vào CSDL :

[root@ localhost~]#mysql -u zabbix_admin -p'conchimnon' zabbix_db < schema.sql

[root@ localhost~]#mysql -u zabbix_admin -p'conchimnon' zabbix_db < images.sql

[root@ localhost~]#mysql -u zabbix_admin -p'conchimnon' zabbix_db < data.sql

Sau quá trình cài đặt Zabbix phần trên và chình sửa config tiếp theo như sau :

[root@ localhost~]#vi /usr/local/etc/zabbix_server.conf

Dựa vào bảng mẫu bên dưới để chỉnh sửa phù hợp

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=250
DebugLevel=3
PidFile=/var/run/zabbix/zabbix_server.pid
 
DBHost=localhost
DBName=zabbix_db
DBUser=zabbix_admin
DBPassword=conchimnon
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
 
CacheSize=32M
StartPollers=40
StartPollersUnreachable=40
StartTrappers=15
StartPingers=40
StartDiscoverers=10
 
AlertScriptsPath=/usr/local/share/zabbix/alertscripts
ExternalScripts=/usr/local/share/zabbix/externalscripts


Tương tự config tiếp Agent

[root@ localhost~]#vi /usr/local/etc/zabbix_agentd.conf



Tương tự phần Agent cũng so sánh bản dưới để chỉnh sửa phù hợp

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=zabbix_server

Copy fontend sang host :
Nãy giờ cũng thấy, cấu hình config tum lum nhưng có đụng gì tới host không, giờ đến lúc copy source bỏ vào host , run zabbix lên và chạy giao diện.

[root@ localhost~]#cd /opt/

Sau khi vào khu vực OPT đã tải Zabbix về, và copy toàn bộ phần code php trong thư mục php bỏ vào host và chạy

[root@ localhost~]#cp -rp zabbix-4.0.3/frontends/php/* /var/www/zabbix.phamquangloc.local/public_html/

Sau khi copy xong thì khởi động server Zabbix để lên giao diện

[root@ localhost~]#systemctl start zabbix_server.service

[root@ localhost~]#systemctl start zabbix_agentd.service

[root@ localhost~]#systemctl enable zabbix_server.service

[root@ localhost~]#systemctl enable zabbix_agentd.service



Cuối cùng là chạy lên giao diện và config















User password default : Admin/zabbix

Phần sau sẽ add Agent vào như thế nào và cách add Agent và cách tìm template hỗ trợ các hãng, và cách tạo chatbot Telegram kết nối với Zabbix khi có sự cố sẽ gởi tin nhắn về cho Admin nào sử dụng Telegram




Nhãn: