Monitors System - Hướng dẫn cài đặt Zabbix để monitor hệ thống máy chủ và network trên Centos 7
Thứ Ba, 29 tháng 1, 2019
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.localServerAlias www.zabbix.phamquangloc.localDocumentRoot /var/www/zabbix.phamquangloc.local/public_html/ErrorLog /var/log/httpd/error.logCustomLog /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 :)
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 = MariaDBbaseurl = http://yum.mariadb.org/10.2/centos7-amd64gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=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 = 16Mmax_execution_time = 300max_input_time = 300date.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 ServerAfter=syslog.target network.target mysqld.service[Service]Type=oneshotExecStart=/usr/local/sbin/zabbix_server -c /usr/local/etc/zabbix_server.confExecReload=/usr/local/sbin/zabbix_server -R config_cache_reloadRemainAfterExit=yesPIDFile=/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 AgentAfter=syslog.target network.target network-online.targetWants=network.target network-online.target[Service]Type=oneshotExecStart=/usr/local/sbin/zabbix_agentd -c /usr/local/etc/zabbix_agentd.confRemainAfterExit=yesPIDFile=/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
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: Monitors System