分布式监控系统zabbix

分布式监控系统zabbix

介绍

安装

规划

主机类型IP地址
zabbix server10.0.0.81
zabbix active 主动代理10.0.0.82
MySQL Master10.0.0.83
MySQL Slave10.0.0.84
Web Server110.0.0.85
Web Tomcat10.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 73 14:56 ./
drwxrwxrwx 5 zabbix zabbix     4096 628 15:00 ../
-rwxrwxrwx 1 zabbix zabbix   756072 628 14:59 DejaVuSans.ttf*
-rwxrwxrwx 1 zabbix zabbix 11787328 1015  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

配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值