分布式监控系统zabbix
介绍
安装
规划
主机类型 | IP地址 |
---|---|
zabbix server | 10.0.0.81 |
zabbix active 主动代理 | 10.0.0.82 |
MySQL Master | 10.0.0.83 |
MySQL Slave | 10.0.0.84 |
Web Server1 | 10.0.0.85 |
Web Tomcat | 10.0.0.86 |
环境
OS Version
root@ubuntu:~#cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
数据库版本
mysql> select version();
+-------------------------+
| version() |
+-------------------------+
| 5.7.38-0ubuntu0.18.04.1 |
+-------------------------+
1 row in set (0.00 sec)
zabbix版本
zabbi-4.0x
apt安装(单节点部署)
安装依赖
root@zabbix-server:~#apt install iproute2 ntpdate tcpdump telnet traceroutenfs-kernel-server nfs-commonlrzsz tree openssllibssl-devlibpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip -y
安装zabbix
root@zabbix-server:~#hostnamectl set-hostname zabbix-server
root@zabbix-server:~#wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
root@zabbix-server:~#dpkg -i zabbix-release_4.0-3+bionic_all.deb
root@zabbix-server:~#apt update
root@zabbix-server:~#apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent -y
安装mysql
root@zabbix-server:~#apt install mysql-server mysql-client -y
root@zabbix-server:~#sed -in 's@127.0.0.1@0.0.0.0@g' /etc/mysql/mysql.conf.d/mysqld.cnf
创建数据库账号
mysql> create database zabbix_server character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix_server.* to zabbix@"10.0.0.%" identified by 'zabbix';
mysql> flush privileges;
初始化数据库
root@zabbix-server:~#zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz |mysql -uzabbix -pzabbix -h10.0.0.81 zabbix_server
修改PHP时区
root@zabbix-server:~#sed -n 's/[[:space:]]#[[:blank:]]php_value.*/php_value date\.timezone Asia\/Shanghai/g' /etc/zabbix/apache.conf
重启服务
root@zabbix-server:~#systemctl restart zabbix-server zabbix-agent apache2
浏览器打开10.0.0.81/zabbix/setup.php
即可
编译安装
创建zabbix用户
root@zabbix-server:~#groupadd -g 1001 zabbix && useradd -u 1001 -g 1001 zabbix -s /sbin/nologin
下载源码包
root@zabbix-server:~#wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.42.tar.gz
root@zabbix-server:~#tar xvf zabbix-4.0.42.tar.gz && cd zabbix-4.0.42
准备依赖包
root@zabbix-server:~#apt update
root@zabbix-server:~#apt install -y 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 libsnmp-dev 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 libevent-dev openjdk-8-jdk curl libcurl4-openssl-dev
预编译 编译&安装
root@zabbix-server:~#./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
make && make install
数据库初始化
root@zabbix-server:~#mysql -uzabbix -pzabbix -h10.0.0.83 zabbix_server < /usr/local/src/zabbix-4.0.42/database/mysql/schema.sql
root@zabbix-server:~#mysql -uzabbix -pzabbix -h10.0.0.83 zabbix_server < /usr/local/src/zabbix-4.0.42/database/mysql/images.sql
root@zabbix-server:~#mysql -uzabbix -pzabbix -h10.0.0.83 zabbix_server < /usr/local/src/zabbix-4.0.42/database/mysql/data.sql
编写服务文件
zabbix-server配置文件
root@zabbix-server:~#cat /etc/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
agent配置文件
root@zabbix-server:~#cat /etc/systemd/system/zabbix-agent.service
[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 start zabbix-server zabbix-agent
设置系统中文环境
root@zabbix-server:~#apt install language-pack-zh*
echo 'LANG="zh_CN.UTF-8"' >> /etc/environment
root@zabbix-server:conf#dpkg-reconfigure locales
Generating locales (this might take a while)...
en_AG.UTF-8... done
en_AU.UTF-8... done
..........
zh_TW.UTF-8... done
Generation complete.
# 选择zh_CN.UTF-8
root@zabbix-server:conf#systemctl restart apache2
验证
root@zabbix-server:~#echo $LANG
zh_CN.UTF-8
中文乱码显示解决
上传windows字体到zabbix-server
root@zabbix-server:~#cd /var/www/html/zabbix/assets/fonts
root@zabbix-server:fonts#ll
总用量 24700
drwxrwxrwx 2 zabbix zabbix 4096 7月 3 14:56 ./
drwxrwxrwx 5 zabbix zabbix 4096 6月 28 15:00 ../
-rwxrwxrwx 1 zabbix zabbix 756072 6月 28 14:59 DejaVuSans.ttf*
-rwxrwxrwx 1 zabbix zabbix 11787328 10月 15 2019 simkai.ttf*
配置字体生效
root@zabbix-server:fonts#grep simkai /var/www/html/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
define('ZBX_FONT_NAME', 'simkai');
最后在zabbix web界面设置gui字体为中文即可
mysql主从
主数据库中已经有数据,从节点是新增的。
先备份master中数据库的所有数据,导入至slave节点;
slave同步时以二进制日志文件中的POS为起点。
设置主节点server-id 开启二进制日志
root@mysql-master:~#vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id=3
log-bin
root@mysql-master:~#systemctl restart mysql
主节点创建备份专用用户
mysql> grant replication slave on *.* to repluse@'10.0.0.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
备份主数据库
root@mysql-master:~#mkdir /data
root@mysql-master:~#mysqldump -A -F --single-transaction --master-data=1 > /data/fullback_`date +%F_%T`.sql
root@mysql-master:~#ll /data/
total 4436
drwxr-xr-x 2 root root 4096 Jul 4 10:26 ./
drwxr-xr-x 24 root root 4096 Jul 4 10:26 ../
-rw-r--r-- 1 root root 4532291 Jul 4 10:26 fullback_2022-07-04_10:26:52.sql
root@mysql-master:~#scp /data/fullback_2022-07-04_10\:26\:52.sql 10.0.0.84:/data
The authenticity of host '10.0.0.84 (10.0.0.84)' can't be established.
ECDSA key fingerprint is SHA256:lBkA4tNs2yI25jkCW214EFHzE/A7YuUu5/AbTYGrjUc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.84' (ECDSA) to the list of known hosts.
root@10.0.0.84's password:
fullback_2022-07-04_10:26:52.sql 100% 4426KB 136.3MB/s 00:00
从节点
配置slave为只读
root@mysql-slave:~#vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id=4
read-only
root@mysql-slave:~#systemctl restart mysql.service
添加主节点的信息
root@mysql-slave:~#grep '^CHANGE MASTER' /data/fullback_2022-07-04_10\:26\:52.sql -n
22:CHANGE MASTER TO MASTER_LOG_FILE='mysql-master-bin.000002', MASTER_LOG_POS=154;
root@mysql-slave:~#vim /data/fullback_2022-07-04_10\:26\:52.sql +22
# 添加master节点配置
root@mysql-slave:~#grep '^CHANGE MASTER' /data/fullback_2022-07-04_10\:26\:52.sql -n
22:CHANGE MASTER TO MASTER_HOST='10.0.0.83', MASTER_USER='repluse', MASTER_PASSWORD='123456', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-master-bin.000002', MASTER_LOG_POS=154;
导入
root@mysql-slave:~#mysql < /data/fullback_2022-07-04_10\:26\:52.sql
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.83
Master_User: repluse
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-master-bin.000002
Read_Master_Log_Pos: 147524
Relay_Log_File: mysql-slave-relay-bin.000002
Relay_Log_Pos: 61998
Relay_Master_Log_File: mysql-master-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 61825
Relay_Log_Space: 147910
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 247
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 3
Master_UUID: f96ca2ee-f9f3-11ec-a98f-000c29956908
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Reading event from the relay log
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
zabbix_proxy
zabbix proxy active
编译安装zabbix_proxy
安装依赖包
root@zabbix-active:~#apt install mysql-client libmysqld-dev libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev curl libcurl4-openssl-dev -y
系统服务文件
root@zabbix-active:~#cat /lib/systemd/system/zabbix-proxy.service
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=//apps/zabbix_proxy/etc/zabbix_proxy.conf"
EnvironmentFile=-/etc/default/zabbix-proxy
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_proxy.pid
KillMode=control-group
ExecStart=/apps/zabbix_proxy/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM
RestartSec=10s
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
mysql-master主节点配置
create database zabbix_proxy_active character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy_active.* to proxy@'10.0.0.%' identified by '123456';
flush privileges;
导入数据
root@zabbix-active:~#mysql -uproxy -p123456 -h10.0.0.83 zabbix_proxy_active < /usr/local/src/zabbix-4.0.42/database/mysql/schema.sql
zabbix_proxy.conf配置
root@zabbix-active:tmp#grep "^[a-Z]" /apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=0
Server=10.0.0.81
Hostname=Zabbix-proxy-active
ListenPort=10051
LogFile=/tmp/zabbix_proxy.log
EnableRemoteCommands=1
DBHost=10.0.0.83
DBName=zabbix_proxy_active
DBUser=proxy
DBPassword=123456
DBPort=3306
ProxyLocalBuffer=720
ProxyOfflineBuffer=720
HeartbeatFrequency=60
ConfigFrequency=5
DataSenderFrequency=5
StartPollers=20
JavaGateway=10.0.0.86
JavaGatewayPort=10052
StartJavaPollers=20
CacheSize=1G
HistoryCacheSize=128M
Timeout=30
LogSlowQueries=3000
查看进程验证
root@zabbix-active:tmp#ps -ef| grep zabbix_proxy
zabbix 28724 1 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy -c //apps/zabbix_proxy/etc/zabbix_proxy.conf
zabbix 28733 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: configuration syncer [synced config 0 bytes in 0.000816 sec, idle 5 sec]
zabbix 28734 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix 28735 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: trapper #2 [processed data in 0.000000 sec, waiting for connection]
zabbix 28736 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix 28737 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix 28738 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix 28739 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: heartbeat sender [sending heartbeat message failed in 0.001995 sec, idle 60 sec]
zabbix 28740 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: data sender [sent 0 values in 0.000937 sec, idle 1 sec]
zabbix 28741 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: housekeeper [startup idle for 30 minutes]
zabbix 28742 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: http poller #1 [got 0 values in 0.001026 sec, idle 5 sec]
zabbix 28743 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: discoverer #1 [processed 0 rules in 0.004832 sec, idle 60 sec]
zabbix 28744 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: history syncer #1 [processed 0 values in 0.000009 sec, idle 1 sec]
zabbix 28745 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: history syncer #2 [processed 0 values in 0.000021 sec, idle 1 sec]
zabbix 28746 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: history syncer #3 [processed 0 values in 0.000031 sec, idle 1 sec]
zabbix 28747 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: history syncer #4 [processed 0 values in 0.000058 sec, idle 1 sec]
zabbix 28748 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: java poller #1 [got 0 values in 0.000009 sec, idle 5 sec]
zabbix 28749 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: java poller #2 [got 0 values in 0.000009 sec, idle 5 sec]
zabbix 28750 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: java poller #3 [got 0 values in 0.000004 sec, idle 5 sec]
zabbix 28751 28724 0 14:16 ? 00:00:00 /apps/zabbix_proxy/sbin/zabbix_proxy: java poller #4 [got 0 values in 0.000011 sec, idle 5 sec]
向zabbix-server中添加proxy的配置
root@zabbix-server:~#grep "^[a-Z]" /apps/zabbix_server/etc/zabbix_server.conf
ListenPort=10051
LogFile=/tmp/zabbix_server.log
DebugLevel=3
DBHost=10.0.0.83
DBName=zabbix_server
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
StartPollers=5
JavaGateway=10.0.0.86
JavaGatewayPort=10052
StartJavaPollers=20
ListenIP=0.0.0.0
Timeout=30
LogSlowQueries=3000
StartProxyPollers=20
ProxyConfigFrequency=60
ProxyDataFrequency=60