机房环境:由多个节点组成,每个节点安装zabbix-agent应用;每个agent将监控数据主动上传给Zabbix-Proxy服务器。Zabbix-Proxy将收集到的数据结果回传给公司的Zabbix-Server主机。这样就可以实现在公司远程监控主机的状态。
使用场景:在生产环境中,在公司监控某城市机房端的全部节点。
Zabbix为被监控端,所有需要监控的节点需要安装Zabbix-agent应用
[root@zagent-mysql ~]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd release/
lftp 172.16.0.99:/release> get zabbix-release-3.4-2.el7.noarch.rpm
13572 bytes transferred
lftp 172.16.0.99:/release> bye
[root@zagent-mysql ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
[root@zagent-mysql ~]# yum install -y zabbix-sender zabbix-agent
[root@zagent-mysql /etc/zabbix]# vim zabbix_agentd.conf
97 Server=172.16.0.71 --->zabbix-server(如果是远程监控,这里可能需要设置成zabbix-proxy的地址,由zproxy将数据回传给zabbix-server)
138 ServerActive=172.16.0.71:10051 ---> zabbix-server
149 Hostname=172.16.0.101 ---> mysql-zabbix-agent
启动agent服务
[root@zagent-mysql ~]# systemctl start zabbix-agent
[root@zagent-mysql ~]# systemctl enable zabbix-agent
查看是否启动成功
[root@zagent-mysql ~]# netstat -antp | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1562/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 1562/zabbix_agentd
Zabbix-Proxy 将采集到的数据 主动模式发送给 zserver端
Z-server的ip设置zabbix-proxy的ip应该是映射到防火墙的ip
lftp 172.16.0.99:/release> get zabbix-release-3.4-2.el7.noarch.rpm
[root@zproxy ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
[root@zproxy ~]# yum install -y zabbix-proxy-mysql zabbix-get zabbix-java-gateway mariadb-server mariadb
[root@zproxy ~]# systemctl start mariadb
[root@zproxy ~]# systemctl enable mariadb
[root@zproxy ~]# mysql
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin; # 建库并制定字符集
MariaDB [(none)]> grant all on zabbix_proxy.* to zabbix@'localhost' identified by '12345';
MariaDB [(none)]> flush privileges;
导入数据库:
[root@zproxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.4.15/
[root@zproxy /usr/share/doc/zabbix-proxy-mysql-3.4.15]# ls
AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
[root@zproxy /usr/share/doc/zabbix-proxy-mysql-3.4.15]# gunzip schema.sql.gz
[root@zproxy /usr/share/doc/zabbix-proxy-mysql-3.4.15]# mysql zabbix_proxy < schema.sql # 导入数据库
[root@zproxy ~]# mysql zabbix_proxy
MariaDB [zabbix_proxy]> show tables;
看到表,OK!
[root@zproxy /etc/zabbix]# vim zabbix_java_gateway.conf
9 LISTEN_IP="0.0.0.0"
17 LISTEN_PORT=10052
35 START_POLLERS=50
[root@zproxy /etc/zabbix]# vim zabbix_proxy.conf
13 ProxyMode=0
##主动式,zproxy主动将监控数据传给zserver
24 Server=172.16.0.71
##指定zserver的IP,生产环境,防火墙的公网地址
33 ServerPort=10051
##指定zserver的端口,生产环境,公网地址的某个端口 xxxxx
43 Hostname=SYzproxy
##zproxy的名字,唯一的 地区+名字
156 DBHost=localhost
167 DBName=zabbix_proxy
182 DBUser=zabbix
190 DBPassword=12345
197 DBSocket=/var/lib/mysql/mysql.sock
204 DBPort=3306
244 ConfigFrequency=3
253 DataSenderFrequency=1
##zproxy向zserver发送数据的时间间隔,秒。
323 JavaGateway=localhost
331 JavaGatewayPort=10052
339 StartJavaPollers=50
##zserver与java之间,创建多少个线程用于数据传输
##START_POLLERS >= StartJavaPollers
[root@zproxy ~]# systemctl start zabbix-java-gateway
[root@zproxy ~]# systemctl enable zabbix-java-gateway
[root@zproxy ~]# systemctl start zabbix-proxy
[root@zproxy ~]# systemctl enable zabbix-proxy
[root@zproxy ~]# netstat -antp | grep 1005[12]
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 1545/zabbix_proxy
tcp6 0 0 :::10051 :::* LISTEN 1545/zabbix_proxy
tcp6 0 0 :::10052 :::* LISTEN 1501/java
Zabbix-Server 为监控端服务
[root@zserver ~]# yum install -y httpd php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash libjpeg*
[root@zserver ~]# vim /etc/httpd/conf/httpd.conf # 进入apache的配置文件,添加index.php选项才可以支持php
164 DirectoryIndex index.php index.html
[root@zserver ~]# vim /etc/php.ini
384 max_execution_time = 300
##应用程序的最大执行时间,秒
394 max_input_time = 300
##接收数据的最大超时时间,秒
672 post_max_size = 16M
##接收数据的最大值
878 date.timezone = Asia/Shanghai
##时区
[root@zserver ~]# systemctl start httpd
[root@zserver ~]# systemctl enable httpd
[root@zserver ~]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd release/
lftp 172.16.0.99:/release> get zabbix-release-3.4-2.el7.noarch.rpm
[root@zserver ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
# 这个包给本地建立网络yum源,为了下边安装zabbix各项软件做准备
[root@zserver ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-java-gateway zabbix-get
# 安装zabbix的监控软件
zabbix-get ---> 监控centos6 centos7 windows 应用软件 执行zabbix 键值命令用到
zabbix-java-gateway ---> Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦。所有后来为了解决这个监控问题,Zabbix和Java双方应运生成了各自的代理监控程序:zabbix 2.0以后添加了服务进程zabbix-java-gateway;Java有了JMX,全称是Java Management Extensions,即Java管理扩展。
zabbix-web-mysql ---> Zabbix的web端会通过这些数据,来展示绘图。
zabbix-server-mysql ---> 数据库是用来存放采集到的数据
部署中文字体:
windows字体路径--C:\Windows\Fonts
楷体常规
[root@zserver ~]# mkdir /usr/share/fonts/simkai
[root@zserver ~]# cd /usr/share/fonts/simkai/
[root@zserver /usr/share/fonts/simkai]# ls
simkai.ttf
编辑字体的配置文件 # cd /usr/share/zabbix/include/
[root@zserver /usr/share/zabbix/include]# vim defines.inc.php
53 define('ZBX_FONTPATH', '/usr/share/fonts/simkai');
54 define('ZBX_GRAPH_FONT_NAME', 'simkai');
编辑zabbix-java的配置文件:
[root@zserver /etc/zabbix]# vim zabbix_java_gateway.conf
9 LISTEN_IP="0.0.0.0"
17 LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=50 #设置启动多个线程 只有这个需要改,其它注释打开
TIMEOUT=3
这是监控java程序需要的配置文件
设置zabbix-server配置文件
[root@zserver /etc/zabbix]# vim zabbix_server.conf
91 DBHost=172.16.0.72 # 改 对应z-mysql的ip
100 DBName=zabbix
116 DBUser=zabbix
124 DBPassword=12345 # 改
131 DBSocket=/var/lib/mysql/mysql.sock # 改
139 DBPort=3306 # 开注释
连接mysql
261 JavaGateway=localhost # 改
269 JavaGatewayPort=10052 # 去注释
277 StartJavaPollers=50 # 改
连接java-gateway
启动服务:
[root@zserver ~]# systemctl start zabbix-java-gateway
[root@zserver ~]# systemctl enable zabbix-java-gateway
[root@zserver ~]# systemctl start zabbix-server
[root@zserver ~]# systemctl enable zabbix-server
[root@zserver ~]# systemctl restart httpd
[root@zserver ~]# netstat -antp | grep :1005[12] # 查看10051 和 10052 端口的的服务启动状态
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 8467/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 8467/zabbix_server
tcp6 0 0 :::10052 :::* LISTEN 8428/java
[root@1-server zabbix]# systemctl restart httpd # 再次重启apache服务
浏览器访问:http://172.16.0.71/zabbix/
Zabbix为我们提供了非常方便的操作,直接上图。
为了方便对每个节点的日常管理,我们需要对监控进行报警配置,出现故障的节点将消息及时发送给负责人。
下载钉钉客户端
https://www.dingtalk.com/
手机号码注册并登陆
随便添加2个同事组成群组。
在软件界面点击左上角的头像–选择机器人管理,自定义,添加
记录 Webhook
。
[root@zserver /etc/zabbix]# cd /usr/lib/zabbix/alertscripts/
[root@zserver /usr/lib/zabbix/alertscripts]# ls
[root@zserver /usr/lib/zabbix/alertscripts]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd scripts/
lftp 172.16.0.99:/scripts> get token.sh
脚本内容:
#!/bin/bash
to=$1
subject=$2
text=$3
#token是在钉钉机器人的Webhook:复制过来的,每个钉钉的token都不同
curl 'https://oapi.dingtalk.com/robot/send?access_token=29b1bf8xxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles": [ "'"$1"'" ],
"isAtAll": false
}
}'
[root@zserver /usr/lib/zabbix/alertscripts]# chmod +x token.sh
[root@zserver /usr/lib/zabbix/alertscripts]# vim token.sh # 设置成自己的token(webhook值,整段包括http),在钉钉建立群聊,添加自定义机器人,添加关键词(如warning,等预警词)
钉钉配置完成后,测试脚本。
[root@zserver /usr/lib/zabbix/alertscripts]# ./token.sh zabbix test warning
{"errcode":0,"errmsg":"ok"}
管理---- 报警媒介类型
添加 用户
选择 报警媒介
设置“接收消息人”
配置 动作
具体动作设置说明
设置 操作
主要是配置消息发送的宏,宏会自动带入故障主机名称,IP,故障描述。
修复后的消息 恢复操作
点击更新,这样钉钉的报警就配置完成了。
Zabbix的更新操作时,需要对数据进行备份,升级过程中不能中断zabbix-server的进程,如果中断,会导致数据中表结构损坏,有的是表结构无法添加字段.
如果遇到这种情况,最简单的办法是将表结构删除(history,rends表需保留),使用之间的备份进行恢复,等数据库恢复完成后,再重新启动zabbix-server进程,数据库可再次进行自动升级。
zabbix-proxy代理自动注册主机无法发现主机
检查server,proxy,agent是否为同一zabbix版本,zabbix_version -V
检查proxy主机与zabbix-server主机的主机hosts是否配置–/etc/hosts,两个机器都要添加。
两个主机名都要设置正确,区分大小写。
注意:agent主机的端口只能查到自己agent的,看不到proxy,server的端口是正常的。