在LAMP架構中部署zabbix監控系統及郵件報警機制
Zabbix能監視各種網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。是一個基於WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。被監控對象只要支持SNMP協議或者運行zabbix_agents代理程序即可。
agent端:主機通過安裝agent方式采集數據。
server端:通過收集agent發送的數據,寫入數據庫(MySQL,ORACLE等),再通過php+apache在web前端展示.
SNMP:
SNMP是英文"Simple Network Management Protocol"的縮寫,中文意思是"簡單網絡管理協議"。SNMP是一種簡單網絡管理協議,它屬於TCP/IP五層協議中的應用層協議,用於網絡管理的協議。SNMP主要用於網絡設備的管理。
zabbix工作原理:
Agentd安裝在被監控的主機上,Agent負責定期收集客戶端本地各項數據,並發送至Zabbix Server端,Zabbix Server收到數據,將數據存儲到數據庫中,用戶基於Zabbix WEB可以看到數據在前端展現圖像。當Zabbix監控某個具體的項目,改項目會設置一個觸發器閾值,當被監控的指標超過該觸發器設定的閾值,會進行一些必要的動作,動作包括:發送信息(郵件、微信、短信)、發送命令(SHELL 命令、Reboot、Restart、Install等)。
zabbix重要的五個組件:
1、Zabbix Server:負責接收agent發送的報告信息的核心組件,所有配置,統計數據及操作數據均由其組織進行;
2、Database Storage:專用於存儲所有配置信息,以及由zabbix收集的數據;
3、Web interface:zabbix的GUI接口,通常與Server運行在同一臺主機上;
4、Proxy:可選組件,常用於分布監控環境中,代理Server收集部分被監控端的監控數據並統一發往Server端;
5、Agent:部署在被監控主機上,負責收集本地數據並發往Server端或Proxy端;
zabbix基本組件拓撲:
下面我對如何部署zabbix進行詳細配置
實驗環境:
STKAITI字體文件鏈接:https://pan.baidu.com/s/1EC_jdOhRGjDJewAKueaTUg
提取碼:zmv4
下載LAMP所需安裝包
[root@localhost ~]# yum install httpd mariadb mariadb-server php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash -y
配置Apache主配置文件
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.yun.com:80 #修改域名
DirectoryIndex index.html index.php #讓Apache支持PHP
為了讓zabbix連接互聯網,設置中國時區
[root@localhost ~]# vim /etc/php.ini
date.timezone = PRC
開啟httpd服務和mysql
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# netstat -ntap | egrep ‘80|3306‘ #查看兩個服務的端口
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 38513/mysqld
tcp6 0 0 :::80 :::* LISTEN 38242/httpd
重新配置mariadb數據庫的參數
[root@localhost ~]# mysql_secure_installation
Set root password? [Y/n] y #是否設置密碼
Remove anonymous users? [Y/n] n #是否刪除默認用戶
Disallow root login remotely? [Y/n] n #是否禁止root遠程登錄
Remove test database and access to it? [Y/n] n #是否刪除測試數據庫
Reload privilege tables now? [Y/n] y #是否對數據庫進行初始化配置
創建zabbix數據庫
[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #創建一個zabbix數據庫
MariaDB [(none)]> grant all on zabbix.* to ‘zabbix‘@‘%‘ identified by ‘123123‘; #為zabbix數據庫創建管理用戶
MariaDB [(none)]> flush privileges;
創建PHP測試首頁
[root@localhost ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>
編寫測試腳本,測試PHP能否連接數據庫
<?php
$link=mysql_connect(‘192.168.199.129‘,‘zabbix‘,‘123123‘);
if($link) echo "<h1>success</h1>";
else echo "fail";
mysql_close();
?>
在使用zabbix用戶進行登錄數據庫時有時會出現登錄失敗的現象,這是因為裏面有空用戶占用導致本地用戶無法登錄,所以需要刪除空用戶
[root@localhost ~]# mysql -u zabbix -p #登錄失敗
Enter password:
ERROR 1045 (28000): Access denied for user ‘zabbix‘@‘localhost‘ (using password: YES)
[root@localhost ~]# mysql -u root -p
MariaDB [(none)]> select user,host from mysql.user; #有空用戶占用導致本地用戶無法登陸
+--------+-----------------------+
| user | host |
+--------+-----------------------+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | localhost.localdomain |
| root | localhost.localdomain |
+--------+-----------------------+
7 rows in set (0.00 sec)
MariaDB [(none)]> drop user ‘‘@‘localhost‘; #刪除空用戶
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> drop user ‘‘@‘localhost.localdomain‘; #刪除空用戶
Query OK, 0 rows affected (0.00 sec)
[root@localhost ~]# mysql -u zabbix -p #再次登錄就可以了
MariaDB [(none)]>
到此為止,LAMP架構就部署完了
二、部署zabbix server
[root@localhost ~]# yum install php-bcmath php-mbstring -y #下載兩個PHP依賴包
[root@localhost~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm #下載zabbix yum源,安裝完成後會自動產生repo文件
[root@localhost ~]# yum install zabbix-server-mysql zabbix-web-mysql -y #安裝zabbix軟件包
修改zabbix配置文件
[root@localhost ~]# grep -n ‘^‘[a-Z] /etc/zabbix/zabbix_server.conf #以下為需要修改的行
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix
117:DBUser=zabbix
125:DBPassword=123123 #密碼改為zabbix登陸密碼
357:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
475:Timeout=4
518:AlertScriptsPath=/usr/lib/zabbix/alertscripts
529:ExternalScripts=/usr/lib/zabbix/externalscripts
565:LogSlowQueries=3000
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf #修改時區
php_value date.timezone Asia/Shanghai
[root@localhost ~]# vim /usr/share/zabbix/include/defines.inc.php #修正圖表中文亂碼
:%s /graphfont/kaiti/g #將配置文件中的graphfont替換為kaiti
[root@localhost ~]# cp STKAITI.TTF /usr/share/zabbix/fonts/ #從微軟系統下復制相應的字體文件到/usr/share/zabbix/fonts/
開啟zabbix服務端
[root@localhost ~]# systemctl start zabbix-server.service
[root@localhost ~]# systemctl enable zabbix-server.service
[root@localhost ~]# netstat -ntap | grep 10051 #查看端口
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 40703/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 40703/zabbix_server
[root@localhost ~]# systemctl restart httpd.service #重啟Apache服務
http://192.168.199.129/zabbix #在瀏覽器上登陸zabbix頁面
首先看見的是zabbix的版本:
這裏所有的選項都為OK表示配置是沒問題的:
密碼為zabbix的登陸密碼:
名字填寫zabbix:
默認的用戶名和密碼為Admin和zabbix:
登陸完成後便會到zabbix的監控頁面:
點擊右上角頭像可以選擇語言,這裏我選擇中文:
三、安裝被監控端
[root@localhost ~]# systemctl stop firewalld.service #關閉防火墻
[root@localhost ~]# setenforce 0
[root@localhost~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm #下載yum源
[root@localhost ~]# yum install zabbix-agent -y #被監控端需要裝agent包,如果想要監控本機器,也可以在監控服務器上進行安裝
更改配置文件
[root@localhost ~]# grep -n ‘^‘[a-Z] /etc/zabbix/zabbix_agentd.conf #更改配置文件以下選項
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=192.168.199.129 #將地址指向服務器端
139:ServerActive=192.168.199.129 #將地址指向服務器端
150:Hostname=test #名字可自行定義
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
開啟服務
[root@localhost ~]# systemctl start zabbix-agent.service
[root@localhost ~]# systemctl enable zabbix-agent.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@localhost ~]# netstat -ntap | grep zabbix #查看端口
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 40351/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 40351/zabbix_agentd
在服務器上配置完了就可以到zabbix監控頁面進行配置
首先在監控頁面中添加被監控服務器
配置主機項基本信息
配置模板選項,添加想要監控的模塊
查看添加好的主機信息
回到主界面,點擊刷新,過一會就回出現監控信息
四、配置郵件報警功能-----在監控服務器上配置
[root@localhost ~]# yum install mailx -y #下載郵箱服務
[root@localhost ~]# vim /etc/mail.rc #在文件末尾添加如下配置
set from=郵箱地址
set smtp=smtp.qq.com
set smtp-auth-user=郵箱地址
set smtp-auth-password=********** #如果填寫的是qq郵箱,密碼為qq郵箱的SMTP密碼
set smtp-auth=login
[root@localhost ~]# systemctl restart postfix.service #重新啟動郵箱服務
[root@localhost ~]# echo "hello world" | mail -s "testmail" 郵箱地址 #發送一個測試郵件
可以看到我在QQ郵箱中收到了一封郵件
[root@localhost ~]# vim /usr/lib/zabbix/alertscripts/mail.sh #寫一個發郵件的腳本,腳本路徑一定要寫對
#!/bin/bash
#send mail
messages=`echo $3 | tr ‘\r\n‘ ‘\n‘`
subject=`echo $2 | tr ‘\r\n‘ ‘\n‘`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mail.log 2>&1
[root@localhost ~]# chmod +x /usr/lib/zabbix/alertscripts/mail.sh #給腳本執行權限
[root@localhost ~]# touch /tmp/mail.log #創建郵箱日誌文件
[root@localhost ~]# chown -R zabbix.zabbix /tmp/mail.log #將權限給zabbix用戶
[root@localhost ~]# chown -R zabbix.zabbix /usr/lib/zabbix/
再次發送一封測試郵件使用腳本執行
[root@localhost ~]# cd /usr/lib/zabbix/alertscripts/
[root@localhost alertscripts]# ./mail.sh 郵箱地址 "yun" "hahahahaha" #發送格式為“地址”“標題”“內容”
六、配置zabbix郵件報警機制
1 選擇報警媒介類型
2 選擇管理用戶
3 在動作配置項中定義報警郵件的發送形式
4 配置恢復操作後郵件的發送形式
七、測試,如果我關閉受監控的服務來模擬服務故障,zabbix一個會發送一封郵件提醒我,當我再次打開這個服務時表示這個服務已經被修復,zabbix一個也會發一封恢復郵件。
[root@localhost ~]# systemctl stop sshd.service #關閉被監控端的ssh服務
接著便會收到郵件信息了:
[root@localhost ~]# systemctl start sshd.service #我再次開啟被監控端的SSH服務
到此為止zabbix監控系統就搭建完成了。
在LAMP架構中部署zabbix監控系統及郵件報警機制