Monitors System - Hướng dẫn cài đặt Chat Bot Telegram gởi tin nhắn cảnh báo của Zabbix về Telegram người quản trị


Khi thời đại Chat Bot lên ngôi thì việc ngồi đọc mail thông báo của hệ thống rất ít, đa phần người dùng có điện thoại thông minh, và có cài Telegram App thì việc tự động nhận tin nhắn của con Bot gởi về khá tiện.



Nghe tới đây thấy cao xa và phức tạp quá phải không, thì vấn đề này hiện nay khá tiện, khó thì không mà nói dễ thì cũng không dễ. Đầu tiên cần cám ơn những người đã upload code lên mạng để cộng đồng cùng dùng, đấy mới là điều cần cảm ơn họ trước khi làm.

Với cá nhân tôi có nề tảng về lập trình có thể đem code của họ về làm thành của mình được, nhưng số ít người không có khả năng code và đọc code thì cứ dùng sao y bản chính có thể dùng liền, cũng một phần đáp ứng được yêu cầu cá nhân, và cũng là tôn trọng tác giả.

OK đầu tiên vào Github để tim code như sau :

https://github.com/ableev/Zabbix-in-Telegram


Bạn muốn dùng Git clone về hay downlaod về cũng được, miễn sao có được code là xong, như tồi tải về cho nhanh.



Bước thứ 1 : Tiếp theo sẽ updaload nó lên host Zabbix server , vị trí lưu code sẽ là user/local/share/zabbix/alertscripts , khi tới đây nếu đã đọc thật kỹ bài hướng dẫn cài Zabbix sẽ nhớ vì sao lại là đường dẫn này :)



Sau khi uplaod xong thì phân quyền các file này để chạy không cần Sudo, file mẫu zbxtg_settings.exam.py thì sửa lại là zbxtg_settings.py vì bên trong các file kia có include config của file này để chạy

sudo chmod 775 /usr/local/share/zabbix/alertscripts/zbxtg.py
sudo chmod 775 /usr/local/share/zabbix/alertscripts/zbxtg_group.py
sudo chmod 775 /usr/local/share/zabbix/alertscripts/ZbxTgDaemon.py
sudo chmod 775 /usr/local/share/zabbix/alertscripts/zbxtg_settings.py

Bước thứ 2 : 

Mở Telegram để tạo Bot, tìm tới BotFather để yêu cầu nó tạo




Quá trình như sau : 

/Start -> /newbot  ->Usernamebot sau khi ok nó sẽ trả về token cho bạn






Như thế đã hoàn thành xong con Bot.

Quay lại bước 1 để tiến hành config, mở file config lên và nhập thông tin vào file config xong để test Bot.

[root@ localhost~]#vi /usr/local/share/zabbix/alertscripts/zbxtg_settings.py



Trong file này cần sửa các các nội dung sau :

tg_key = "key bot father gởi"  # telegram bot api key
zbx_server = "http://Ip server zabbix/"  # zabbix server full url
zbx_api_user = "Admin" //tôi dùng Admin
zbx_api_pass = "password"
zbx_db_host = "localhost"
zbx_db_database = "zabbix_db"
zbx_db_user = "zabbix_admin"
zbx_db_password = "password database"


OK thế là lưu lại test thôi



Kết quả trả về của Bot



Như vậy là con Bot đã hoạt động tốt, bắt đầu config trigger trên Zabbit cho nó chạy :

Telegram : Administrator - > Media Types -> Create Media Types


Administrator - > User -> Media ->Add script và sendto nick Telegram

Cuối cùng tạo trigger để gởi tin nhắn



Configuration->Action->New condition(chọn trigger)->Select những thông báo cần chạy









Nội dung bên trong là :

Last value: {ITEM.LASTVALUE1} ({TIME})
zbxtg;graphs
zbxtg;graphs_period=10800
zbxtg;itemid:{ITEM.ID1}
zbxtg;title:{HOST.HOST} - {TRIGGER.NAME}


Cuối cùng khi có vấn đề gì liên quan đến condition nếu thỏa mãn sẽ báo về tin nhắn bằng trigger.
Vidu : Trigger equals xxx: xxxhas just been restarted,nếu khởi động lại server nào đó thỏa được điều kiện này thì trigger sẽ kích hoạt gởi thông tin


Đơn giản thế là xong.




Nhãn:

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


OK, như bài hôm qua đã hướng dẫn cài đặt và cách cơ bản để cài đặt Zabbix thành công, thì hôm nay nói sơ về cách cài Agent cho Server Linux và Windowns.

Bổ xung thêm về chi tiết ngày hôm qua, sau khi cài đặt thành công Zabbix khi đăng nhập vào Zabbix thì phát sinh lỗi tự Zabbix server không nhìn thấy chính nó qua Agent.



Cách bổ sung như thế nào, như đã nói trước phần quan trọng là chmod phân vùng /var/run/zabbix , sau khi chạy lên nó Overwrite mất luôn thì phát sinh ra lỗi, lỗi như thế nào thì : Queue không nhận host bla bla, hình bên dưới khi fix thành công, nếu check như bên dưới là OK



Trường hợp 1 : Bắt đầu phân quyền lại với 4 dòng sau, nếu văng ra lỗi đường dẫn này sai thì tạo lại thư mục :
mkdir -p /var/log/zabbix xong chown và chmod lại xong khởi động lại Zabbix sẽ ok.

chown -R zabbix:zabbix /var/log/zabbix
chown -R zabbix:zabbix /var/run/zabbix
chmod -R 775 /var/log/zabbix/
chmod -R 775 /var/run/zabbix/

Trường hợp 2 : Nhiều khi không tắt SELinux cũng bị, nếu còn lỗi tắt tiếp em nó

[root@ localhost~]# vi /etc/selinux/config

Cứ disable SELINUX khởi động lại là ok





Sau khi mọi thứ hoàn thành hết bắt đầu cài Agent các máy cần giám sát :

Windowns Server :

Vào đường dẫn sau tải Agent của windowns về

https://www.zabbix.com/download_agents


Sau khi tải xong copy vào server vào mục cần chạy và mở file zabbiz_agentd.win.conf lên sửa 2 mục sau :
Server : IP server Zabbix
Hostname : tên của máy cần monitor

Server=xxx.xxx.xxx
Hostname=WINServer01



Mở CMD lên chạy 2 dòng như trong hình và check service chạy chưa là ok



Tiếp theo login vào Zabbix -> Configuration->Host ->Create host


Add template Zabbix


Đa phần sau khi add theo tempalte vào thì các chức năng cần monitor đã đầy đủ



Linux (Centos 7) : 

Trên Linux thì cũng tương tự như windowns, ở đây cài Agent cho Centos 7, thì cách cài cũng rất đơn giản.

[root@ localhost~]# yum install zabbix-agent



Đơn giản chỉ có thể là cài xong, và tiếp theo config file và khởi động là xong

Servername : IP Zabbix server
Hostname : tên server linux

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

[root@ localhost~]# systemctl start zabbix-agent

Sau khi giải quyết xong phần  Agent này xong thì add host vào là hoàn thành



Chọn template Linux add vào cho server linux




Note: Zabbix  là công cụ khá mạnh hỗ trợ rất nhiều thiết bị của nhà cung cấp lớn, vì vậy cứ hãng nào lên tìm tương thích là sử dụng.

Trang share của Zabbix có rất nhiều tempalte cho các hãng, đang sử dụng thiết bị gì có thể chọn để thêm vào sử dụng.


https://share.zabbix.com/



Trên menu có rất nhiều phần hay để khám phá, phần sau sẽ hướng dẫn tạo Chat Bot Telegram để tự động nhắn tin về Telegram khi có sự cố




Nhãn:

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: