zabbix4.0初体验

Posted by ZMY on October 21, 2018

zabbix4.0初体验

背景

听说最近zabbix更新到4.0版本了,赶紧下载安装实验一下功能

目的

使用zabbix4.0监控服务器的状态,由于环境原因客户端只能使用active agent模式,最后告警通过邮件和微信形式进行通知

环境

zabbix服务器端10.254.0.220
zabbix客户端 192.168.141.242
zabbix客户端经过NAT设备访问zabbix服务器端
系统环境是CentOS Linux release 7.2.1511 (Core) 本来想要跟随着官网document搭建,但是官网文档只有3.4版本,因此就跟着3.4的版本来,操作的时候就安装包名称路径由3.4换成4.0就可以了
由于centos7开始安装的mysql默认为miriadb,自己看起来别扭,还是下载mysql原生版本用起来比较自然

安装和配置过程

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm  #下载官网repo安装文件  
rpm -ivh mysql57-community-release-el7-9.noarch.rpm  #安装repo文件  
yum install mysql-server -y  #yum安装  
systemctl start mysqld  #启动mysql服务  
systemctl enable mysqld #设置开机启动  
grep 'temporary password' /var/log/mysqld.log #获取安装时的临时密码  
(这里可能有之前安装过mysql的,在这一步获取不到临时密码,下面是解决办法  
rm -rf /var/lib/mysql  #删除原来mysql残留的数据  
systemctl restart mysqld  #重启mysql服务  
grep 'temporary password' /var/log/mysqld.log  #再去找临时密码)  
mysql -u root -p      #登录,提示输入密码,输入之前在/var/log/mysqld.log中获取的临时密码 
set password=password("yourpassword");  #登录成功后修改密码

以上步骤只是成功安装mysql5.7并初始化root账户设置密码,下面开始进入zabbix的安装与配置

rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm #安装zabbix yum源  
yum install zabbix-server-mysql zabbix-web-mysql -y #安装zabbix安装包

在mysql上安装zabbix数据库和用户(password换成自己设置的密码)

mysql -u root -p<password> #登录mysql  
create database zabbix character set utf8 collate utf8_bin; #设置zabbix编码方式为utf-8  
grant all privileges on zabbix.* to zabbix@localhost identified by '<password>';  #授权zabbix用户权限  
flush privileges;  #使权限设置生效
quit; 退出  

然后导入初始架构(Schema)和数据

cd /usr/share/doc/zabbix-server-mysql-4.0.0/
gzip -d create.sql.gz 
mysql -u root -p'yourpassword' zabbix < create.sql 

在zabbix_server.conf中编辑数据库配置

#vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=yourpassword

启动Zabbix Server进程

# systemctl start zabbix-server

编辑Zabbix前端的PHP配置
Zabbix前端的Apache配置文件位于 /etc/httpd/conf.d/zabbix.conf 。一些PHP设置已经完成了配置。

php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai

依据所在时区,你可以取消 “date.timezone” 设置的注释,并正确配置它。在配置文件更改后,需要重启Apache Web服务器,我这里配置为Asia/Shanghai。

# systemctl start httpd

Zabbix前端可以在浏览器中通过 http://zabbix-frontend-hostname/zabbix 进行访问。进入页面前需要进行初始化设置

之后是登录页面,默认的用户名/密码为 Admin/zabbix。


登录zabbix后可以调整网页基础参数 语言、背景颜色、刷新时间间隔、是否自动登录、多长时间没操作登出、每页行数
这里把英文换成中文

接下来是添加主机,创建模板,添加监控项,触发器,媒介,动作等等主要操作

1.添加主机
2.创建模板并关联主机 对以下两个模板进行克隆操作,创建两个新模板
原模板名称Template App Zabbix Agent
原模板名称Template OS Linux
创建新模板过程如下
2.1 点击模板名称
2.2 克隆模板
2.3 给新模板起名并更新
新模板名称active Template App Zabbix Agent
2.4 创建第2个模板,并链接第1个模板,点击模板名称
2.5 克隆第2个模板
2.6 给第2个模板起名,并选择链接第一个模板
2.7 取消原来的链接,并添加新链接active Template App Zabbix Agent
2.8 点击更新
2个新模板名称分别为active Template App Zabbix Agent和active OS Linux
3.添加和调整监控项
将模板中所有监控项中的内容和自动发现规则中的内容由zabbix客户端式调整成zabbix主动式
以active Template App Zabbix Agent模板为例 最后结果为下图所示,意味着成功 active OS Linux模板调整监控项、自动发现规则和active Template App Zabbix Agent模板调试过程相同
只不过多了一个自动发现规则,将里面的Mounted filesystem discovery、Network interface discovery2个大项和7个监控项调成zabbix主动式即可
使用active OS Linux模板链接主机
4.添加和调整触发器 默认情况下不用调整触发器,但这里为了主动制造告警,这里调整一个触发器的参数,触发器名称active OS Linux: CPU idle time 然后修改表达式的值
表达式如下,含义是cpu的空闲时间小于90%持续1分钟即报警

{active OS Linux:system.cpu.util[,idle].last(,1m)}<90

5.创建动作
这里仅需勾选开启选项即可,其他保持默认(如有需要可查阅资料,自行修改)
6.添加媒介
6.1添加email告警 这里我选择163邮箱,信息很简单,安全链接选无,其中需要注意的是密码,这里的密码指的是授权码(如何获取授权码请自行百度)
6.2添加微信告警 微信告警信息按下图填写,其中wechat.py是之后要下载的python脚本的名字,最后别忘了点击添加按钮 最后保证2个media的状态都是可用状态
7.关联用户
将报警媒介关联用户,即可在主机发生告警时,将告警消息发送到媒介所关联的用户中。

其中微信报警用户名是由之后申请的企业微信号中的告警接收人员的用户名而来,这里先记一下,之后再申请企业微信的时候还会再提
最后保证状态为已启用

以上完成了添加主机,创建模板,添加监控项,触发器,媒介,动作等等主要操作 ,接下来就是配置zabbix客户端和wechat.py脚本准备环境了

注册企业微信

企业微信注册地址,注册过程很简单,因为这里我们仅仅是用作zabbix报警使用,因此注册个人企业就可以了,不用提交营业执照注册号,注册完成后就可以登录企业微信管理后台了,会自动跳转

  1. 创建组
  2. 添加管理员 3.关注微工作台,这一点是你个人微信能够收到zabbix告警的关键 使用个人微信扫码即可关注 4.创建应用并关联用户或用户组 创建后确保应用已启用 到这,企业微信的操作就完成了,接下来需要找到并记下几个id和对应值
    4.1 企业id 4.2 应用id和secret 4.3 部门id 4.4 用户账号 这里的账号即前面7关联用户中添加的微信报警用户名
    下面去zabbix server上安装wechat.py脚本,修改权限并修改之前获取到的几个id值
    #curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
    #python get-pip.py
    #pip install requests
    #pip install --upgrade requests
    #git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
    #cp Zabbix-Alert-WeChat/wechat.py /usr/lib/zabbix/alertscripts/
    #chmod +x /usr/lib/zabbix/alertscripts/wechat.py
    #vim /usr/lib/zabbix/alertscripts/wechat.py
    

    将里面file = open(‘config.json’, ‘w’)替换成file = open(‘/usr/lib/zabbix/alertscripts/config.json’, ‘w’)
    上面替换的地方应该有两处,下面替换之前记载的各种id值

    Corpid = "wwd454545454xxxxx"                                              # CorpID是企业号的标识
    Secret = "PI1yNaklf-f9LwfQfxxxxx"                                         # Secret是管理组凭证密钥
    Agentid = "100xxxx2"                                                      # 应用ID
    Partyid = "2"                                                             #部门id
    

    修改后保存即可
    最后在client服务器上安装zabbix-agent客户端

    rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm #下载repo文件
    yum install zabbix-agent -y   #安装
    

    修改/etc/zabbix/zabbix_agentd.conf配置文件

    # vim /etc/zabbix/zabbix_agentd.conf
    StartAgents=0       #0表示启动主动模式
    ServerActive=10.254.0.220       #ip为zabbix server ip地址
    Hostname=zhaitest     #Hostname一定要和zabbix server web上添加的主机名一致
    RefreshActiveChecks=60 #每60s主动发送一次请求
    

    修改后保存即可

启动zabbix-agent服务并设置为开机自启动

systemctl start zabbix-agent
systemctl enable zabbix-agent

防火墙放行10050和10051,我的实验环境里客户端和服务器都将iptables关闭了,并且selinux也关闭了(这样会有安全隐患,不建议这样设置),如何关闭iptables金额selinux请自行百度

最后登录 http://zabbix_server_ip/zabbix 查看主机状态 可以看到这里zabbix为灰色的,没关系,因为主动模式就是这样的,它是按被动模式去检测的,即检测客户端的10050端口是否能连接,因为这里配置的为主动模式,所以灰色为正常结果,查看是否有数据即可 若有数据,即zabbix客户端可以主动连接到zabbix server端,若没有数据,请检查log日志

测试

最后进行告警测试 登录客户端服务器192.168.141.242 创建一个shell脚本,持续消耗cpu,查看报警设置是否成功

#vim 2  ###编辑脚本,起名为2
#!/bin/bash
set j=2
while true
do
        let "j=j+1"
        echo "----------j is $j--------------"
done
#chmod 777 2   #给脚本赋予执行权限
#sh 2          #执行shell脚本

邮件报警

微信报警

至此,关于zabbix4.0的安装,主动模式客户端的配置,添加主机,创建模板,添加监控项,触发器,媒介,动作,email告警,微信告警等等都做了示范介绍,更多的关于zabbix的基础操作和配置请参考官网文档进行参考

声明:本博客的原创文章,都是本人平时学习所做的笔记,转载请标注出处,谢谢合作。