本章讲解一些有关zabbix的知识,包括安装部署,监控linux,mysql,监控端口可用性,设置grafana监控页面,
页面乱码问题,邮件报警,钉钉报警
安装zabbix
- 1.关闭防火墙,selinux
- 2.安装mysql
下载MySQL官方的 Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装上面下载的yum repository
yum -y install mysql57-community-release-el7-10.noarch.rpm
安装mysql服务
yum -y install mysql-community-server
启动mysql服务并查看状态
systemctl start mysqld.service
systemctl enable mysqld.service
systemctl status mysqld.service
安装过程中会随机生成一个root用户的登录密码,找到他
grep "password" /var/log/mysqld.log
登录mysql
Mysql -u root -p
MySQL默认必须修改密码之后才能操作数据库:所以要改root密码
8.新密码设置的时候如果设置的过于简单会报上面的错:
是因为MySQL有密码设置的规范,具体是与validate_password的值有关:
执行下述语句
set global validate_password_policy=0;
set global validate_password_length=1;
现在可以修改密码了
9.此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:
yum -y remove mysql57-community-release-el7-10.noarch
至此mysql安装完成
接下来我们下载zabbix,进行安装部署
进入官网:https://www.zabbix.com/
更多详细内容请参考官方说明文档,详细的安装要求就不贴出来了。
- 1、配置zabbix的yum源
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum clean all
- 2、安装zabbix-server、mysql、zabbix-agent
注意:安装时若没有安装PHP环境,会自动安装PHP相关的包和httpd,因为zabbix的Web管理页面是PHP写的
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
- 3、进入MySQL数据库并设置开机启动,创建数据库实例,授权
mysql -u root -ppassword
mysql> create database zabbix character set utf8 collate utf8_bin;
- #创建一个数据库
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; # 授权zabbix用户拥有zabbix数据库的所有权限
mysql>flush privileges; # 刷新数据库权限表
mysql> quit;
- 4、导入初始模式和数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -u zabbix -p zabbix
(红色的zabbix是指定的zabbix库,不是密码,要是不指定数据库,会报错No database selected)
- 5、配置zabbix-server的配置文件zabbix_server.conf
vim /etc/zabbix/zabbix_server.conf
#DBPassword=password(124行)
DBHost=localhost # 数据主机名
DBName=zabbix # 数据库实例
DBUser=zabbix # 数据库里创建的用户名
DBPassword=zabbix # 数据库里创建的密码
- 6、编辑Apache的配置文件,设置正确的时区
vim /etc/httpd/conf.d/zabbix.conf
#php_value date.timezone Europe/Riga(20行)
改成 php_value date.timezone Asia/Shanghai
- 7、重新启动 zabbix-server、zabbix-agent 和 httpd 并设置为开机自启动
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
- 8、在浏览器输入地址http://服务器ip/zabbix/setup.php,出现欢迎界面,点击下一步,进行 zabbix
的页面初始化配置
注意:这个页面PHP设置要求全部OK
如果密码输错,是跳转不到下一步的。密码是前面设置的 zabbix
注意:这个“Zabbix server detail”页面中,”Name”处可填写对此监控系统的描述性文字,支持中文,有点像网站的名称,设置好后的效果如下图所示。
第一次登录zabbix监控系统,默认用户名 Admin(注意 A 大写),默认密码 zabbix,确认可正常登录系统
登录进入系统后,确认 Zabbix server is running 的值是 Yes
然后选择 Administrator –> Users –> Admin,可以对页面语言和用户密码等进行设置
刷新页面,就可以看到监控系统已设置为中文界面了。
zabbix监控linux
- 在被监控主机上操作
安装源
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
安装agent
yum install -y zabbix-agent
修改配置文件
vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.100.70 #zabbix-server地址
ServerActive=192.168.100.70
Hostname=192.168.100.51 #添加被监控主机名称,需要与之后web端配置相同,也就是本机
启动服务,端口10050
systemctl start zabbix -agent.service
- 添加被监控的linux主机
添加新的主机
配置—>主机—>创建主机
主机名称要和配置文件里的hostname一致,我这里只是演示一下
创建好是这样的:
点击“测试监控Windows服务器”,之后进行4步操作,如下图:
点击“更新”后,如下所示:
查看监控内容
检测—>最新数据
在最新数据中需要筛选,
点击“应用”,在下面就会列出所有的监控项
查看图像
检测—>图形
选择正确的主机,选择要查看的图形,即可出图
三.创建dashboard展示zabbix
1.下载源
wget https://dl.grafana.com/oss/release/grafana-6.0.0-1.x86_64.rpm
2.安装 rpm -ivh grafana-6.0.0-1.x86_64.rpm
安装插件
grafana-cli plugins install alexanderzobnin-zabbix-app
grafana-cli plugins install grafana-clock-panel
grafana-cli plugins install grafana-piechart-panel
3.启动服务
systemctl enable grafana-server
systemctl start grafana-server
登录地址: http://服务端IP:3000/login
登录账号:admin 初始登录密码:admin
4.导入zabbix接口
我们会发现很多数据源类型,我们需要zabbix
但是没有出现zabbix,这时我们找到我们刚才安装的插件
点击进去后,点击update,这时我们就出现了zabbix数据源了
点击zabbix配置,名称自定义
测试成功即可,然后点击上面的仪表盘,进入选择仪表板即可
显示界面
5.设置滚动播放
5.设置滚动播放
四.监控mysql
前提:在客户端安装好mysql,并在mysql中配置好给zabbix监控的用户
create user 'zabbix'@'localhost' identified by 'zabbix';
grant select on *.* to 'zabbix'@'localhost'; (只给读权限就行了)
监控mysql方式有多种,我总结为需要写脚本和不用写脚本两种
1.不用写脚本(简单型)
在my.cnf中配置连接的用户信息
vim /etc/my.cnf
[client]
host=localhost
user= 'zabbix'
password='zabbix'
配置监控策略
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'
UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping 2>/dev/null | grep -c alive
UserParameter=mysql.version,mysql -V
按照这个格式就行,这个指定了客户端如何收集信息的命令
重启zabbix客户端
systemctl restart zabbix-agent
客户端测试
HOME=/etc/zabbix mysqladmin ping 2>/dev/null | grep -c alive
服务端测试
zabbix_get -s192.168.21.139(客户端ip) -p 10050 -k mysql.ping
返回1表示在运行,即为成功
配置web端
选择自带的mysql模板
查看“最新数据”选项
五.监控端口可用性
实现监控指定端口是否被监听效果,保证服务的正常运行。
步骤
1、创建监控项
配置——主机——(选择主机)——监控项——创建监控项
2、
填入监控项名称,选择类型(注意默认类型是Zabbix 客户端,如果是主动监控的需要选择Zabbix 客户端主动式),选择键值,键值选择后填入需要监控的端口,可以起一个新的应用集Port listen,最后点击添加:
3、添加触发器
创建触发器,填入触发器名称,设置严重性,然后点击填写表达式,选择刚刚创建的监控项,点击插入。最后点击添加即创建完成触发器。
4、监控测试
浏览最新数据,可以看到该监控状态为1,即该端口在监听状态。
停止该端口的服务后,出现告警:
服务再开启后,状态恢复。
六.配置邮件报警(脚本报警)
1.zabbix服务端配置(主要是搭建一个邮件服务器用来发邮件)
yum install mailx -y
vi /etc/mail.rc
注意网易邮箱需要开启客户端授权码进行第三方登录
----文件末尾新增---
set bsdcompat
set from=xxxxxxxx@163.com
set smtp=smtp.163.com
set smtp-auth-user=xxxxxxxx@163.com
set smtp-auth-password=20154360213ldx (注意这个不是登陆密码,而是授权码,请百度获取163邮箱授权码)
set smtp-auth=login
保存后本地测试是否能发送邮件
echo "ttttttttttt" | mail -s "testmail" yyyyyyyyyy@qq.com
可以看到,邮件从163邮箱服务端发送到QQ邮箱了
编写邮件脚本
cd /usr/lib/zabbix/alertscripts
vi mailx.sh //编写发邮件脚本
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix:zabbix /usr/lib/zabbix/
[www.aa.com@ alertscripts]# ./mailx.sh 18752735985@163.com "主题" "内容"
//测试发邮件脚本是否可以正常工作
测试成功
在服务器WEB上配置
管理-》报警媒体类型-》创建媒体类型-》
名称:mail
类型:脚本
脚本名称:mailx.sh
脚本参数: //新增以下三个参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
把报警媒介加到用户上
管理-用户-点击Admin-报警媒介:
创建一个报警动作
配置-》动作-》创建动作
名称:mail
条件 A 主机群组=Linux servers
操作-》如下配置
默认操作步骤持续时间 60
默认接收人 : {TRIGGER.STATUS}:{TRIGGER.NAME}
默认信息:
告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
操作细节:-》
操作类型:发送消息
发送到用户:Admin (Zabbix Administrator)
仅送到:Mail-Test //一定要配置否则邮件发送不成功
恢复操作:{TRIGGER.STATUS}:{TRIGGER.NAME}
恢复信息:
恢复主机:{HOST.NAME}
恢复 IP:{HOST.IP}
恢复时间:{EVENT.DATE}-{EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复 ID:{EVENT.ID}
操作细节:-》
操作类型:发送消息
发送到用户:Admin (Zabbix Administrator)
仅送到:Mail-Test //一定要配置否则邮件发送不成功
重启服务
systemctl restart zabbix-server
systemctl restart zabbix-agent.service
模拟服务报警,会受到邮件
七.zabbix中文乱码问题
解决乱码
1、从Window服务器找到相应的字休复制到zabbix Server服务器上:
控制面板–>字体–>选择一种中文字库例如“楷体”(simkai.ttf)
2、将我们选择的字体文件上传到zabbix web服务器/usr/share/zabbix/assets/fonts目录下
(我的zabbix版本是4.0,3版本的目录是/usr/share/zabbix/fonts
修改文件vim /usr/share/zabbix/include/defines.inc.php
把graphfont替换成simkai,总共有两个地方,替换后刷新页面即可
八.设置钉钉报警
1.电脑端网页登录钉钉,查看告警机器人的webhook(没有就新创一个)注意创建时的安全要求,建议使用IP地址段
2.在zabbix-server服务端操作,创建钉钉报警的脚本
vim /usr/lib/zabbix/alertscripts/dd.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import os
import sys
import json
import requests
#这里填写创建的自定义机器人地址
api_url = 'https://oapi.dingtalk.com/robot/send?access_token=11746f507096ac0ce4550f29bebca6825d4866fc14022d3d354ba331d3fa32df'
红色部分为你的钉钉webhook
headers = {'Content-Type':'application/json;charset=utf-8'}
def msg(text):
json_text={
"msgtype":"text",
"text":{
"content":text
},
"at":{
"atMobiles":[
"18478019984" # @的人的手机号(也就是钉钉账号)
],
"isAtAll":False # 是否@全员
}
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
#text的值为运行脚本带的参数
text = sys.argv[1]
msg(text)
chmod +x /usr/lib/zabbix/alertscripts/dd.py
./dd.py hahahahh
执行脚本测试一下钉钉能否收到信息
可能会报错没有requests模块
解决:yum install epel-release
yum install python2-pip -y
pip install requests
如果可以收到信息就来配置zabbix web端
创建媒介类型
参数 {ALERT.MESSAGE}
把报警媒介加到用户上(注意要记住自己把报警加到哪个用户上了,后面要用)
创建动作
触发条件可以不要,我只是用来测试
默认标题:服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
发生故障,请马上检查!!
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
恢复操作也是一样的,注意用户也是和上面一样是加入报警媒介的用户,记得点更新
故障已排除,请知晓!!
告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
当前状态:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
现在停掉你监控的服务,应该可以收到钉钉报警了
九.zabbix自动发现主机
前提是client端安装了zabbix_agent
借鉴一下他人的
https://www.cnblogs.com/cyleon/p/11121781.html