本人嘗試在Minimal CentOS7中使用源碼包編譯安裝Zabbix 3.0.1,使用LAMP環境,通過Yum安裝Apache 2.4.6, MariaDB 10.1.12, PHP 5.6.18及相關依賴包。

建議先閱讀Error About gnutls Version部分,以免操作到最後,無法正常啓動服務。


Zabbix Introduction

Zabbix是一個企業級開源分佈式監控解決方案,可用於監控網路和服務器健康狀態。Zabbix基於General Public License version 2(GPL)發佈,故而可以免費獲取。

Zabbix Features

Zabbix具有如下特性

Features Explanations
Data gathering 數據收集
Flexible threshold definitions 靈活定義閾(yu)值
Highly configurable alerting 高度可配的報警設置
Real-time graphing 實時圖表
Web monitoring capabilities 網路監控能力
Extensive visualisation options 豐富的可視化選項
Historical data storage 歷史數據存儲
Easy configuration 易於配置
Use of templates 模版使用
Network discovery 網路偵測(發現)
Fast web interface 快捷的Web界面
Zabbix API Zabbix的API接口
Permissions system 系統權限
Full featured and easily extensible agent 功能全面、易於擴展的代理
Binary daemons 二進制守護進程
Ready for complex environments 可應對複雜的環境

來源 Zabbix features

Zabbix Concepts

Zabbix中的相關術語,此處不翻譯,直接列出

  • host, host group, application
  • item, trigger,
  • event, action, escalation
  • media, notification
  • remote command
  • template
  • web scenario, frontend
  • Zabbix API
  • Zabbix server, Zabbix agent, zabbix proxy

來源 Zabbix definitions


Prerequisites

Zabbix對硬件、系統平臺及各軟件的要求見 Requirements

配置LAMP環境,因爲採用YUM方式安裝LAMP,但官方Repo中的軟件版本較低,故而採用第三方Yum源安裝相關軟件。

如果對安全性有顧慮,可以考慮使用源碼包編譯安裝,操作過程可參考本人Blog Try to Compile and Install Apache2.4&MariaDB.10.1&PHP7.3 in Minimal CentOS7

對LAMP的要求

  • MySQL 5.0.3+: 須使用InnoDB引擎
  • Apache 1.3.12+
  • PHP 5.4.0+
    • 暫不支持PHP7

至於數據庫存儲空間計算,可參考官方文檔

Disable SELinux

需要關閉SELinux,否則會影響服務正常啓動,可使用如下命令

1
sed -i -r '[email protected][email protected][email protected];[email protected](SELINUXTYPE=targeted)@#\[email protected]' /etc/selinux/config

Add YUM Repositories

使用Yum安裝的好處是自動解決複雜的包依賴關係,此處要添加3個Yum倉庫

EPELREMI用於安裝PHP5.5及以上版本,MariaDB Repo用於安裝MariaDB,目前可選版本有10.1, 10.0, 5.5

在CentOS中Yum倉庫的存放路徑是/etc/yum.repos.d,此處不展開敘述如何下載、安裝相關Yum源。

注意: 以下所有操作使用具有sodu權限的普通用戶進行,故相關命令之前會加上sudo

Yum Install LAMP

相關Yum源安裝完成後,執行如下操作更新系統軟件(不更新內核)

1
2
3
yum clean all
sudo yum update -y --exclude=kernel*
sudo yum makecache

安裝開發工具包組

1
sudo yum -y groupinstall "Development Tools"

  • 安裝Apache Httpd

    1
    sudo yum install -y httpd
  • 安裝MariaDB

    1
    sudo yum install -y MariaDB-server MariaDB-client MariaDB-devel
  • 安裝PHP及相關擴展
    此處暫不使用php-fpm

    1
    sudo yum install -y --enablerepo=remi php php-gd php-bcmath php-ctype php-libxml php-xmlreader php-xmlwriter php-session php-net-socket php-mbstring php-gettext php-ldap php-mysqlnd

以下是安裝完成後的版本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#PHP 版本
[[email protected] ~]$ php -v
PHP 5.6.18 (cli) (built: Feb 3 2016 13:07:14)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

#Apache httpd版本
[[email protected] ~]$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 19 2015 21:43:13

#MariaDB 版本
[[email protected] ~]$ mysql -V
mysql Ver 15.1 Distrib 10.1.12-MariaDB, for Linux (x86_64) using readline 5.1
[[email protected] ~]$

Simple Configuration

LAMP安裝完成後,須進行簡單配置,以便Zabbix能安裝、使用,以下是各配置文件路徑

Softwares Path
Httpd /etc/httpd/conf/httpd.conf
PHP /etc/php.ini
MariaDB /etc/my.cnf

注意: 在進行配置文件修改之前,最好先進行備份文件,以便回滾。

Apache Configuration

配置Apache使支持PHP,執行

1
2
3
4
#備份配置文件
sudo cp -p /etc/httpd/conf/httpd.conf{,.bak}

sudo vim /etc/httpd/conf/httpd.conf

修改

1
2
3
4
5
6
#DirectoryIndex index.html
DirectoryIndex index.php index.html

#添加以下兩行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

PHP Configuration

配置PHP使滿足Zabbix要求,以下是Zabbix官方給出的PHP配置參數

1
2
3
4
5
6
7
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 Europe/Riga

關於時區設置,官方的意見是

It’s necessary to uncomment the “date.timezone” setting and set the right timezone for you.

即需要設置該參數,取消註釋,中國大陸地區可使用Asia/Shanghai

執行

1
2
3
4
#備份配置文件
sudo cp -p /etc/php.ihi{,.bak}

sudo vim /etc/php.ini

按照官方提供的參數進行更改

1
2
3
4
5
6
7
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai

MariaDB Configuration

執行

1
mysql_secure_installation

進行數據庫安全配置,是否爲root用戶設置密碼,是否允許root用戶遠程登錄、是否允許匿名用戶、是否刪除test數據庫。

MariaDB按照默認設置即可,如果需要更改sockPIDFile路徑,可自行配置。如果更改了,之後在修改Zabbix配置文件時須手動指定相關路徑。

Download and Verify Zabbix Package

Zabbix官方下載頁面 http://www.zabbix.com/download.php,提供rpm包、源碼包下載。

此處下載源碼包,找到 Zabbix Sources 部分,此處選擇Zabbix 3.0 LTS,顯示最新版本是3.0.1,釋出時間是26 Feb 2016。點擊右側Download下載即可。

Zabbix Official Repository 地址是 http://repo.zabbix.com/,可下載rpm包。

不知何原因,Zabbix官方並未在下載頁提供rpm包和源碼包的校驗碼(如md5、sha1、sha512或gpg等),是對自己網站安全有足夠的信心麼?

竊以爲這是很大的安全隱患!

以下是本人自行校驗過程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[[email protected] ~]$ cd Downloads/

#md5校驗
[[email protected] Downloads]$ openssl dgst -md5 zabbix-3.0.1.tar.gz
MD5(zabbix-3.0.1.tar.gz)= 890d9eec69304ad552959fabe0a5d122

#md5校驗
[[email protected] Downloads]$ md5sum zabbix-3.0.1.tar.gz
890d9eec69304ad552959fabe0a5d122 zabbix-3.0.1.tar.gz

#sha1校驗
[[email protected] Downloads]$ openssl dgst -sha1 zabbix-3.0.1.tar.gz
SHA1(zabbix-3.0.1.tar.gz)= 2e4e870bc3359f594d2d661f7e1fe9e8163ef79e

#sha1校驗
[[email protected] Downloads]$ sha1sum zabbix-3.0.1.tar.gz
2e4e870bc3359f594d2d661f7e1fe9e8163ef79e zabbix-3.0.1.tar.gz

#sha256sum校驗
[[email protected] Downloads]$ sha256sum zabbix-3.0.1.tar.gz
e91a8497bf635b96340988e2d9ca1bb3fac06e657b6596fa903c417a6c6b110b zabbix-3.0.1.tar.gz

#sha512sum校驗
[[email protected] Downloads]$ sha512sum zabbix-3.0.1.tar.gz
ee24883e37335bfe274a20fe43bd8ff1d1814e240177d7486363691374f8a07ef12506724ea9422efb11eaa8b2f49f2639dec774db160ffa00cb08a60a3fac78 zabbix-3.0.1.tar.gz
[[email protected] Downloads]$

Extraction and Compile and Install Zabbix

將軟件包zabbix-3.0.1.tar.gz移到目錄/usr/local/src下,然後進行相關操作

1
2
3
4
5
6
7
8
#切換到軟件包存放目錄
cd /usr/local/src

#解壓縮源碼包
sudo tar xf zabbix-3.0.1.tar.gz

#進入zabbix-3.0.1目錄
cd zabbix-3.0.1

執行./configure --help可查看具體可配置的信息

根據使用情況的不同,可分爲以下幾種情況

  • 主機同時運行server, agent: --enable-server --enable-agent
  • 主機只運行server: --enable-server
  • 主機只運行agent: --enable-agent

根據實際使用場景設置該參數

先安裝相關依賴包

1
sudo yum -y install libxml2-devel libcurl-devel net-snmp-devel libssh2-devel curl curl-devel

此處設置軟件安裝路徑爲/usr/local/zabbix,配置文件安裝路徑爲/etc/zabbix,同時安裝zabbix_server,zabbix-agent,不安裝zabbix-proxy

執行編譯安裝

1
2
3
4
5
./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix --enable-server --enable-agent --with-ssh2 --with-openssl --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

#使用-j參數,進行多線程編譯,加快編譯速度,數值根據自身情況設置
sudo make -j 4
sudo make install

Command-line utilities zabbix_get and zabbix_sender are compiled if --enable-agent option is used. 使用--enable-agent會自動編譯安裝zabbix_getzabbix_sender

Using --enable-static option is not recommended when building server. 官方不推薦使用--enable-static

安裝過程較長,請耐性等待。安裝完成後,即可進行Zabbix配置。


Zabbix Configuration

Zabbix的配置過程較爲繁瑣,須保持耐心、細心。

配置主要參考官方文檔 Installation from sources

Add Unprivileged User Account

If a Zabbix daemon is started from an unprivileged user account, it will run as that user.

However, if a daemon is started from a ‘root’ account, it will switch to a ‘zabbix’ user account, which must be present.

創建僅用於Zabbix守護進程的用戶

1
2
3
4
5
6
7
8
9
10
#創建系統用戶組
sudo groupadd -r zabbix

#創建系統用戶,執行shell爲/bin/false,禁止使用其它服務
useradd -M -r -g zabbix -s /bin/false zabbix

#設置密碼爲`zabbix`
passwd zabbix

echo 'zabbix' | passwd --stdin zabbix

Create Zabbix Database

Zabbix數據存儲在MySQL數據庫中,故需創建數據庫賬戶、數據庫。操作依據官方文檔 Database creation scripts

官方給出的操作過程

shell> mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to [email protected] identified by ‘‘;
mysql> quit;
shell> cd database/mysql
shell> mysql -uzabbix -p zabbix < schema.sql
shell> mysql -uzabbix -p zabbix < images.sql
shell> mysql -uzabbix -p zabbix < data.sql

  • 創建Zabbix數據庫賬戶,密碼設爲zabbix

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #登錄數據庫
    mysql -uroot -p

    #創建名爲zabbix的數據庫容器,強烈建議使用此名,否則需要更改很多配置文件的相關默認設置,導入數據庫時也會報錯
    mysql> create database if not exists zabbix default character set=utf8 collate=utf8_general_ci;

    #創建數據庫登錄帳號[email protected],如果是遠程主機,可將`localhost`替換爲具體的IP地址
    mysql> grant all privileges on zabbix.* to [email protected] identified by 'zabbix';

    #刷新權限表
    mysql> flush privileges;

    #退出數據庫登錄
    mysql> exit
  • 導入數據庫
    數據庫文件在/usr/local/src/zabbix-3.0.1/database/mysql目錄下

此爲官方說明

schema.sql, images.sql and data.sql files are located in the database subdirectory of Zabbix sources. If Zabbix was installed from distribution packages, refer to the distribution documentation.

1
2
3
4
5
6
7
8
cd /usr/local/src/zabbix-3.0.1/database/mysql

shell> mysql -uzabbix -p zabbix < schema.sql

# stop here if you are creating database for Zabbix proxy
# 如果只是使用`Zabbix proxy`,只需導入schema.sql即可
shell> mysql -uzabbix -p zabbix < images.sql
shell> mysql -uzabbix -p zabbix < data.sql

總共導入113張數據表。

Service Ports

在文件/etc/services中查看是否已經定義Zabbix相關端口,agent默認端口11050,server默認端口11051

1
2
3
4
5
6
[[email protected] ~]$ cat /etc/services | grep -i zabbix
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
[[email protected] ~]$

如果未查詢到則需添加到該文件中

Edit Zabbix Configuration File

如果編譯安裝時指定了--sysconfdir,則Zabbix agentZabbix server的配置文件在指定的目錄中。此處爲
/etc/zabbix,其配置文件分別是zabbix_agentd.confzabbix_server.conf

配置文件修改內容

  • zabbix_agentd.conf在每個被監控的主機上都要配置
  • zabbix_server.conf,則需指定數據庫名、數據庫用戶帳號和密碼

備份配置文件

1
2
3
4
5
6
sudo cp -p /etc/zabbix/zabbix_agentd.conf{,.bak}
sudo cp -p /etc/zabbix/zabbix_server.conf{,.bak}

for i in /etc/zabbix/*.conf; do sudo cp -p ${i}{,.bak};done

???是否需要執行 chown -R zabbix:zabbix /etc/zabbix

Specity Log Path

編譯安裝後,默認的日誌路徑是/tmp,此目錄不適合存儲日誌

1
2
3
4
5
#/etc/zabbix/zabbix_server.conf
LogFile=/tmp/zabbix_server.log

#/etc/zabbix/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log

將日誌存儲到目錄/var/log

1
2
3
4
5
#創建目錄zabbix
sudo mkdir -p /var/log/zabbix

#將目錄及目錄下所有文件的屬主、屬組更改爲zabbix
sudo chown -R zabbix:zabbix /var/log/zabbix

zabbix_server.conf

文件路徑/etc/zabbix/zabbix_server.conf

進行如下修改操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# LogFile=/tmp/zabbix_server.log
LogFile=/var/log/zabbix/zabbix_server.log

DBName=zabbix
DBUser=zabbix
DBPassword=zabbix #如果未設置密碼,可註釋此行
# DBHost=localhost

#服務器IP,如果監聽本機無需更改,如果有固定IP可指定
# ListenIP=127.0.0.1

#如果在MariaDB配置文件中更改了sock路徑或prot端口,則須指定具體路徑
#DBSocket=/tmp/mysql.sock
#DBPort=3306

獨立配置文件路徑(可選)
# Include=
Include=/etc/zabbix/zabbix_server.conf.d

zabbix_agentd.conf

文件路徑/etc/zabbix/zabbix_agentd.conf

進行如下修改操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#LogFile=/tmp/zabbix_agentd.log
LogFile=/var/log/zabbix/zabbix_agentd.log

允許執行來自Zabbix Server的遠程命令
# EnableRemoteCommands=0
EnableRemoteCommands=1

以下參數如果在本地,無需更改,如果Server是單獨主機,須指定爲具體的Server IP
#Zabbix servers的ip 被動
Server=127.0.0.1
#Zabbix servers的ip 主動
ServerActive=127.0.0.1

????#必須與zabbix server上配置的Hostname相同
Hostname=Zabbix server

獨立配置文件路徑(可選)
# Include=
Include=/etc/zabbix/zabbix_agentd.conf.d

使用源碼包編譯安裝後,是無法在bash中直接使用zabbix_server, zabbix_agentd, zabbix_get, zabbix_sender命令的,只能到對應路徑下執行。

Running make install will by default install the daemon binaries (zabbix_server, zabbix_agentd, zabbix_proxy) in /usr/local/sbin and the client binaries (zabbix_get, zabbix_sender) in /usr/local/bin.

如果指定了--prefix,則相關二進制文件在指定目錄中,此處在/usr/local/zabbix/{bin,sbin}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[[email protected] zabbix]$ pwd
/usr/local/zabbix
[[email protected] zabbix]$ tree bin sbin
bin
├── zabbix_get
└── zabbix_sender
sbin
├── zabbix_agentd
└── zabbix_server

0 directories, 4 files
[[email protected] zabbix]$ ls
bin lib sbin share
[[email protected] zabbix]$
  • 導出頭文件(C header files)
    源碼包中有include目錄,但/usr/local/zabbix/目錄下未生成頭文件,故無需執行ln -sv /usr/local/zabbix/include /usr/local/include/zabbix

  • 導出庫文件
    創建文件/etc/ld.so.conf.d/zabbix.conf,寫入lib路徑/usr/local/zabbix/lib

1
sudo vim /etc/ld.so.conf.d/zabbix.conf

寫入如下內容

1
/usr/local/zabbix/lib

執行如下命令,讓系統重新生成緩存

1
ldconfig -v

  • 爲可執行程序添加PATH路徑
    創建文件/etc/profile.d/zabbix.sh,寫入程序執行路徑
    1
    sudo vim /etc/profile.d/zabbix.sh

寫入如下內容

1
export PATH=$PATH:/usr/local/zabbix/bin:/usr/local/zabbix/sbin

執行下操作,使配置文件生效

1
source /etc/profile.d/zabbix.sh

至此,可在任意路徑下,執行zabbix_server, zabbix_agentd, zabbix_get, zabbix_sender命令

1
2
3
4
5
6
#使用which和type命令查看
[[email protected] ~]$ which zabbix_server
/usr/local/zabbix/sbin/zabbix_server
[[email protected] ~]$ type zabbix_server
zabbix_server is /usr/local/zabbix/sbin/zabbix_server
[[email protected] ~]$

SysVinit && Systemd Support

CentOS 6.x使用SysVinit管理服務,CentOS 7.x開始使用Systemd管理服務。可對服務進行啓動、關閉、狀態查詢,也可設置服務開機啓動。此處爲Zabbix添加SysVinitSystemd支持。

SysVinit Support

在源碼包中有misc/init.d目錄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[flyi[email protected] init.d]$ pwd
/usr/local/src/zabbix-3.0.1/misc/init.d
[[email protected] init.d]$ tree
.
├── aix
│ └── zabbix_agentd
├── debian
│ ├── zabbix-agent
│ └── zabbix-server
├── fedora
│ ├── core
│ │ ├── zabbix_agentd
│ │ └── zabbix_server
│ └── core5
│ ├── zabbix_agentd
│ └── zabbix_server
├── freebsd
│ ├── zabbix_agentd
│ └── zabbix_server
├── gentoo
│ ├── zabbix-agentd
│ └── zabbix-server
├── README
├── suse
│ ├── 9.1
│ │ ├── zabbix_agentd
│ │ └── zabbix_server
│ ├── 9.2
│ │ ├── zabbix_agentd
│ │ └── zabbix_server
│ └── 9.3
│ ├── zabbix_agentd
│ └── zabbix_server
├── tru64
│ ├── zabbix_agentd
│ └── zabbix_server
└── ubuntu
├── zabbix-agent.conf
└── zabbix-server.conf

13 directories, 22 files
[[email protected] init.d]$

CentOS與Fodora同屬於Redhat系,故選擇fedora/core5

複製相關文件到目錄/etc/init.d/

1
2
sudo cp /usr/local/src/zabbix-3.0.1/misc/init.d/fedora/core5/zabbix_server /etc/init.d/
sudo cp /usr/local/src/zabbix-3.0.1/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/

因爲是自定義安裝路徑,故需要修改命令路徑

進行如下修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
執行 sudo vim /etc/init.d/zabbix_agentd
將ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"
改爲 ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"

執行 sudo vim /etc/init.d/zabbix_server
ZABBIX_BIN="/usr/local/sbin/zabbix_server"
改爲 ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"

#賦予執行權限
sudo chmod +x /etc/init.d/zabbix_server
sudo chmod +x /etc/init.d/zabbix_agentd

#設爲開機啓動
sudo chkconfig zabbix_server on
sudo chkconfig zabbix_agentd on

#檢查
chkconfig --list

至此,即可使用service命令控制Zabbix相關服務。

Systemd Support

CentOS 7.x版本使用Systemd管理服務

須注意: service文件修改後,須使用systemctl daemon-reload命令重新加載。

  • zabbix-server.service
    此爲使用yum安裝生成的 zabbix-server.service,路徑是
    1
    /usr/lib/systemd/system/zabbix-server.service

文件內容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target

根據配置情況,將其對應更改爲

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
#EnvironmentFile=-/etc/sysconfig/zabbix-server
EnvironmentFile=-/etc/zabbix
Type=forking
Restart=on-failure
#PIDFile=/run/zabbix/zabbix_server.pid
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
#ExecStart=/usr/sbin/zabbix_server -c $CONFFILE
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target
Alias=zserver.service
Alias=zbxserver.service

創建文件/usr/lib/systemd/system/zabbix-server.service,寫入以上更改後的內容。當使用systemctl enable zabbix-server.service命令設置爲開機啓動後,可使用別名zserver.service, zbxserver.service來控制zabbix-server服務。

  • zabbix-agent.service
    此爲使用yum安裝生成的 zabbix-server.service,路徑是/usr/lib/systemd/system/zabbix-agent.service

根據配置情況,也進行對應的修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
#EnvironmentFile=-/etc/sysconfig/zabbix-agent
EnvironmentFile=-/etc/zabbix
Type=forking
Restart=on-failure
#PIDFile=/run/zabbix/zabbix_agentd.pid
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
#ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target
Alias=zagent.service
Alias=zbxagent.service

創建文件/usr/lib/systemd/system/zabbix-agent.service,寫入以上更改後的內容。

  • zabbix_proxy.service

此爲使用yum安裝生成的 zabbix-server.service,路徑是/usr/lib/systemd/system/zabbix_proxy.service

文件內容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_proxy.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-proxy
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_proxy.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target

如果有使用zabbix_proxy服務的,參照前面的操作具體修改即可。

操作完成後,即可使用systemctl命令

  • systemctl status zabbix-server.service
  • sudo systemctl {start|stop|restart} zabbix-server.service

Start Zabbix Service

啓動服務

1
2
3
4
5
service zabbix_server start #啓動zabbix server
service zabbix_agentd start #啓動zabbix agentd

systemctl start zabbix-server.service
systemctl start zabbix-agent.service

設置爲開機啓動

1
2
3
4
5
6
7
8
9
10
#CentOS 6.x, 7.x
#設爲開機啓動
sudo chkconfig zabbix_server on
sudo chkconfig zabbix_agentd on
#檢查
chkconfig --list

#CentOS 7.x
systemctl enable zabbix-server.service
systemctl enable zabbix-agent.service

監聽端口

1
2
3
4
5
[[email protected] ~]# ss -tnl | grep "10050\|10051"
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 127.0.0.1:10051 *:*
LISTEN 0 128 :::10050 :::*
[[email protected] ~]#


Configuration Web Site

複製php文件至apache服務器根目錄,apache的DocumentRoot是默認是 /var/www/html/

php文件在源碼包的frontends目錄中,此處爲/usr/local/src/zabbix-3.0.1/frontends/php/

操作

1
2
3
4
5
chown -R apache:apache /var/www/html
(umask 027; sudo mkdir -p /var/www/html/zabbix)
sudo cp -pr /usr/local/src/zabbix-3.0.1/frontends/php/*
/var/www/html/zabbix
sudo chown -R apache:apache /var/www/html/zabbix

操作完成後,在瀏覽器中輸入http://localhost/zabbix,自動出現Zabbix安裝界面,按照要求操作即可。

默認登錄用戶名是Admin,密碼是zabbix

The default user name is Admin, password zabbix.

可能會出現報錯提示,提示

1
Unable to create the configuration file.

修改目錄權限/var/www/html/zabbix,或直接下載配置文件到指定路徑即可。

Language Setting

登錄系統後,界面默認是英文,在Administration–>Users下點擊具體用戶可看到Language選項,默認沒有中文。其實Zabbix自帶有中文語言包,須手動設置。

Zabbix的Web文件/include目錄下有文件locales.inc.php,其中有

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function getLocales() {
return [
'en_GB' => ['name' => _('English (en_GB)'), 'display' => true],
'en_US' => ['name' => _('English (en_US)'), 'display' => true],
'bg_BG' => ['name' => _('Bulgarian (bg_BG)'), 'display' => false],
'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => false],
'zh_TW' => ['name' => _('Chinese (zh_TW)'), 'display' => false],
'cs_CZ' => ['name' => _('Czech (cs_CZ)'), 'display' => true],
'nl_NL' => ['name' => _('Dutch (nl_NL)'), 'display' => false],
'fi_FI' => ['name' => _('Finnish (fi_FI)'), 'display' => false],
'fr_FR' => ['name' => _('French (fr_FR)'), 'display' => true],
'ka_GE' => ['name' => _('Georgian (ka_GE)'), 'display' => false],
'de_DE' => ['name' => _('German (de_DE)'), 'display' => false],
'el_GR' => ['name' => _('Greek (el_GR)'), 'display' => false],
'hu_HU' => ['name' => _('Hungarian (hu_HU)'), 'display' => false],
'id_ID' => ['name' => _('Indonesian (id_ID)'), 'display' => false],
'it_IT' => ['name' => _('Italian (it_IT)'), 'display' => true],
'ko_KR' => ['name' => _('Korean (ko_KR)'), 'display' => true],
'ja_JP' => ['name' => _('Japanese (ja_JP)'), 'display' => true],
'lv_LV' => ['name' => _('Latvian (lv_LV)'), 'display' => false],
'lt_LT' => ['name' => _('Lithuanian (lt_LT)'), 'display' => false],
'fa_IR' => ['name' => _('Persian (fa_IR)'), 'display' => false],
'pl_PL' => ['name' => _('Polish (pl_PL)'), 'display' => true],
'pt_BR' => ['name' => _('Portuguese (pt_BR)'), 'display' => true],
'pt_PT' => ['name' => _('Portuguese (pt_PT)'), 'display' => false],
'ro_RO' => ['name' => _('Romanian (ro_RO)'), 'display' => false],
'ru_RU' => ['name' => _('Russian (ru_RU)'), 'display' => true],
'sk_SK' => ['name' => _('Slovak (sk_SK)'), 'display' => true],
'es_ES' => ['name' => _('Spanish (es_ES)'), 'display' => false],
'sv_SE' => ['name' => _('Swedish (sv_SE)'), 'display' => false],
'tr_TR' => ['name' => _('Turkish (tr_TR)'), 'display' => false],
'uk_UA' => ['name' => _('Ukrainian (uk_UA)'), 'display' => true],
'vi_VN' => ['name' => _('Vietnamese (vi_VN)'), 'display' => false]
];
}

Chinese相關的display選項設置爲true後,重新登錄系統即可進行語言設置。


Error About gnutls Version

本人當前CentOS 7系統版本是7.2.1511

1
2
3
[[email protected] ~]$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[[email protected] ~]$

使用的gnutls版本是3.3.8-14

1
2
3
4
5
[[email protected] zabbix]$ rpm -qa | grep gnutls
gnutls-dane-3.3.8-14.el7_2.x86_64
gnutls-utils-3.3.8-14.el7_2.x86_64
gnutls-3.3.8-14.el7_2.x86_64
[[email protected] zabbix]$

因爲gnutls版本的原因導致systemctl命令無法正常啓動Zabbix服務。本人進行了大量排錯測試無果(折騰了至少2個小時),後在Zabbix官方論壇找到出現類似情況的帖子,說是要使用gnutls-3.1.18-10.el7_0.x86_64,需要對gnutls進行降級。

針對此問題,解決方案是降級使用gnutls-3.1.18-10.el7_0.x86_64.rpm,此處遇到問題:

  • 現有的倉庫已經不支持這個版本,故無法通過yum源安裝;
  • gnutls本身有依賴關係,依賴關係未知

後在 Install and use Zabbix on CentOS 7 or RHEL 7 的評論部分找到一種折衷的解決方案,gnutls依賴於gnutls-danegnutls-utils,故須同時下載三者3.1.18-10.el7_0.x86_64版本的rpm包

下載完成後,使用sudo yum downgrade命令安裝此三者

1
2
//降級安裝
sudo yum downgrade gnutls-3.1.18-10.el7_0.x86_64.rpm gnutls-dane-3.1.18-10.el7_0.x86_64.rpm gnutls-utils-3.1.18-10.el7_0.x86_64.rpm

同時在文件/etc/yum.conf中添加exclude=gnutls*

然後重新編譯Zabbix。


Recommendation

此處推薦一個不錯的部落格 運維生存時間,博主撰寫了大量關於Zabbix的博文。更整理成文檔,分享在網路上 - ZABBIX从入门到精通V3.0.1正式发布! 。且不論文檔寫得怎麼樣,這種無私奉獻的精神,讓人震撼,值得學習。


References


Change Log

  • 2016.02.27 21:10 Sat Asia/Beijing
    • 成功實現編譯安裝,初稿完成
  • 2016.03.02 19:08 Wed Asia/Beijing
    • 添加Disable SELinux
  • 2016.04.07 18:46 Thu Asia/Beijing
    • 添加Language Setting

  • Note Time: 2016.02.27 21:10 Sat
  • Note Location: Asia/Beijing
  • Writer: lempstacker