前言
監控是每個公司必不可少的部門,通過監控我們能實時的觀察設備的運行狀態,保證業務穩定運行。當業務出現問題時,監控及時給各負責人發送告警,從而我們能夠快速定位問題,及時止損。所以監控就像是眼睛一樣,幫我們時刻盯着各個設備的工作情況。目前市面上有很多的監控軟件,比如老牌的nagios、cacti、zabbix,新興的prometheus、open-falcon、夜鶯等,收費的監控寶、solar windows,每種監控軟件都有自己的特點。至於怎么選擇,就需要看你公司的具體情況,當然更多的是看你老大要你用哪個,比如我們公司就用了cacti、zabbix、prometheus。之前的文章,我講了prometheus的相關內容,今天再來簡單講一講zabbix,目前zabbix最新版是5.2,但是5.0是最新的長期支持版,生產中應該優先選擇穩定的長期支持版。
1 zabbix簡介
Zabbix 是一個企業級分布式開源監控解決方案, 由 Alexei Vladishev 創建,目前由其成立的公司—— Zabbix SIA 積極的持續開發更新維護, 並為用戶提供技術支持服務。zabbix 軟件能夠監控眾多網絡參數和服務器的健康度、完整性。 使用靈活的告警機制,允許用戶為幾乎任何事件配置基於郵件的告警。這樣用戶可以快速響應服務器問題。zabbix 支持主動輪詢(polling)和被動捕獲(trapping)。
Zabbix不僅僅提供監控功能,他還基於存儲的數據提供出色的報表和數據可視化功能,所有的報表、統計數據和配置參數都可以通過基於 web 的前端頁面進行訪問,基於 web 的前端頁面確保用戶可以在任何地方訪問監控的網絡狀態和服務器健康狀況。這樣看來zabbix又有點像一個簡易的cmdb系統。
2 zabbix組件
Zabbix server
Zabbix軟件的核心組件,agent 向其報告可用性、系統完整性信息和統計信息。server也是存儲所有配置信息、統計信息和操作信息的核心存儲庫。
數據庫
所有配置信息以及 Zabbix 采集到的數據都被存儲在數據庫中,支持mysql、postgresql、oracle、sqlite,目前5.0還支持了timescale db。
Zabbix agent
Zabbix agents 部署在被監控目標上,用於主動監控本地資源和應用程序,並將收集的數據發送給 zabbix server。
Web UI 界面
為了從任何地方和任何平台輕松訪問 zabbix ,zabbix提供了基於 web 的界面。該界面是 zabbix server 的一部分,通常和 zabbix server 運行在同一台機器上,當然可以分開到不同機器上運行。
Zabbix proxy
Zabbix proxy 可以代替 zabbix server采集性能和可用性數據。zabbix proxy在zabbix的部署是可選部分;但是proxy的部署可以很好的分擔單個zabbix server的負載。
數據流
這不是zabbix的實際組件,整體的了解下zabbix 內部的數據流對zabbix的使用也很重要。首先,為了創建一個采集數據的監控項,必須先創建主機。其次,在任務的另外一端,必須要有監控項才能創建觸發器(trigger),必須要有觸發器來創建動作(action)。因此,如果用戶想要收到類似“X個server上CPU負載過高”這樣的告警,必須首先為 Server X 創建一個主機條目,其次創建一個用於監控其 CPU的監控項,最后創建一個觸發器,用來觸發 CPU負載過高這個動作,並將其發送到用戶的郵箱里。雖然這些步驟看起來很繁瑣,但是使用模板的話,實際操作非常簡單。也正是由於這種設計,使得 Zabbix 的配置變得更加靈活易用。
3 環境准備
zabbix要求有LAMP或者LNMP環境,目前5.0以上的版本要求php版本>=7.2
操作系統/軟件 | 版本 |
Centos | 7.6 |
mysql | 5.7.32 |
php | 7.4.12 |
4 zabbix搭建
4.1 php安裝
下載安裝包 [root@zabbix ~]# wget https://www.php.net/distributions/php-7.4.12.tar.gz 安裝依賴 [root@zabbix ~]# yum install -y libxml2-devel sqlite-devel gcc-c++ [root@zabbix ~]# tar -xf php-7.4.12.tar.gz [root@zabbix ~]# cd php-7.4.12 [root@zabbix php-7.4.12]# ./configure --prefix=/usr/local/php --enable-fpm [root@zabbix php-7.4.12]# make && make install [root@zabbix php-7.4.12]# cd [root@zabbix ~]# ln -s /usr/local/php/bin/php /usr/bin/php [root@zabbix ~]# php -v PHP 7.4.12 (cli) (built: Nov 22 2020 20:46:33) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
如出現以下內容則編譯和安裝成功
4.2 mysql安裝
4.2.1 添加官方源並安裝
添加mysql的yum源 [root@zabbix ~]# vim /etc/yum.repos.d/mysql.repo [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [root@zabbix ~]# wget http://repo.mysql.com/RPM-GPG-KEY-mysql [root@zabbix ~]# mv RPM-GPG-KEY-mysql /etc/pki/rpm-gpg/ [root@zabbix ~]# yum makecache [root@zabbix ~]# yum install -y mysql-community-server [root@zabbix ~]# systemctl start mysqld [root@zabbix ~]# systemctl enable mysqld
4.2.3 設置mysql
注意首次登陸mysql后需要修改密碼才能登陸
查看安裝時的臨時密碼 [root@zabbix ~]# grep 'temporary password' /var/log/mysqld.log 修改密碼,注意這里會進行密碼強度校驗,密碼設置時必須包含大小寫字母、特殊符號、數字,並且長度大於8位 [root@zabbix ~]# mysql -uroot -p mysql> alter user 'root'@'localhost' identified by '!QAZxsw2';
4.2.4 修改mysql密碼復雜度要求
此部分根據實際需要設置
mysql> show variables like 'validate_password%'; mysql> set global validate_password_policy=0;
此處可以看到密碼設置必須包含大小寫字母、特殊符號、數字,並且長度大於8位
mysql 密碼策略相關參數解釋:
validate_password_length:固定密碼的總長度;
validate_password_dictionary_file:指定密碼驗證的文件路徑;
validate_password_mixed_case_count :密碼中至少要包含大/小寫字母的總個數;
validate_password_number_count :密碼中至少要包含阿拉伯數字的個數;
validate_password_policy:指定密碼的強度驗證等級,默認為 MEDIUM。
其中validate_password_policy的取值為:
0/LOW:只驗證長度;
1/MEDIUM:驗證長度、數字、大小寫、特殊字符;2/STRONG:驗證長度、數字、大小寫、特殊字符、字典文件。
4.3 安裝zabbix組件
4.3.1 下載zabbix源並安裝
[root@zabbix ~]# wget https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm [root@zabbix ~]# rpm -ivh zabbix-release-5.0-1.el7.noarch.rpm [root@zabbix ~]# ls /etc/yum.repos.d/zabbix.repo [root@zabbix ~]# yum install -y zabbix-server-mysql zabbix-agent
或者使用阿里的zabbix鏡像源
[root@devops ~]# wget https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm [root@devops ~]# sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo
4.3.2 安裝zabbix前端
啟用紅帽軟件集 [root@zabbix ~]# yum install -y centos-release-scl 修改zabbix源,開啟zabbix前端倉庫 [root@zabbix ~]# vim /etc/yum.repos.d/zabbix.repo [zabbix-frontend] enabled=1 使用nginx [root@zabbix ~]# yum install -y zabbix-web-mysql-scl zabbix-nginx-conf-scl 使用apache [root@zabbix ~]# yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
4.3.4 初始化zabbix數據庫
mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create user zabbix@localhost identified by '!QAZxsw2'; mysql> grant all privileges on zabbix.* to zabbix@localhost; 導入初始架構和數據 zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix 為zabbix配置數據庫 [root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf DBPassword=!QAZxsw2
4.4.4 為zabbix配置前端php
nginx 編輯配置文件 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf [root@zabbix ~]# vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf listen 80; server_name example.com; 注釋/etc/opt/rh/rh-nginx116/nginx/nginx.conf文件中 # server { # listen 80 default_server; # listen [::]:80 default_server; # server_name _; # root /opt/rh/rh-nginx116/root/usr/share/nginx/html; # include /etc/opt/rh/rh-nginx116/nginx/default.d/*.conf; # location / { # } # error_page 404 /404.html; # location = /40x.html { # } # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } 編輯配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf listen.acl_users = apache,nginx php_value[date.timezone] = Asia/Shanghai [root@zabbix ~]# systemctl start zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm [root@zabbix ~]# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm apache 編輯配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf php_value[date.timezone] = Asia/Shanghai [root@zabbix ~]# systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm [root@zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
4.4 配置web UI
打開網頁,輸入ip,進入配置頁
點擊 Next step。進入配置檢查,看是否全部OK
點擊 Next step。輸入數據庫密碼
點擊 Next step。Name可以任意輸入一個名字
點擊 Next step。查看配置總覽
點擊 Next step。完成配置
點擊Finsh。來到登陸界面
輸入默認用戶名密碼,Admin,zabbix。進入監控首頁
可以發現最大的不同是菜單欄放到左側了。
4.5 設置中文
User settings里面設置中文選項
但是發現監控指標為亂碼。吐槽一下:時間選擇這里,最近xx小時竟然翻譯成了還剩xx小時。
亂碼問題解決
下載字符集 [root@zabbix ~]# yum install -y wqy-microhei-fonts 復制字符集到zabbix的字符集中 [root@zabbix ~]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/wqy-microhei.ttf 修改前端配置 [root@zabbix ~]# vim /usr/share/zabbix/include/defines.inc.php define('ZBX_GRAPH_FONT_NAME', 'wqy-microhei'); [root@zabbix ~]# systemctl restart zabbix-server
再次查看,亂碼解決
參考資料
https://www.zabbix.com/cn/download