centos7.3版本下搭建zabbix,今天看到網上一個不錯的文檔,轉一下不過有個問題是mysql存儲路徑沒解決,順便處理下mysql存儲路徑;
url:http://blog.csdn.net/u014057054/article/details/66476990
安裝前準備:
1.1 安裝依賴包:
yum -y install wget net-snmp-devel OpenIPMI-devel httpd openssl-devel java lrzsz fping-devel libcurl-devel perl-DBI pcre-devel libxml2 libxml2-devel mysql-devel gcc php php-bcmath php-gd php-xml php-mbstring php-ldap php-mysql.x86_64 php-pear php-xmlrpc net-tools wget vim-enhanced
可能故障問題:Cannot find a valid baseurl for repo: base/7/x86_64
解決:修改DNS
1.2 關閉防火牆:
# systemctl stop firewalld.service
# systemctl disable firewalld.service
需要關閉 selinux,一定要關閉這個,開啓selinux會引起一連串問題,甚至zabbix的discovery功能也不能正常使用
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
確認是否修改成功
# grep SELINUX /etc/selinux/config
然後重啓系統即可
# reboot
一、zabbix server3.0在centos 7上安裝
根據zabbix server3.0官方要求,目前zabbix server3.0在centos6 OS上不能進行yum安裝。如果一定要在centos6 OS上進行安裝zabbix server3.0的話,強烈建議通過源碼方式進行編譯安裝,同時還需要注意PHP的版本。
考慮到這些因素,所以在此我們是在centos7 OS上進行yum安裝zabbix server3.0。
注意:儘管zabbix server3.0在centos6 OS上不能yum方式進行安裝,但是zabbix-agent3.0在centos6 OS上是可以進行yum安裝的。
1.1 搭建lamp環境
在centos7上安裝zabbix server3.0之前,我們首先搭建zabbix所需要的lamp環境。
下載最新的yum源,如下:
# wget -P /etc/yum.repos.d http://mirrors.aliyun.com/repo/Centos-7.repo
在開始安裝之前,還需要說明下centos7自帶的mysql是mariadb,我們可以通過如下命令查看:
yum search mysql|tac
現在開始安裝lamp環境,使用如下命令:
[root@zabbix ~]# yum -y install mariadb mariadb-server php php-mysql httpd
通過上圖,我們可以很明顯的看出centos7默認安裝的是php5.4、httpd2.4和maradb5.5,這個完全符合zabbix3.0對軟件版本的要求。
lamp安裝完畢後,我們現在來配置mysql數據庫。
設置開機自啓動mysql,並啓動mysql,使用如下命令:
[root@zabbix ~]# systemctl enable mariadb.service
[root@zabbix ~]# systemctl start mariadb.service
初始化mysql數據庫,並配置root用戶密碼。使用如下命令:
[root@zabbix ~]# mysql_secure_installation
注意:在上圖中的Enter current passwdord for root處,我們直接敲回車鍵即可。因爲centos7上mysql的默認root用戶密碼爲空。
上圖中主要是爲root用戶配置密碼,並刷新相關權限。(密碼設爲123456,只爲實驗用,生產環境自定義)
Remove anonymous users? 刪除匿名用戶?
Disallow root login remotely? 禁止root遠程登陸
Remove test database and access to it? 刪除測試數據庫並且和訪問它
Reload privilege tables now? 重新載入特權表
上圖中主要是配置匿名用戶、test用戶以及root用戶遠程連接等相關配置。
mysql初始化完畢後,我們現在來創建zabbix數據庫及其用戶,使用如下命令:
[root@zabbix ~]# mysql -uroot -p123456 -e "create database zabbix default character set utf8 collate utf8_bin;"
[root@zabbix ~]#mysql -uroot -p123456 -e "grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix';"
現在來測試剛剛創建的zabbix用戶,是否可以連接mysql數據庫,如下:
[root@zabbix ~]# mysql -uzabbix -pzabbix
MariaDB [(none)]> show databases;
MariaDB [(none)]> quit
通過上圖,我們可以很明顯的看出zabbix用戶是可以正常連接數據庫的。
啓動apache以及開放80端口,如下:
[root@zabbix ~]# systemctl start httpd.service
[root@zabbix ~]# netstat -ltun
到此lamp環境已經全部搭建完畢。
1.2 安裝zabbix server3.0
lamp環境搭建完畢後,我們現在開始正式安裝zabbix3.0。
安裝zabbix3.0所需要EPEL源和zabbix的yum源,如下:
#rpm -ivh http://mirrors.aliyun.com/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
測試下來大多數的這個包下不到:(
#rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
以上安裝完畢後,我們現在來正式安裝zabbix3.0,使用如下命令:
[root@zabbix ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-get
通過上圖,我們可以很明顯的看出目前zabbix server是3.0.5版本的。
以上安裝完畢後,我們現在開始進行zabbix的相關配置。
導入zabbix數據庫結構,如下:
[root@zabbix ~]# cd /usr/share/doc/zabbix-server-mysql-3.0.5/
[root@zabbix zabbix-server-mysql-3.0.5]# zcat create.sql.gz | mysql -uroot -pDe123456 zabbix
數據庫導入完畢後,我們現在來修改zabbix sever的配置文件,如下:
[root@zabbix ~]# vi /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
上述配置文件中,我們只需要關注 DBHost、DBName、DBUser、
DBPassword 幾項即可。這幾項是配置zabbix server連接mysql數據庫的參數。
以上修改完畢後,我們再來修改下zabbix.conf文件。如下:
vi /etc/httpd/conf.d/zabbix.conf
Alias /zabbix /usr/share/zabbix
Options FollowSymLinks
AllowOverride None
Require all granted
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Chongqing
修改前:
修改後:
其中php_value date.timezone Asia/Chongqing主要是定義php的時區。
以上修改完畢後,我們把把zabbix-server加入開機啓動,並啓動zabbix-server,如下:
[root@zabbix ~]# systemctl start zabbix-server.service
[root@zabbix ~]# systemctl enable zabbix-server.service
最後重啓apache,如下:
[root@zabbix ~]# systemctl restart httpd.service
三、配置zabbix
http://ip/zabbix/setup.php
Next step
Next step
上圖中需要填寫的是,我們前面創建的zabbix數據庫已經用戶和密碼 , Next step
Next step
Next step
Finish
默認用戶名是Admin 密碼 zabbix 然後點擊sign in
四、安裝zabbix agent
前面我們安裝了zabbix server3.0,本章節我們介紹安裝zabbix agent端。zabbix agent的安裝比較簡單,我們只需要安裝相應的倉庫,然後執行安裝命令即可。
4.1 安裝zabbix agent
在centos os上安裝agent,使用如下命令:
rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
[root@zabbix ~]# yum clean all
[root@zabbix ~]# yum -y install zabbix zabbix-agent
在安裝時如出現如上圖所示錯誤,原因是軟件這兩個版本不一致,仔細觀察發現這兩個軟件包使用了不同的倉庫,把epel的關閉(enabled=0,位於/etc/yum.repos.d/epel.repo或etc/yum.repos.d/CentOS-Epel.repo)再重裝
4.2 配置zabbix agent
zabbix agent的配置很簡單,只需要修改zabbix agent配置文件中的Server、ServerActive和Hostname這三項即可。
其中Server、ServerActive是zabbix server服務器的IP地址,Hostname是被監控端的IP地址,如下:
[root@zabbix ~]# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=127.0.0.1
Include=/etc/zabbix/zabbix_agentd.d/
以上配置完畢後,我們在zabbix web端添加該監控機器時,只需要把honst name與該配置文件中的hostname對應即可。如下:
Server=服務器ip地址
ServerActive=服務器ip地址
Hostname=客戶端ip地址
Server被動ServerActive主動
到此zabbix agent就已經安裝完畢。
啓動客戶端
[root@zabbix ~]# zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
[root@zabbix ~]# systemctl start zabbix-agent
[root@zabbix ~]# systemctl restart zabbix-agent
[root@zabbix ~]# systemctl enable zabbix-agent
查看一下狀態
五、zabbix web中文顯示與優化
5.1 zabbix web中文顯示
默認情況下zabbix web顯示的是英文,實際上zabbix是支持中文的,我們可以通過修改web端源文件來開啓中文。
修改/usr/share/zabbix/include/locales.inc.php文件,把zh_CN所在行的false改爲true即可,如下:
[root@zabbix ~]# vim /usr/share/zabbix/include/locales.inc.php +55
改正前:
改正後:
最後後點擊zabbix web監控網頁端右上角人頭頭像,在彈出的選項卡選擇中文語言即可。如下:
改正前:
改正後:
5.2 中文顯示優化
安裝中文支持包
安裝方法如下:
[root@zabbix ~]# wget https://github.com/echohn/zabbix-zh_CN/archive/master.zip
[root@zabbix ~]# unzip master.zip
[root@zabbix ~]# rm /usr/share/zabbix/locale/zh_CN/LC_MESSAGES/frontend.mo
[root@zabbix ~]# cp zabbix-zh_CN-master/frontend.mo /usr/share/zabbix/locale/zh_CN/LC_MESSAGES/frontend.mo
現在重啓下apache和zabbix_server兩個服務就可以,如下:
[root@zabbix ~]# systemctl restart httpd
[root@zabbix ~]# systemctl restart zabbix-server
zabbix中文亂碼:
亂碼如下圖:
解決亂碼方法:
把Windows 系統中找到 C:\Windows\Fonts 中的楷體(常規)複製到windows桌面上
把 simkai.ttf上傳到 linux 裏上,接下來把 simkai.ttf 移動到 zabbix 安裝目錄的 fonts 目錄下
[root@zabbix ~]# mv simkai.ttf /usr/share/zabbix/fonts/
[root@zabbix ~]# cd /usr/share/zabbix/fonts/
[root@zabbix fonts]# ls
graphfont.ttf simkai.ttf
[root@zabbix fonts]# chmod 777 simkai.ttf
[root@zabbix fonts]# cp graphfont.ttf graphfont.ttf.bak
[root@zabbix fonts]# mv simkai.ttf graphfont.ttf
mv :是否覆蓋 "graphfont.ttf" ? y
查看一下 ,ok了
問題:
1. mysql路徑問題,zabbix長時間監控數據會很大,mysql數據需要存儲大數據盤裏面,我的/home是空間大;
1.systemctl stop mariadb.service
2.mv /var/lib/mysql /home
3.chown -R mysql:mysql /home/mysql
4.ln -s /home/mysql /var/lib/mysql 記得是/home/mysql不是/home/mysql/
5.vim /etc/my.cnf 修改datadir=/home/mysql
6.systemctl start mariadb.service
重啓以後可以使用zabbix了;
2.1郵件報警:
在zabbix-server.conf 中找到Alert 路徑建立路徑及發送郵件腳本;
mkdir alertscripts
vim send_email.sh
#!/bin/sh
#export.UTF-8
FILE=/var/log/zabbix/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
zabbix-管理--示警媒介類型--創建媒體類型-名字,腳本,sendmail腳本名字,--添加聯繫人郵件。。
配置--動作--條件--操作--依次設置添加要發送的用戶;
2.2.郵件測試報錯
send-mail: fatal: parameter inet_interfaces: no local interface found for ::1
發送郵件:
[root@VM_0_centos alertscripts]# ./send_mail.sh [email protected] "test" "hello"
出現異常:
[root@iZ23whn33jnZ log]# send-mail: fatal: parameter inet_interfaces: no local interface found for ::1
查看centos中的postfix日誌
more /var/log/maillog
postfix: fatal: parameter inet_interfaces: no local interface found for ::1
參考網上的:
vi /etc/postfix/main.cf
inet_interfaces = localhost
inet_protocols = all
改成:
inet_interfaces = all
inet_protocols = all
重新啓動
systemctl restart postfix.service
OK!
3.zabbix-agent安裝先安裝zabbix的yum源:
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
沒安裝的話yum安裝zabbix agent可能會安裝zabbix22-2.2.20-1.el7.x86_64版本,卸載重裝
rpm -qa|grep zabbix
rpm -e zabbix22-2.2.20-1.el7.x86_64
yum clean all
yum -y install zabbix zabbix-agent
即可;
PS一些故障問題:
1.zabbix對新的主機監控關聯模板一直沒反應,原來報了500錯誤,查看日誌:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 78 bytes) in /usr/share/zabbix/include/classes/debug/CProfiler.php
將/etc/httpd/conf.d/zabbix.conf中的memory_limit = 128M改爲512M, systemctl restart httpd問題解決。
2.Zabbix server內存溢出,無法啓動
問題原因:zabbix使用一段時間後,再次加入一批交換機監控,zabbix-server將無法啓動,查看日誌顯示如下(提示內存溢出,需調整zabbix服務器配置zabbix_server.conf)
2816:20170725:174352.675 [file:dbconfig.c,line:652] zbx_mem_realloc(): out of memory (requested 162664 bytes)
2816:20170725:174352.675 [file:dbconfig.c,line:652] zbx_mem_realloc(): please increase CacheSize configuration parameter
解決方案:
vim zabbix_server.conf 2 3 CacheSize=1024M #默認爲8M
3.Zabbix discoverer processes more than 75% busy
問題原因:
配置了discovery自動發現任務,配置的每個discovery任務在一定時間內佔用1個進程,而zabbix_server.conf中默認配置只有1個discovery(被註釋,默認生效)爲了快速驗證自動發現效果,將discovery任務的"Delay"由默認3600s設置成60s
解決方案:
a.修改配置文件/etc/zabbix/zabbix_server.conf中的StartDiscoverers進程數量,取消其之前的#號並將數值修改爲5,最後重啓服務
(注:根據系統硬件配置,可以設置成更高的數值,但其範圍爲0~250)
grep 'StartDiscoverers' /etc/zabbix/zabbix_server.conf
Option: StartDiscoverers
StartDiscoverers=5
systemctl restart zabbix-server.service
b.編寫定時任務腳本重啓zabbix_server來降低負載
計劃會每天自動重啓Zabbix服務以結束殭屍進程並清理內存等;
4.Zabbix poller processes more than 75% busy
問題原因:
通過Zabbix agent採集數據的設備死機或其他原因導致zabbix agent死掉server獲取不到數據
server向agent獲取數據時時間過長,超過了server設置的timeout時間
解決方案:
增加Zabbix Server啓動時初始化的進程數量
Option: StartPollers StartPollers=10 #改成多少取決於服務器的性能和監控的數量,如果內存足夠的話可以設置更高
修改模板自動發現規則中的保留失去的資源期間爲0
5.Zabbix housekeeper processes more than 75% busy
問題原因:
爲了防止數據庫持續增大,zabbix有自動刪除歷史數據的機制即housekeeper,而mysql刪除數據時性能會降低,就會報錯
解決方案:
調整HousekeepingFrequency參數
HousekeepingFrequency=12 #間隔時間 MaxHousekeeperDelete=1000000 #最大刪除量