实现Zabbix高可用分布式架构:打造强大的监控数据可视化平台_zabbix高可用架构

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

fea9ff32845587d19bcfca9c95211323.png

weiyigeek.top-AWS图


0x01 项目部署

1.drbd 部署配置

Step 1.根据我前面写的磁盘高可用和服务高可用进行安装heartbeat与drbd注意这里是Centos7版本的(Drbd磁盘格式化是个坑)

[root@Mzabbix/Szabbix]$usermod -G root hacluster   #设置heartbeat启动用户加入root附加组(权限)

Step 2.安装好drbd手动主从切换测试

#mariadb 修改root用户的密码并设置外部IP连接数据库
mysql> update mysql.user set password=password('System@123') where user='root';
mysql> grant all privileges on *.* to 'root'@'%' identified by "System@123" with grant option;
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
mysql> grant all privileges on zabbix_proxy.* to zabbix_proxy@'%' identified by 'zabbix';
mysql> flush privileges;

#手动切换drbd主从
[root@Mzabbix lib]# umount /var/lib/mysql/
drbdadm secondary data

[root@Szabbix lib]# drbdadm primary data
mount /dev/drbd0 /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/   #防止drbd同步发生改变
service mariadb restart

[root@Szabbix lib]$mysql -uzabbix -pzabbix   #登录成功
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+

fa347c97dac6ca00601ff50c2105cc4b.png

weiyigeek.top-drbd同步ok


2.heartbeat 部署配置

Step 1.主/备机器共用 ha 配置示例:

#vim //usr/local/heartbeat/etc/ha.d/authkeys
auth 1
1 sha1 zabbix

#vim /usr/local/heartbeat/etc/ha.d/ha.cf
#egrep -v '^#' ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 15
warntime 5
initdead 30
udpport 694
mcast enp0s3 225.0.0.255 694 1 0
auto_failback on
node Mzabbix
node Szabbix
ping 192.168.1.1


#资源文件 - 修改备份节点脚本源文件
#egrep -v '^#' /usr/local/heartbeat/etc/ha.d/haresources
Mzabbix IPaddr::192.168.1.200/24/enp0s3 drbddisk::data Filesystem::/dev/drbd0::/var/lib/mysql::ext4 mysqld zabbix
Mzabbix IPaddr::192.168.56.200/24/enp0s9

注意:(坑)需要将/etc/目录中drbddisk复制到heartbeat源码安装的目录之中:cp /etc/ha.d/resource.d/drbddisk /usr/local/heartbeat/etc/ha.d/resource.d/

Step 2.将下列的脚本加入到/usr/local/heartbeat/etc/ha.d/resource.d/之中 _mysqld 资源脚本示例:

#!/bin/bash
#mariadb启动脚本
#防止drbd同步后文件的所属人和所属组发生改变
chown -R mysql:mysql /var/lib/mysql
sleep 1
if [ $# -eq 0 ];then
        echo "Usage:mysqld [start|stop|status]"
        exit
fi
#接收参数
action=$1
case $action in
"start")
        service mariadb start
        ;;
"stop")
        service mariadb stop
        ;;
"status")
        service mariadb status
esac

Step 3.zabbix 资源脚本示例,当前建议换用systemd进行管理zabbix。

#!/bin/bash
#zabbix服务启动管理脚本
action=$1
if [ $# -eq 0 ];then
  echo "Usage:zabbix [start|stop|status]"
  exit
fi
case $action in
"start")
  systemctl start zabbix-server httpd
  ;;
"stop")
  systemctl stop zabbix-server httpd
  ;;
"status")
  systemctl status zabbix-server httpd
esac

Step 4.drbd 配置文件示例:

[root@Szabbix ha.d]# egrep -v '^#' /etc/drbd.d/global_common.conf
global {
    usage-count no;  #是否参加DRBD使用者统计,默认是参加
}
common {
    protocol C;
    startup {
        degr-wfc-timeout 60;
    }
    disk {
        on-io-error detach;
    }
    net {
        cram-hmac-alg md5; #DRBD同步时使用的验证方式和密码
        shared-secret "testdrbd";
    }
    syncer {
        rate 100M;      #主节点和备用节点同步时最大的网络速率 工作中是100M~1000M
        verify-alg crc32c; #验证算法
    }
}
resource data{
    disk {
        on-io-error detach;  #磁盘出现IO错误处理
    }
    #两台主备节点配置 (关键点)
on Mzabbix {
        device /dev/drbd0;  #drbd写设备有自己对应的分区
        disk /dev/sdb1;        #本地数据分区1
        address  192.168.56.103:7788;  #心跳/数据传输接口 (建议把这个地址设置到hosts中改成心跳线的网卡)
        meta-disk /dev/sdb2[0];  #meta data数据分区2
    }
on Szabbix {
        device /dev/drbd0;
        disk /dev/sdb1;
        address  192.168.56.102:7788;
        meta-disk /dev/sdb2[0];
    }
}

完成以上配置后执行:$chown -R root:haclient /usr/local/heartbeat/etc/ha.d/

3.Zabbix Server|Web 组件安装配置

Step 1. 按照zabbix入门学习安装与配置Zabbix-server和zabbix-web以及mariadb数据库的安装; 由于我已经安装并配置好主节点zabbix的zabbix-web,我们将一些文件进行中直接复制到从节点中改IP指向我们VIP即可;

#需要将主节点配置文件复制到从节点并进行修改
[root@Mzabbix ~]$ scp /etc/zabbix/zabbix_server.conf root@192.168.1.98:/etc/zabbix/zabbix_server.conf
[root@Mzabbix ~]# egrep -v '^#' /etc/zabbix/zabbix_server.conf
#egrep -v "^$|^#|^[[:space:]]+#" /etc/zabbix/zabbix_server.conf  推荐方式

LogFileSize=10
LogFile=/var/log/zabbix/zabbix_server.log
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix

#漂移的VIP
DBHost=192.168.1.200
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
#DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4

#预警脚本
AlertScriptsPath=/usr/lib/zabbix/alterscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
LogSlowQueries=3000

#注意权限的赋值
AllowRoot=1
User=root
StatsAllowedIP=192.168.1.0/24

Step 2.复制主中zabbix-web项目文件到从机 /usr/share/zabbix 和etc/zabbix/web中config的php配置文件到从机:(非常重要:不用重新去初始化zabbix-web)

[root@Mzabbix web]$scp /etc/zabbix/web/zabbix.conf.php root@192.168.1.98:/etc/zabbix/web/
[root@Szabbix web]$chown -R apache:apache zabbix.conf.php  #注意权限

#根据需求进行更改
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = '192.168.1.200';  //VIP
$DB['PORT']     = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = '192.168.1.200';  //从节点设置从即刻
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'zabbix.weiyigeek.top';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

1bd09b8528a9f9e2685ed8a870ab7c93.png

weiyigeek.top-zabbix.conf.php

Step 3.安装zabbix-proxy-mysql并将sql文件导入数据中::

$ yum install -y zabbix-proxy-mysql
已安装:
  zabbix-proxy-mysql.x86_64 0:4.2.1-1.el7

#安装成功后将里面proxy-数据库导入我的mysql数据库中
mysql_db:zabbix_proxy
mysql_user:zabbix_proxy
mysql_pass:zabbix

$zcat /usr/share/doc/zabbix-proxy-mysql-4.2.1/schema.sql.gz | mysql -h192.168.1.200 -u'zabbix_proxy' -p'zabbix' zabbix_porxy

47866c2c2b13cdf23b32e36e0fac160d.png

weiyigeek.top-导入成功

Step 4.利用docker-compose构建zabbix-proxy环境

#docker-compose构建配置文件结构
[root@Szabbix zabbix-proxy]# ll -R .
.:
-rw-r--r-- 1 root root 462 5月  15 15:55 docker-compose.yaml
drwxr-xr-x 3 root root  51 5月  15 15:05 etc

./etc:
drwxr-xr-x 2 root root  30 5月  15 15:03 enc
-rw-r--r-- 1 root root 123 5月  15 15:05 env_mysql
-rw-r--r-- 1 root root 205 5月  15 15:04 env_proxy

./etc/enc:
-rw-r--r-- 1 root root 65 5月  15 14:29 zabbix_proxy.psk

#允许Zabbix代理容器的卷,参考以下网址来放psk文件
https://hub.docker.com/r/zabbix/zabbix-proxy-mysql

#启动前先生成zabbix网络:
$docker network create zabbix

#docker-compose.yaml
version: "3.0"
services:
    zabbix_proxy:
        image: zabbix/zabbix-proxy-mysql:alpine-4.2.1
        container_name: zabbix_proxy
        ports:
          - "10055:10051"
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - ./etc/enc:/var/lib/zabbix/enc
        env_file:
          - ./etc/env_proxy
          - ./etc/env_mysql
        networks:
          - zabbix
        #command: ['top']

networks:
    zabbix:
        external: true

#env_mysql文件
DB_SERVER_HOST=192.168.1.200
DB_SERVER_PORT=3306
MYSQL_DATABASE=zabbix_porxy
MYSQL_USER=zabbix_proxy
MYSQL_PASSWORD=zabbix

#env_proxy文件
ZBX_SERVER_HOST=192.168.1.200
ZBX_SERVER_PORT=10051
ZBX_TLSCONNECT=psk
ZBX_TLSPSKIDENTITY=ZABBIXPROXY
ZBX_TLSPSKFILE=zabbix_proxy.psk
ZBX_HOSTNAME=ZabbixProxy
ZBX_CONFIGFREQUENCY=60
ZBX_PROXYOFFLINEBUFFER=10
ZBX_TLSCONNECT=psk
ZBX_TLSACCEPT=psk
ZBX_DATASENDERFREQUENCY=30
ZBX_PROXYLOCALBUFFER=10


# 在 docker-compose.yaml 所在的目录下执行;
docker-compose -f docker-compose.yaml up -d
docker-compose up    #以后直接启动
docker-compose logs  #查看连接日志

#在zabbix-proxy-mysql docker中显示如下则表示成功接入,或者
zabbix_proxy    |    186:20190515:161355.527 proxy #26 started [preprocessing wo            rker #1]
zabbix_proxy    |    161:20190515:161455.932 received configuration data from server at "192.168.1.200", datalen 3707

选择 管理 -> agent代理程序 -> 创建代理:7d63f9947814aa5f35aa19a06160a8a0.png

进行zabbix-proxy加密设置:3ede554e9c74aa0aecc7627fc4fb7cba.png

Step 5. 接入主机到zabbix-proxy中:

#拿一台data连接到我们zabbix-proxy中,然后从zabbix-server进行获取信息
$egrep -v '^#' /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.98
ListenPort=10050
ServerActive=192.168.1.98:10055   #主动推送加端口
Hostname=proxy-agent

#启动服务器的zabbix-agent
[root@Master-data1 ~]$ service zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]

d24225e587c8e3aa2089448f009a8f69.png

weiyigeek.top-zabbix-proxy访问成功

Step 6.接入其他需要监控的主机到server中

# 由于这里做了(高可用-直接连接server会进行主网卡转发) - 所以采用代理的形式
注意:在机器数量较少的时候可以采用被动主动,当机器变多的时候建议agent采用采用主动发送,以减少server的负载;

#linux - agent 共用配置
Server192.168.1.98
ListenPort=10050
ServerActive=192.168.1.98:10055
#Linux-agent(主从)
Hostname=Mzabbix
Hostname=Szabbix

#windows-agent


![](https://img-blog.csdnimg.cn/img_convert/9a8cb5f8c0ec69e6499adead0da6e95b.png)


最全的Linux教程,Linux从入门到精通

======================

1.  **linux从入门到精通(第2版)**

2.  **Linux系统移植**

3.  **Linux驱动开发入门与实战**

4.  **LINUX 系统移植 第2版**

5.  **Linux开源网络全栈详解 从DPDK到OpenFlow**



![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/59742364bb1338737fe2d315a9e2ec54.png)



第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。



![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程](https://img-blog.csdnimg.cn/img_convert/9d4aefb6a92edea27b825e59aa1f2c54.png)



**本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**

> 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Zabbix分布式数字化监控系统设计与实现需要考虑以下几个方面。 首先,系统的设计需要满足分布式架构的要求。可以采用主从架构,通过一个中央服务器负责管理整个系统,并将监控任务分配给各个分布式节点进行执行。各个节点将监控数据上报给中央服务器进行处理和分析。这样可以提高系统的可扩展性和稳定性。 其次,系统的实现需要考虑监控数据的采集和传输。可以使用Zabbix提供的Agent进行数据采集,Agent可以安装在需要监控的目标服务器上,并收集该服务器的性能指标、日志信息等数据。采集到的数据可以通过Zabbix的自定义协议或者其他通信协议进行传输,保证数据的可靠性和及时性。 另外,系统设计还需要考虑监控数据的存储和分析。可以使用Zabbix提供的数据库存储监控数据,同时可以借助其他大数据平台进行数据的进一步处理和分析,如将数据导入Hadoop集群进行离线分析,或者借助实时计算引擎进行实时分析和告警。 此外,系统设计还需要考虑监控数据的展示和告警。Zabbix提供了丰富的图表和报表功能,可以将监控数据以图形的形式展示给用户。同时,可以结合Zabbix的告警功能,对异常情况进行监控和告警,及时通知管理员进行处理。 总而言之,基于Zabbix分布式数字化监控系统设计与实现需要考虑分布式架构监控数据的采集和传输、数据的存储和分析、数据的展示和告警等方面,以满足系统的可扩展性、稳定性和功能性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值