1 Zabbix使用場(chǎng)景及系統(tǒng)概述
Zabbix是一個(gè)企業(yè)級(jí)解決方案电爹,支持實(shí)時(shí)監(jiān)控?cái)?shù)千臺(tái)服務(wù)器恢筝,虛擬機(jī)和網(wǎng)絡(luò)設(shè)備哀卫,采集百萬級(jí)監(jiān)控指標(biāo),適用于任何IT基礎(chǔ)架構(gòu)撬槽、服務(wù)此改、應(yīng)用程序和資源的解決方案
1.1 Zabbix使用場(chǎng)景
1.2 Zabbix系統(tǒng)概述
1.2.1 數(shù)據(jù)采集
周期性時(shí)序數(shù)據(jù)
主機(jī)/對(duì)象:服務(wù)器、路由器侄柔、交換機(jī)共啃、存儲(chǔ)、防火墻暂题、IP移剪、PORT、URL薪者、自定義監(jiān)控對(duì)象...
采集目標(biāo):監(jiān)控項(xiàng)(k:v)纵苛,指標(biāo)數(shù)據(jù)(metrics data)
比如: load average: 0.00, 0.02, 0.00, 一般超過5就會(huì)很慢了, 需要定義閾值5
1.2.2 數(shù)據(jù)存儲(chǔ)
監(jiān)控?cái)?shù)據(jù)存儲(chǔ)系統(tǒng)
SQL: MySQL/MariaDB(Zabbix)
NoSQL:Redis(Open-falcon)
rrd: Round Robin Database(Cacti)
1.2.3 數(shù)據(jù)類型
歷史數(shù)據(jù): 每個(gè)監(jiān)控項(xiàng)采集到的每個(gè)監(jiān)控值
趨勢(shì)數(shù)據(jù): 趨勢(shì)表里主要保留某個(gè)監(jiān)控項(xiàng)一個(gè)小時(shí)內(nèi)歷史數(shù)據(jù)的最大值、最小值和平均值以及該監(jiān)控項(xiàng)一個(gè)小時(shí)內(nèi)所采集到的數(shù)據(jù)個(gè)數(shù)言津。
1.2.4 閾值
可按照預(yù)定義的閾值等級(jí)實(shí)現(xiàn)分層報(bào)警
1.2.5 告警機(jī)制
郵件,短信,微信,語音
故障自治愈: 比如java內(nèi)存溢出, 可以自動(dòng)重啟java服務(wù)
如果日志文件導(dǎo)致磁盤空間占滿, 不能直接rm, 因?yàn)闊o法立即釋放空間, 需要用echo > 或者 >, 或者cat /dev/null將文件內(nèi)容清空, 然后再刪除
1.3 Zabbix核心任務(wù)
1.3.1 數(shù)據(jù)采集
數(shù)據(jù)采集方式:zabbix-server入篮,zabbix-proxy硬纤,zabbix-agent
Agentless:SNMP,Telnet,ssh, IPMI, JMX
Agent:zabbix agent
1.3.2 數(shù)據(jù)存儲(chǔ)
zabbix database
1.3.3 數(shù)據(jù)展示
zabbix web
graph -> screen -> slideshow(將多個(gè)screen以幻燈片的方式進(jìn)行輪流展示)
案例: 如果需要查看大量的歷史數(shù)據(jù), 可以考慮再裝一個(gè)zabbix web, 并且安裝mysql從庫, 之后, 如果需要查看大量的歷史數(shù)據(jù), 可以從單獨(dú)的web去查看, 此時(shí)會(huì)從從庫去調(diào)數(shù)據(jù), 因?yàn)閺膸於际菑闹鲙焱降臄?shù)據(jù), 所以數(shù)據(jù)是沒問題的. 這樣會(huì)緩解主庫的壓力
grafana
以zabbix為數(shù)據(jù)源展示更絢麗的界面
grafana會(huì)通過zabbix web獲取配置信息, 監(jiān)控項(xiàng), 然后去數(shù)據(jù)庫拿取監(jiān)控?cái)?shù)據(jù), 顯示在界面
1.3.4 告警通知
host (host groups) <- templates #從模板繼承告警配置
host -> items -> triggers -> action (條件-conditions, 操作-operations) #自定義告警配置
1.4 集中式監(jiān)控 vs 分布式監(jiān)控
- 集中式監(jiān)控: 所有工作都由同一個(gè)服務(wù)器做完成, 包括信息收集和展示. 無法支持規(guī)模較大的架構(gòu)
- 分布式監(jiān)控: 服務(wù)器端負(fù)責(zé)系統(tǒng)配置, 數(shù)據(jù)寫入和展示, agent負(fù)責(zé)在被監(jiān)控服務(wù)器上收集數(shù)據(jù), 將數(shù)據(jù)發(fā)給proxy代理, 由proxy再把數(shù)據(jù)再發(fā)給server. 通過代理去監(jiān)控服務(wù)器, 代理把數(shù)據(jù)上傳到server, server把監(jiān)控?cái)?shù)據(jù)寫入MySQL.
運(yùn)維人員通過訪問web界面連接到server析珊,如果要查看某個(gè)服務(wù)器的監(jiān)控項(xiàng)有哪些, server會(huì)去查MySQL拿到被監(jiān)控的數(shù)據(jù)項(xiàng), 然后web再連接到MySQL根據(jù)監(jiān)控項(xiàng)去查數(shù)據(jù)
zabbix server和zabbix agent之間通信靠的是zabbix協(xié)議, 默認(rèn)是明文
2 Zabbix規(guī)劃及部署
部署環(huán)境:
Ubuntu 1804
Zabbix-Server 10.0.0.19
Zabbix-主動(dòng)代理 10.0.0.29
Zabbix-被動(dòng)代理 10.0.0.39
MySQL-Master 10.0.0.49
MySQL-Slave 10.0.0.59
WebSrv-1 10.0.0.69
WebSrv-2 10.0.0.79
最小化系統(tǒng), 安裝常用包
apt update
apt -y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip
2.1 apt 安裝 Zabbix v4.0
zabbix-主動(dòng)代理主機(jī)上安裝zabbix, 10.0.0.29
mysql-slave主機(jī)上安裝mysql, 10.0.0.59
主動(dòng)代理上, apt安裝zabbix
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
dpkg -c zabbix-release_4.0-3+bionic_all.deb
drwxr-xr-x root/root 0 2019-07-31 00:34 ./
drwxr-xr-x root/root 0 2019-07-31 00:34 ./etc/
drwxr-xr-x root/root 0 2019-07-31 00:34 ./etc/apt/
drwxr-xr-x root/root 0 2019-07-31 00:34 ./etc/apt/sources.list.d/
-rw-r--r-- root/root 118 2019-07-31 00:34 ./etc/apt/sources.list.d/zabbix.list #把源修改為阿里云
dpkg -i zabbix-release_4.0-3+bionic_all.deb
vim /etc/apt/sources.list.d/zabbix.list
deb https://mirrors.aliyun.com/zabbix/zabbix/4.0/ubuntu bionic main
deb-src https://mirrors.aliyun.com/zabbix/zabbix/4.0/ubuntu bionic main
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent -y
# server安裝時(shí)需要指定數(shù)據(jù)庫類型, 我們使用mysql
mysql-slave上部署mysql
apt update
root@mysql-slave:~# apt -y install mysql-server
默認(rèn)Ubuntu的MySQL監(jiān)聽在127地址, 如果Zabbix-Server和MySQL在同一個(gè)主機(jī)可以, 如果是不同主機(jī), 那么要修改MySQL監(jiān)聽端口
root@mysql-slave:~# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
root@mysql-slave:~# vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1 --> 0.0.0.0
root@mysql-slave:~# systemctl restart mysql
root@mysql-slave:~# systemctl enable --now mysql
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mysql
root@mysql-slave:~# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 80 0.0.0.0:3306 0.0.0.0:*
創(chuàng)建zabbix數(shù)據(jù)庫并授權(quán)
root@mysql-slave:~# mysql
mysql> create database zabbix_server_apt character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec) #zabbix_server_apt表示用apt安裝的zabbix
mysql> grant all on zabbix_server_apt.* to zabbix@"10.0.0.%" identified by 'zabbix';
Query OK, 0 rows affected, 1 warning (0.00 sec)
在主動(dòng)代理上測(cè)試MySQL連接
root@zabbix-proxy-active:~# mysql -uzabbix -h10.0.0.59 -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| zabbix_server_apt |
+--------------------+
2 rows in set (0.01 sec)
編輯zabbix-server端配置文件
root@zabbix-proxy-active:~# vim /etc/zabbix/zabbix_server.conf
# DBHost=localhost --> DBHost=10.0.0.59
DBName=zabbix --> DBName=zabbix_server_apt
DBUser=zabbix #默認(rèn)用戶zabbix, 可以根據(jù)數(shù)據(jù)庫授權(quán)時(shí)的配置自定義修改
# DBPassword= --> DBPassword=zabbix #默認(rèn)為空, 可以根據(jù)數(shù)據(jù)庫授權(quán)時(shí)的配置自定義修改
為Zabbix前端配置PHP, 編輯配置文件 /etc/zabbix/apache.conf
<IfModule mod_php5.c>
php_value date.timezone Asia/Shanghai
</IfModule>
<IfModule mod_php7.c>
php_value date.timezone Asia/Shanghai
導(dǎo)入初始架構(gòu)和數(shù)據(jù), 需要先導(dǎo)入sql文件, 再啟動(dòng)zabbix
root@zabbix-proxy-active:~# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix -h10.0.0.59 zabbix_server_apt (zabbix庫名)
# yum/apt和源碼安裝zabbix, 使用的代入腳本不同
啟動(dòng)Zabbix server和agent進(jìn)程敢会,并為它們?cè)O(shè)置開機(jī)自啟
root@zabbix-proxy-active:~# systemctl restart zabbix-server zabbix-agent apache2
root@zabbix-proxy-active:~# systemctl enable --now zabbix-server zabbix-agent apache2
Synchronizing state of zabbix-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-server
Synchronizing state of zabbix-agent.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-agent
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
驗(yàn)證監(jiān)聽端口
初始化zabbix
訪問:zabbix_ip/zabbix
檢查php配置
yum和apt安裝的zabbix, 會(huì)自動(dòng)配置php, 如果是源碼安裝, 還要單獨(dú)配置php
給zabbix-web配置數(shù)據(jù)庫
在zabbix-web添加配置后, web會(huì)把配置寫到數(shù)據(jù)庫, 因此要告訴web, 數(shù)據(jù)庫的信息
給zabbix-web配置zabbix服務(wù)器信息
zabbix-web可以和server配置在不同主機(jī), 因此需要指定server的地址
之后驗(yàn)證配置, 完成, 登錄即可
初始化zabbix-web后, 會(huì)生成配置文件, 保存配置信息, 如果初始化時(shí)信息填錯(cuò), 后期可以修改配置文件即可
root@zabbix-proxy-active:~# vim /usr/share/zabbix/conf/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '10.0.0.59';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix_server_apt';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = '10.0.0.29';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Zabbix Server';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
zabbix默認(rèn)用戶是Admin, 默認(rèn)密碼zabbix
驗(yàn)證Zabbix Server is running
默認(rèn)zabbix會(huì)監(jiān)控自己, 因此, 可以看到本地產(chǎn)生的監(jiān)控信息
2.2 源碼安裝 zabbix v4.0
Zabbix源碼包可以用來裝server,agent和proxy, 具體編譯參數(shù)不同
zabbix-server主機(jī)上安裝zabbix server, 10.0.0.19
mysql-master主機(jī)上安裝mysql, 10.0.0.49
- 兩臺(tái)主機(jī)分別安裝最小化依賴包
apt update
apt -y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip
- mysql-master上安裝mysql
apt -y install mysql-server
vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1 --> 0.0.0.0
systemctl restart mysql
systemctl enable --now mysql
- zabbix-server主機(jī)上, 將zabbix源碼包解壓
tar xvf zabbix-4.0.27.tar.gz -C /usr/local/src
- zabbix-server創(chuàng)建zabbix用戶
useradd zabbix
- mysql-master上準(zhǔn)備zabbix數(shù)據(jù)庫
create database zabbix_server character set utf8 collate utf8_bin;
grant all privileges on zabbix_server.* to zabbix@"10.0.0.%" identified by 'zabbix';
zabbix-server上測(cè)試數(shù)據(jù)庫連接
root@zabbix-server:~# apt -y install mysql-client
root@zabbix-server:~# mysql -uzabbix -pzabbix -h 10.0.0.49
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| zabbix_server |
+--------------------+
2 rows in set (0.00 sec)
- 編譯zabbix server和zabbix agent
apt-get install apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapache2-mod-php7.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 libssh2-1 libtiff5 libwebp6 libxpm4 php-bcmath php-common php-gd php-ldap php-mbstring php-mysql php-xml php7.2-bcmath php7.2-cli php7.2-common php7.2-gd php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml snmpd ssl-cert ttf-dejavu-core libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev openjdk-8-jdk curl libcurl4-openssl-dev -y
# 這里使用openjdk-8, 并且apt安裝apache2, 因?yàn)閦abbix 4.0要依賴于apache
cd /usr/local/src/zabbix-4.0.27/
./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
# --enable-server: 安裝zabbix server
# --enable-agent: server上也要安裝agent, 來監(jiān)控server自身
make install
root@zabbix-server:/usr/local/src/zabbix-4.0.27# ll /apps/zabbix_server/
total 28
drwxr-xr-x 7 root root 4096 Dec 8 17:17 ./
drwxr-xr-x 3 root root 4096 Dec 8 17:16 ../
drwxr-xr-x 2 root root 4096 Dec 8 17:16 bin/
drwxr-xr-x 4 root root 4096 Dec 8 17:17 etc/
drwxr-xr-x 3 root root 4096 Dec 8 17:16 lib/
drwxr-xr-x 3 root root 4096 Dec 8 17:17 sbin/
drwxr-xr-x 4 root root 4096 Dec 8 17:17 share/
root@zabbix-server:/usr/local/src/zabbix-4.0.27# ls database/mysql/
data.sql images.sql Makefile Makefile.am Makefile.in schema.sql
- 從zabbix-server主機(jī)上導(dǎo)入數(shù)據(jù)庫
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mysql -uzabbix -pzabbix -h10.0.0.49 zabbix_server < database/mysql/schema.sql #如果是部署zabbix-proxy, 那么只需要導(dǎo)入schema.sql, 剩下的兩個(gè)文件無需導(dǎo)入
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mysql -uzabbix -pzabbix -h10.0.0.49 zabbix_server < database/mysql/images.sql
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mysql -uzabbix -pzabbix -h10.0.0.49 zabbix_server < database/mysql/data.sql
- 編輯zabbix server配置文件
vim /apps/zabbix_server/etc/zabbix_server.conf
DBHost=10.0.0.49
DBName=zabbix_server
DBPassword=zabbix
- 配置zabbix web界面
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mkdir /var/www/html/zabbix
root@zabbix-server:/usr/local/src/zabbix-4.0.27# cd frontends/php/
root@zabbix-server:/usr/local/src/zabbix-4.0.27/frontends/php# cp -a . /var/www/html/zabbix
-
測(cè)試zabbix訪問
- 解決報(bào)錯(cuò)
vim /etc/php/7.2/apache2/php.ini
post_max_size = 16M
vim /etc/php/7.2/apache2/php.ini
max_execution_time = 300
vim /etc/php/7.2/apache2/php.ini
max_input_time = 300
vim /etc/php/7.2/apache2/php.ini
date.timezone = Asia/Shanghai
systemctl restart apache2
刷新頁面, 驗(yàn)證報(bào)錯(cuò)消失
-
配置zabbix
- 準(zhǔn)備php配置文件
apt安裝的zabbix, 會(huì)在配置zabbix后, 生成php配置文件, 并且保存到zabbix目錄里, 編譯安裝需要手動(dòng)添加, 或者修改源碼包提供的模板文件
點(diǎn)擊Download the configuration file, 下載php配置文件, 并保存的指定路徑
root@zabbix-server:/var/www/html/zabbix/conf# cat zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '10.0.0.49';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix_server';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = '10.0.0.19';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Zabbix Server';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
刷新頁面, 即可顯示成功
- 啟動(dòng)zabbix server 端口10051
登錄到zabbix后, 會(huì)顯示zabbix server未啟動(dòng), 因?yàn)榫幾g安裝的zabbix是不會(huì)自動(dòng)啟動(dòng)zabbix server的
啟動(dòng)方法1: 直接使用zabbix命令
缺點(diǎn): 后期關(guān)閉只能通過kill進(jìn)程實(shí)現(xiàn)
/apps/zabbix_server/sbin/zabbix_server -c /apps/zabbix_server/etc/zabbix_server.conf
root@zabbix-server:/var/www/html/zabbix/conf# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:10051 #驗(yàn)證10051端口開啟 0.0.0.0:*
刷新頁面, 驗(yàn)證啟動(dòng)成功
啟動(dòng)方法2: 利用service文件
先把二進(jìn)制啟動(dòng)的zabbix server進(jìn)程關(guān)閉
pkill zabbix_server
ps aux | grep zabbix
root 39195 0.0 0.1 14436 1048 pts/0 S+ 18:31 0:00 grep --color=auto zabbix
準(zhǔn)備service文件
root@zabbix-server:~# vim /lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server After=syslog.target After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix_server/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
chown -R zabbix.zabbix /apps/zabbix_server/
啟動(dòng)zabbix server
systemctl daemon-reload
systemctl restart zabbix-server
systemctl enable zabbix-server
驗(yàn)證zabbix server啟動(dòng)成功
LISTEN 0 128 0.0.0.0:10051 0.0.0.0:*
- 啟動(dòng)zabbix agent端口10050
此時(shí), 查看zabbix Host, 可以看到ZMX是連接失敗的, 因?yàn)檫€沒有啟動(dòng)agent
準(zhǔn)備agent service文件
vim /etc/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=apps/zabbix_server/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
root@zabbix-server:~# systemctl daemon-reload
root@zabbix-server:~# systemctl restart zabbix-agent
root@zabbix-server:~# systemctl enable zabbix-agent
root@zabbix-server:~# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 64 0.0.0.0:2049 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10050 #10050端口啟動(dòng)成功 0.0.0.0:*
LISTEN 0 128 0.0.0.0:10051 0.0.0.0:*
刷新頁面, 驗(yàn)證
2.3 配置中文界面
安裝并設(shè)置中文簡(jiǎn)體語言環(huán)境
apt-get install language-pack-zh*
vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
LANG="zh_CN.UTF-8"
重新設(shè)備本地配置
dpkg-reconfigure locales
重啟apache2
systemctl restart apache2
刷新頁面, 設(shè)置中文
2.4 監(jiān)控項(xiàng)與亂碼
2.4.1圖形亂碼
配置了中文界面后, web會(huì)顯示為中文, 但是Ubuntu系統(tǒng)本身是沒有相關(guān)字體支持的, 因此需要相關(guān)字體支持才能顯示
2.4.2 上傳字體文件
在Windows的C:\Windows\Fonts下, 找一個(gè)自己喜歡的中文字體, 拷貝的Ubuntu上
如果是編譯安裝的Zabbix, 需要把字體上傳到/var/www/html/zabbix/assets/fonts目錄下
如果是apt/yum安裝的Zabbix, 需要把字體上傳到/usr/share/zabbix/assets/fonts
具體上傳的目錄, 是在配置文件中定義
apt/yum查看: /usr/share/zabbix/include/defines.inc.php
源碼編譯查看: /var/www/html/zabbix/include/defines.inc.php
這里演示在apt安裝Zabbix下的操作
- 將字體文件拷貝到/usr/share/zabbix/assets/fonts
ls /usr/share/zabbix/assets/fonts
graphfont.ttf simkai.ttf
# graphfront.ttf是默認(rèn)的字體文件
- 修改/usr/share/zabbix/include/defines.inc.php文件的72和113行, 修改字體文件名為simkai
vim /usr/share/zabbix/include/defines.inc.php
# 72行 define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
# 113行 define('ZBX_FONT_NAME', 'simkai');
- 保存文件, 直接刷新頁面
2.5 Zabbix配置文件詳解
監(jiān)聽端口
# ListenPort=10051
# zabbix server監(jiān)聽端口, 默認(rèn)10051, zabbix agent監(jiān)聽端口默認(rèn)10050, java gateway端口默認(rèn)10052
zabbix服務(wù)器與遠(yuǎn)端服務(wù)器通信的源地址
# SourceIP= #多IP地址情況下,與其他服務(wù)器通信使用的源IP地址; 只適用于zabbix server有多個(gè)網(wǎng)卡情況下, 單網(wǎng)卡時(shí)不用指定
Zabbix日志類型
# system - syslog #使用syslog, /var/log/syslog
# file - file specified with LogFile parameter #編譯安裝的日志存放在LogFile=/tmp/zabbix_server.log, 如果是apt安裝的zabbix server, 日志存放在/var/log/zabbix目錄里
# console - standard output #容器中可以使用標(biāo)準(zhǔn)輸出, 把日志顯示到標(biāo)準(zhǔn)輸出上
指定日志文件大小
# LogFileSize=1 #指定日志滾動(dòng)寫入大小陷谱,當(dāng)達(dá)到指定大小時(shí),會(huì)刪除舊日志重新從頭寫入新日志, 以M為單位, 默認(rèn)無限制. Zabbix本地磁盤空間不大時(shí), 可以設(shè)置
日志顯示級(jí)別
# Specifies debug level:
# 0 - basic information about starting and stopping of Zabbix processes
# 1 - critical information
# 2 - error information
# 3 - warnings #默認(rèn)warnings
# 4 - for debugging (produces lots of information) #排錯(cuò)時(shí)可以用4, 但是會(huì)占用大量磁盤空間
# 5 - extended debugging (produces even more information)
pid路徑
# PidFile=/tmp/zabbix_server.pid
保留歷史數(shù)據(jù)
# HistoryStorageURL= #配合elasticsearch服務(wù)瑟蜈,保存zabbix歷史數(shù)據(jù)到ES里面烟逊,優(yōu)化zabbix性能,新版本zabbix才支持, zabbix查歷史數(shù)據(jù)時(shí)可以在ES查, 效率比使用MySQL高
zabbix server預(yù)啟動(dòng)實(shí)例數(shù)量, pollers就是zabbix監(jiān)控?cái)?shù)據(jù)的收集器; zabbix默認(rèn)工作在被動(dòng)模式下, zabbix server會(huì)通過pollers進(jìn)程與被監(jiān)控節(jié)點(diǎn)建立連接收集數(shù)據(jù), 因此根據(jù)被管理節(jié)點(diǎn)的數(shù)量不同, 要調(diào)整pollers進(jìn)程數(shù)量, 一般是每個(gè)pollers進(jìn)程會(huì)平均收集若干個(gè)被管理節(jié)點(diǎn)的數(shù)據(jù); 在主動(dòng)模式下, 無需pollers
# StartPollers=5 #預(yù)啟動(dòng)多少個(gè)實(shí)例數(shù)量, zabbix中, 一個(gè)實(shí)例就是一個(gè)zabbix server進(jìn)程, 默認(rèn)5, zabbix主進(jìn)程只有一個(gè), 其余都是主進(jìn)程的子進(jìn)程
# 這里修改pollers為10
StartPollers=10
zabbix 39970 0.0 0.9 223008 9728 ? S 18:54 0:02 /apps/zabbix_server/sbin/zabbix_server: poller #1 [got 0 values in 0.000011 sec, idle 1 sec]
zabbix 39971 0.0 0.9 223008 9728 ? S 18:54 0:02 /apps/zabbix_server/sbin/zabbix_server: poller #2 [got 0 values in 0.000011 sec, idle 1 sec]
zabbix 39972 0.0 0.9 223012 9728 ? S 18:54 0:02 /apps/zabbix_server/sbin/zabbix_server: poller #3 [got 2 values in 0.000097 sec, idle 1 sec]
zabbix 39973 0.0 1.0 223132 10592 ? S 18:54 0:02 /apps/zabbix_server/sbin/zabbix_server: poller #4 [got 0 values in 0.000038 sec, idle 1 sec]
zabbix 39974 0.0 0.9 223156 9728 ? S 18:54 0:02 /apps/zabbix_server/sbin/zabbix_server: poller #5 [got 0 values in 0.000009 sec, idle 1 sec]
預(yù)啟動(dòng)進(jìn)程, 處理zabbix agent數(shù)據(jù), 根據(jù)agent節(jié)點(diǎn)數(shù)量進(jìn)行調(diào)整
# StartPreprocessors=3 #預(yù)啟動(dòng)多少個(gè)進(jìn)程用于處理zabbix agent數(shù)據(jù), 默認(rèn)為3個(gè). 一般要躲開
# 這里開5個(gè)
不可達(dá)主機(jī)的輪詢進(jìn)程的初始實(shí)例啟動(dòng)數(shù)量, 被管理節(jié)宕機(jī)后, 由該進(jìn)程對(duì)主機(jī)進(jìn)行探測(cè), 觀察主機(jī)是否恢復(fù). 這些進(jìn)程就是StartPollersUnreachable
# StartPollersUnreachable=1 #不可達(dá)主機(jī)的輪詢進(jìn)程的初始實(shí)例啟動(dòng)數(shù)量, 一般開啟2-3個(gè)即可. 如果不可達(dá)主機(jī)過多, 就說明網(wǎng)絡(luò)或者服務(wù)出問題了
觸發(fā)器進(jìn)程
# StartTrappers=5 #預(yù)啟動(dòng)的Trappers進(jìn)程數(shù)量, 用于做報(bào)警, 如果報(bào)警過多需要調(diào)多
# StartPingers=1 #ICMP ping進(jìn)程的初始實(shí)例數(shù)量, 監(jiān)控網(wǎng)絡(luò)設(shè)備時(shí), 用ping
# StartDiscoverers=1 #自動(dòng)發(fā)現(xiàn)主機(jī)的進(jìn)程數(shù)量; 配置zabbix server對(duì)某個(gè)網(wǎng)段進(jìn)行自動(dòng)發(fā)現(xiàn), 如果主機(jī)安裝了agent, 那么會(huì)自動(dòng)把主機(jī)加入到監(jiān)控列表
# StartHTTPPollers=1 #http 進(jìn)程數(shù)量, 根據(jù)訪問zabbix頁面的人數(shù)進(jìn)行調(diào)整
計(jì)時(shí)器進(jìn)程數(shù)量
# StartTimers=1 #計(jì)時(shí)器實(shí)例數(shù)量铺根,計(jì)時(shí)器用于計(jì)算問題的發(fā)生時(shí)間和步驟同步等; zabbix內(nèi)部有很多和時(shí)間相關(guān)的設(shè)置, 比如發(fā)送報(bào)警. 報(bào)警一旦觸發(fā), 會(huì)按照設(shè)置的間隔時(shí)間去發(fā)送報(bào)警信息, 間隔時(shí)間的計(jì)算由zabbix計(jì)時(shí)器進(jìn)程去計(jì)算處理
# StartEscalators=1 #escalators進(jìn)程的初始實(shí)例數(shù)量宪躯,用于處理動(dòng)作中的自動(dòng)步驟的進(jìn)程的數(shù)量; 發(fā)送告警前, 會(huì)先執(zhí)行預(yù)定義動(dòng)作, 比如連續(xù)三次探測(cè)失敗, 才會(huì)觸發(fā)報(bào)警; 或者定義告警發(fā)送幾次后如果問題還存在, 那么就把告警信息發(fā)送給其他人
java網(wǎng)關(guān)相關(guān)配置
JavaGateway= #javagateway服務(wù)器地址,java pollers必須設(shè)置
JavaGatewayPort=10052 #javagateway端口
StartJavaPollers=20 #java輪訓(xùn)實(shí)例預(yù)啟動(dòng)數(shù)量, 根據(jù)監(jiān)控的java服務(wù)器數(shù)量進(jìn)行調(diào)整
監(jiān)控vmware
# StartVMwareCollectors=0 #用于設(shè)置監(jiān)控VMWARE Esxi主機(jī)實(shí)例時(shí)使用位迂,若為0則不啟用访雪,若要監(jiān)控ESXI主機(jī)详瑞,此值最少為1,根據(jù)監(jiān)控ESXI數(shù)量設(shè)置對(duì)應(yīng)數(shù)值
zabbix server監(jiān)聽地址
# ListenIP=0.0.0.0 #監(jiān)聽地址, 默認(rèn)0.0.0.0
agent的歷史數(shù)據(jù)刪除
# HousekeepingFrequency=1 #zabbix對(duì)于agent的每個(gè)監(jiān)控項(xiàng)都會(huì)保存歷史數(shù)據(jù), 并且可以自定義保存時(shí)長(zhǎng), 到期會(huì)自動(dòng)刪除, 該頻率默認(rèn)為1小時(shí), 也就是zabbix會(huì)每隔一個(gè)小時(shí)查看有沒有過期的歷史數(shù)據(jù), 有就刪除, 一般可以每天清理一次, 防止歷史數(shù)據(jù)過多, 占用磁盤空間
# MaxHousekeeperDelete=5000 #每次最多刪除歷史數(shù)據(jù)的行數(shù), 默認(rèn)是刪除5000行, 但是由于監(jiān)控項(xiàng)很多, 可以設(shè)置為最大值1000000行
# CacheSize=8M #配置信息緩存大小, 保存zabbix配置信息, 所有加入到zabbix的監(jiān)控項(xiàng)都屬于配置信息, 因此該選項(xiàng)值要調(diào)大, 根據(jù)監(jiān)控項(xiàng)數(shù)量調(diào)整, 比如2G,4G
# 這里改為128M
CacheSize=128M
# CacheUpdateFrequency=60 #Zabbix更新緩存數(shù)據(jù)的頻率臣缀,單位為秒坝橡,范圍是1-3600, zabbix每間隔多久, 更新一次配置信息, 可以配置為3,或5分鐘更新一次
# StartDBSyncers=4 #zabbix和數(shù)據(jù)庫同步數(shù)據(jù)的進(jìn)程數(shù)量, zabbix agent和proxy發(fā)給zabbix server的數(shù)據(jù), 最終都是通過zabbix server寫入到數(shù)據(jù)庫, 因此, 啟用多少個(gè)DB同步進(jìn)程, 就會(huì)影響數(shù)據(jù)同步, 建議調(diào)大, 8|16等
# 這里改為8
StartDBSyncers=8
# HistoryCacheSize=16M #歷史數(shù)據(jù)的緩存大小, 具體根據(jù)服務(wù)器的內(nèi)存進(jìn)行調(diào)整
# 這里改為128M
HistoryCacheSize=128M
# HistoryIndexCacheSize=4M #歷史數(shù)據(jù)索引緩存的大小, 根據(jù)zabbix server服務(wù)器的內(nèi)存大小進(jìn)行調(diào)整; 查看zabbix web的圖形信息時(shí), 會(huì)使用歷史或者趨勢(shì)數(shù)據(jù), 可以將這些數(shù)據(jù)放入緩存, 盡快效率, 可以設(shè)為2G
# 這里改為32M
HistoryIndexCacheSize=32M
# TrendCacheSize=4M #用于設(shè)置劃分多少系統(tǒng)共享內(nèi)存用于存儲(chǔ)計(jì)算出來的趨勢(shì)數(shù)據(jù),此參數(shù)值從一定程度上可影響數(shù)據(jù)庫讀壓力精置,范圍是128K-2G. 這個(gè)就是趨勢(shì)數(shù)據(jù)的緩存大小
# 這里改為32M
# ValueCacheSize=8M #歷史值緩存的大小计寇,就是監(jiān)控?cái)?shù)據(jù)的值, 用于緩存歷史數(shù)據(jù)請(qǐng)求的共享內(nèi)存大小
# 這里改為32M
ValueCacheSize=32M
Timeout=4 #agent采集數(shù)據(jù), 返回?cái)?shù)據(jù)等待超時(shí)時(shí)間, 默認(rèn)4秒, 也就是說zabbix server給agent下發(fā)收集數(shù)據(jù)指令后, 會(huì)等待4秒, 如果agent在4秒內(nèi)沒有返回?cái)?shù)據(jù), zabbix server會(huì)嘗試一定次數(shù)后,認(rèn)為服務(wù)器宕機(jī), 一般建議調(diào)大, 設(shè)為最長(zhǎng)30秒, 避免由于網(wǎng)絡(luò)延遲或者服務(wù)本身響應(yīng)的問題, 導(dǎo)致服務(wù)本身沒問題, 但是agent響應(yīng)超時(shí), 被zabbix server誤認(rèn)為服務(wù)不可用
# TrapperTimeout=300 #觸發(fā)器處理新數(shù)據(jù)的最長(zhǎng)時(shí)間,單位是秒, 可以指定為1分鐘, 觸發(fā)器超時(shí)時(shí)間不宜過長(zhǎng)
# UnreachablePeriod=45 #當(dāng)主機(jī)不可達(dá)多少秒后脂倦,設(shè)置為主機(jī)不可用番宁,單位是秒,范圍是1-3600, 建議時(shí)間調(diào)大, 比如60秒
# UnavailableDelay=60 #當(dāng)主機(jī)不可用了赖阻,多久檢查一次該主機(jī)的可用性蝶押,單位為秒,范圍是1-3600, 時(shí)間不要太短, 否則導(dǎo)致檢查頻率過大, zabbix負(fù)載增高
# AlertScriptsPath=${datadir}/zabbix/alertscripts #監(jiān)控報(bào)警腳本路徑,取決于編譯時(shí)候的datadir參數(shù). 也可以自定義, 只要修改路徑即可
# ExternalScripts=${datadir}/zabbix/externalscripts #自定義腳本存儲(chǔ)路徑, 執(zhí)行操作, 一般很少用
# FpingLocation=/usr/sbin/fping #fping命令的位置, 需要手動(dòng)確定fping位置
ping和fping都可以使用, 不過ping默認(rèn)會(huì)持續(xù)ping ,fping會(huì)直接返回對(duì)方是否可達(dá), 返回alive或者unreachable. 一般對(duì)于網(wǎng)絡(luò)設(shè)備, 可以使用fping
# LogSlowQueries=0 慢日志時(shí)間(以毫秒為單位),僅當(dāng)DebugLevel設(shè)置為3,4或5時(shí)才可用,0 - 不記錄慢查詢,范圍是1-3600000. 用于記錄zabbix查數(shù)據(jù)時(shí), 如果返回時(shí)間過長(zhǎng), 可以記錄下來
# StartProxyPollers=1 #啟用多少子進(jìn)程與proxy代理端通信火欧,若代理較多可考慮加大此數(shù)值播聪,范圍是0-250, 進(jìn)程數(shù)要大于等于代理數(shù)量的值; 用于被動(dòng)模式
如果進(jìn)程數(shù)量, 少于代理數(shù)量, 那么server需要依次從proxy申請(qǐng)數(shù)據(jù), 會(huì)有等待排隊(duì)現(xiàn)象
# ProxyConfigFrequency=3600 #proxy被動(dòng)模式下,server多少秒同步配置文件至proxy布隔,該參數(shù)僅用于被動(dòng)模式下的代理离陶,范圍是1-3600*24*7;
# ProxyDataFrequency=1 #被動(dòng)模式下,zabbix server間隔多少秒向proxy請(qǐng)求歷史數(shù)據(jù)
該頻率就是zabbix server每隔多少秒向proxy收集一次數(shù)據(jù), 如果想迅速獲取數(shù)據(jù), 那么間隔時(shí)間不宜過長(zhǎng), 防止添加服務(wù)器前, zabbix剛從proxy獲取了一次數(shù)據(jù), 那么要等一個(gè)周期才能獲取到新添加節(jié)點(diǎn)的數(shù)據(jù); 獲取數(shù)據(jù)和同步配置信息的間隔一般設(shè)定為一樣, 比如都是60秒一次
# Include=/usr/local/etc/zabbix_server.general.conf #導(dǎo)入其他目錄的配置文件, 一般是自定義監(jiān)控項(xiàng), 通過自定義腳本去獲取監(jiān)控?cái)?shù)據(jù)
# Include=/usr/local/etc/zabbix_server.conf.d/
# Include=/usr/local/etc/zabbix_server.conf.d/*.conf
修改配置后, 重啟zabbix-server
systemctl restart zabbix-server
- 補(bǔ)充:
監(jiān)控查詢很慢時(shí), 可以查看是否增加了歷史數(shù)據(jù)和趨勢(shì)數(shù)據(jù)緩存大小
自動(dòng)發(fā)現(xiàn)一般也不要用, 因?yàn)闀?huì)增加zabbix的負(fù)載, 導(dǎo)致數(shù)據(jù)延遲, 可以通過api進(jìn)行添加