服务器监控系统Zabbix的分布式监控图解教程(第六章)

xiaoxiao2021-02-28  3

(21)分布式监控:

服务器需要大量的IO来存储数据,还需要大量的网络IO来维持与Agent之间的链接;另外,有的时候,作为灾备,需要部署多机房,每一个机房中的主机架设一套监控系统,这样监控起来极为不便,所以我们希望将多机房的监控,纳入到一个监控系统中去。可是,一旦跨了机房,互联网之间的链接,需要开设防火墙,但是不同的服务使用的端口不一致,有的端口是知名的非安全端口,防火墙一般都会将其屏蔽掉。因此,一个机房中的监控 server 需要到另一个机房中的主机上建立连接,防火墙,肯定会将这些连接给屏蔽掉,更何况,也不便于我们的管理;因此这里两种场景,建议使用zabbix proxy server的方式(分布式监控),来代为实现zabbix server的部分功能;

zabbix server proxy的配置是从zabbix server端托过来,即zabbix server让他监控那些内容,zabbix server proxy监控那些内容;proxy的监控结果会周期性的同步给server端。因此,所有的展示功能,还在server端。即proxy没有web-GUI的功能,他只有采集数据,然后发送给server的功能;server端只要维持和有限几个proxy的链接即可。

如果所有写入数据库的操作都在一个数据库中,数据库的压力势必也会很大,(建议使用固态磁盘来作为数据库的存储,来提高数据库的性能)。为此,互联网上已经有了将zabbix默认的表分开的代码;

注意:在压力较小的情况下,zabbix proxy可以和zabbix server公用一台数据库,不建议式样用;建议zabbix proxy单独使用一台数据库,用于短期存放数据;

实验:实现zabbix的代理功能:四台主机,分别为zabbix server、node1、node2、node3;大概的集群架构是,node3作为zabbix proxy代理监控node2,zabbix server监控node1和node3;

注意:由于之前的实验已经将node1和node2节点纳入到了zabbix server的监控中了,所以现在要做的就是搭好zabbix proxy,然后将zabbix proxy(node3)纳入到zabbix server的监控中,将node2的监控从zabbix server自己的监控移除,然后赋予给zabbix proxy监控!

node3节点上:

yum install mairadb-server

node1节点上:

scp /etc/my.cnf.d/server.cnf 192.168.109.9:/etc/my.cnf.d/

scp /root/zabbix-release-3.4-2.el7.noarch.rpm 192.168.109.9:~

node3节点上:

vim /etc/my.cnf.d/server.cnf

systemctl start mariadb

mysql_secure_installation

mysql -uroot

CREATE DATABASE zbxproxydb CHARACTER SET 'utf8';

GRANT ALL ON zbxproxydb.* TO 'zbxproxyuser'@'%' IDENTIFIED BY 'zbxproxypass';

FLUSH PRIVILEGES;

rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

yum repolist

yum install zabbix-proxy-mysql.x86_64 zabbix-get.x86_64 zabbix-agent.x86_64 zabbix-sender.x86_64

cd /etc/zabbix/

vim zabbix_proxy.conf

Server=192.168.109.7#指定zabbix server的地址

Hostname=192.168.109.9#注意,此hostname很重要,要和zabbix server中的一致

EnableRemoteCommands=1

LogRemoteCommands=1

DBHost=192.168.109.9#指定数据库的地址

DBName=zbxproxydb

DBUser=zbxproxyuser

DBPassword=zbxproxypass

ConfigFrequency=60

rpm -ql zabbix-proxy-mysql

cp /usr/share/doc/zabbix-proxy-mysql-3.4.4/schema.sql.gz ./

gzip -d schema.sql.gz

mysql -uzbxproxyuser -h192.168.109.9 -pzbxproxypass zbxproxydb < schema.sql

cp zabbix_proxy.conf{,.bak}

vim zabbix_proxy.conf

systemctl restart zabbix-proxy.service

systemctl status zabbix-proxy.service

ss -ntl#查看10051端口

node2节点上:

vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.109.7,192.168.109.9#被动监控

ServerActive=192.168.109.7,192.168.109.9#主动监控

systemctl restart zabbix-agent.service

注意:一定要确保zabbix agent中将proxy也配置在其中;即proxy监控的主机,要允许proxy收集数据;

注意:/etc/zabbix/zabbix_proxy.conf文件中的配置:

HeartbeatFrequency:server端每隔多长时间检测一下proxy端是否可用。

ConfigFrequency:proxy每隔多长时间从server端取一下和自己相关的配置,默认是1h,建议刚开始调试的时候,设置的短一点,后期稳定的话,再时间可以设置的长一点;

DataSenderFrequency:proxy每隔多长时间,将自己取得的数据发送给server,默认是1s;

注意:zabbix agent端要允许zabbix proxy主机执行数据采集操作

(22)zabbix的官方模板:https://share.zabbix.com/

可以根据自己的需要下载模板;另外,很多代码托管在github上,根据模板的说明,配置即可,此处省略;注意,配置之后,要重启服务!

对于mysql数据库的监控,安装zabbix的时候就有监控数据库的模板,不需要额外下载!

对于zabbix server端的监控,安装zabbix agent直接启用,应该就可以用于监控(安全起见,稍微修改几项即可);

(23)维护时间:

实际生产中,需要定时的维护主机或者灰度发布,因此需要定义一个维护时间,不然只要服务一下线就开始报警,这是没有必要的。

(24)调优:

Database:

历史数据不要保存太长时长;默认是90天;

尽量让数据缓存在数据库服务器的内存中;

触发器表达式:

减少使用min(), max(), avg();

尽量使用last(),nodata();

数据收集:

polling较慢(减少使用SNMP/agentless/agent);

尽量使用trapping(agent(active));

数据类型:

文本型数据处理速度较慢;

尽量少收集类型为text或string类型的数据;

多使用类型为numeric的;

zabbix服务器的进程:

(1) 服务器组件的数量;

alerter, discoverer, escalator, http poller, hourekeeper, icmp pinger, ipmi polller, poller, trapper, configration syncer, ...

StartPollers=60

StartPingers=10

...

StartDBSyncer=5

...

(2) 设定合理的缓存大小

CacheSize=8M

HistoryCacheSize=16M

HistoryIndexCacheSize=4M

TrendCacheSize=4M

ValueCacheSize=4M

(3) 数据库优化

分表:

history_*:历史数据

trends*:趋势数据

events*:事件数据

其它解决方案:

grafana:展示

collectd:收集

influxdb:存储

grafana+collectd+influxdb

prometheus:

exporter:收集

alertmanager:

grafana:展示

openfalcon:这款监控软件功能强大,并且非常美观;中国人研发的,是一个重量级的监控系统;大公司的监控工具都是自研的。

注意:重新启动zabbix server的时候,需要同时启动mariadb、zabbix server、httpd三个服务;

转载请注明原文地址: https://www.6miu.com/read-1400218.html

最新回复(0)