Zabbix监控

Zabbix监控

  • Zabbix 发现配置
    • 添加主机
      • Zabbix-agent设置:
      • Zabbix-Proxy 配置
      • Zabbix-Server 配置
        • 部署web环境
        • 配置 Zabbix-server
      • “发现主机” 配置
    • Zabbix 报警设置
      • 钉钉报警:
        • 钉钉端 配置
        • Zabbix-Server 主机配置
        • Zabbix Web端 配置说明
    • 故障排除

Zabbix 发现配置

机房环境:由多个节点组成,每个节点安装zabbix-agent应用;每个agent将监控数据主动上传给Zabbix-Proxy服务器。Zabbix-Proxy将收集到的数据结果回传给公司的Zabbix-Server主机。这样就可以实现在公司远程监控主机的状态。

添加主机

使用场景:在生产环境中,在公司监控某城市机房端的全部节点。

Zabbix-agent设置:

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 配置

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 配置

Zabbix-Server 为监控端服务

部署web环境
[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

配置 Zabbix-server
[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为我们提供了非常方便的操作,直接上图。

首先配置agent代理程序
Zabbix监控_第1张图片配置自动发现功能
Zabbix监控_第2张图片
配置发现动作
在这里插入图片描述

Zabbix监控_第3张图片
Zabbix监控_第4张图片

Zabbix 报警设置

为了方便对每个节点的日常管理,我们需要对监控进行报警配置,出现故障的节点将消息及时发送给负责人。

钉钉报警:

钉钉端 配置

下载钉钉客户端
https://www.dingtalk.com/

手机号码注册并登陆
随便添加2个同事组成群组。
在软件界面点击左上角的头像–选择机器人管理,自定义,添加
Zabbix监控_第5张图片Zabbix监控_第6张图片
Zabbix监控_第7张图片
Zabbix监控_第8张图片
记录 Webhook

Zabbix-Server 主机配置
[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"}
Zabbix Web端 配置说明

管理---- 报警媒介类型
Zabbix监控_第9张图片添加 用户
Zabbix监控_第10张图片
选择 报警媒介
Zabbix监控_第11张图片设置“接收消息人”
Zabbix监控_第12张图片
配置 动作
Zabbix监控_第13张图片具体动作设置说明

Zabbix监控_第14张图片设置 操作
主要是配置消息发送的宏,宏会自动带入故障主机名称,IP,故障描述。

Zabbix监控_第15张图片
修复后的消息 恢复操作
Zabbix监控_第16张图片
点击更新,这样钉钉的报警就配置完成了。

故障排除

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的端口是正常的。

你可能感兴趣的:(监控,运维)