Zabbix3.4从入门到精通
zabbix-基础
第1章 关于zabbix
1.1 为什么要使用监控
1.对系统不间断实时监控
2.实时反馈系统当前状态
3.保证服务可靠性安全性
4.保证业务持续稳定运行
1.2 如何进行监控
比如我们需要监控磁盘的使用率
1.如何查看磁盘使用率df -h
2.监控磁盘的那些指标block、inode
3.如何获取具体的信息df -h|awk'//$/{print $(nf-1)}'
4.获取的数值到达多少报警 80%
1.3 流行的监控工具
1.cacti、nagios、zabbix、
2.lepus(天兔)数据库监控系统
3.open-falcon 小米
4.prometheus(普罗米修斯,docker、k8s)
1.4 到一家新公司,如何入手监控
1.硬件监控 路由器、交换机、防火墙
2.系统监控 cpu、内存、磁盘、网络、进程、tcp
3.服务监控 nginx、php、tomcat、redis、memcache、mysql
4.web监控 请求时间、响应时间、加载时间、
5.日志监控 elk(收集、存储、分析、展示)日志易
6.安全监控 firewalld、waf(nginx+lua)、安全宝、牛盾云、安全狗
7.网络监控 smokeping 多机房
8.业务监控
第2章 zabbix部署
2.1 基础环境划分
主机名 | ip地址 | 功能 |
---|---|---|
zabbix | 172.16.1.71 | zabbix服务端 |
web01 | 172.16.1.7 | zabbix客户端 nginx |
web02 | 172.16.1.8 | zabbix客户端 nginx |
db01 | 172.16.1.51 | 数据库 |
2.2 安装zabbix
zabbix-server,是一个c/s和b/s结构
1.安装zabbix-server
[root@zabbix ~]# rpm -ivhhttps://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm [root@zabbix ~]# yum install -yzabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb-server
2.创建zabbix数据库以及用户
#启动数据库,加入开机自启
[root@zabbix ~]# systemctl enable mariadb [root@zabbix ~]# systemctl start mariadb
创建数据库并授权
[root@zabbix ~]# mysql -uroot -p mariadb [(none)]> create database zabbixcharacter set utf8 collate utf8_bin; mariadb [(none)]> grant all privileges on zabbix.*to zabbix@localhost identified by 'zabbix'; mariadb [(none)]> exit
3.导入基础架构和数据
[root@zabbix ~]# cd/usr/share/doc/zabbix-server-mysql-3.4.14/ 进入这个目录可能不报错 目录不存在 大多是因为版本不同 导致目录名称改变 [root@zabbix zabbix-server-mysql-3.4.14]# ll total 2112 -rw-r--r-- 1 root root 98 sep 14 04:04 authors -rw-r--r-- 1 root root 857849 sep 14 04:04 changelog -rw-r--r-- 1 root root 17990 sep 14 04:04 copying -rw-r--r-- 1 root root 1267039 sep 14 04:09create.sql.gz -rw-r--r-- 1 root root 52 sep 14 04:04 news -rw-r--r-- 1 root root 188 sep 14 04:04 readme [root@zabbix zabbix-server-mysql-3.4.14]# zcat create.sql.gz |mysql -uroot zabbix [root@zabbix zabbix-server-mysql-3.4.14]# mysql-uroot -p 进入数据库确认一下是否导入成功 mariadb [(none)]> use zabbix; mariadb [zabbix]> show tables; 140 rows in set (0.00 sec) #因内容过多此处只粘贴总数
4.启动zabbix server进程,在zabbix_server.conf中编辑数据库配置
[root@m01 ~]# vi/etc/zabbix/zabbix_server.conf #以下四处需要更改 以下四处大部分起初都被注释 应该把注释取消 以下是需要修改的内容所在行 dbhost=localhost #91行 dbname=zabbix #101行 dbuser=zabbix #117行 dbpassword=zabbix #126行 # 启动zabbixserver进程 [root@zabbix ~]# systemctl enable zabbix-server [root@zabbix ~]# systemctl start zabbix-server
5.编辑zabbix前端的php配置,zabbix前端的apache配置文件位于 /etc/httpd/conf.d/zabbix.conf。一些php设置已经完成了配置。
[root@zabbix ~]# vim /etc/httpd/conf.d/zabbix.conf 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 #20行 依据所在时区,取消 “date.timezone” 设置的注释,并正确配置(asia/shanghai)。在配置文件更改后,需要重启apacheweb服务器。
6.启动httpd服务
[root@zabbix ~]#systemctl enable httpd [root@zabbix ~]#systemctl start httpd
2.3 网页配置zabbix-web界面
配置完以上内容后 网页输入10.0.0.71/zabbix进入zabbix安装界面、
欢迎界面, 直接下一步即可
检查依赖项是否不存在任何异常
配置zabbixweb
连接数据库(如果直接选用远程数据库 可以在此处修改)
配置zabbixserver
服务器的主机名或主机ip地址和端口号, 以及安装的名称(可选)
安装前摘要,检查配置参数。如果一切都正确,请按"下一步"按钮或"后退"按钮来更改配置参数。
提示已成功地安装了zabbix
前端。配置文件/etc/zabbix/web/zabbix.conf.php
被创建。
至此zabbix已经安装完毕
默认登陆zabbixweb的用户名admin
,密码zabbix
第3章 zabbix-web界面优化
3.1 修改为中文字体
点击update后即为中文字体
(修改为中文字体后可能有些界面会产生乱码 我们还应该修改下字符集,防止产生乱码)
3.2 调整字符集
1.先搜索zabbix-web包对应字符存放的目录
[root@zabbix ~]# rpm -ql zabbix-web|grep fonts /usr/share/zabbix/fonts
2.进入对应字体目录,发现字体是一个软链接
[root@zabbix ~]# cd /usr/share/zabbix/fonts/ [root@zabbix fonts]# ll lrwxrwxrwx 1 root root 33 oct 11 03:20graphfont.ttf -> /etc/alternatives/zabbix-web-font
3.进入软链接对应的目录,发现还是软链接
[root@zabbix fonts]# cd /etc/alternatives/ [root@zabbix alternatives]# ll lrwxrwxrwx1 root root 38 oct 11 03:20 zabbix-web-font ->/usr/share/fonts/dejavu/dejavusans.ttf
4.进入最终字体存放的目录
[root@zabbix alternatives]# cd/usr/share/fonts/dejavu/
5.将默认字体进行改名
[root@zabbix-server alternatives]# mvdejavusans.ttf dejavusans.ttf_bak
6.上传自己准备好的字体,字体可以通过windows电脑获取
(c:\windows\fonts)
7.最后将新上传的字体进行改名
[root@zabbix dejavu]# mv simkai.ttf dejavusans.ttf
3.3 调整web界面窗口位置
该操作可以不执行
为了以后方便我们观察 所以我们修改下 web界面的窗口安排
图片所示是默认的 点击编辑仪表盘 便可以拖动各个小窗口
将如下图四栏 往上提即可然后保存
目的是方便日后查看
第4章 监控内容部署
4.1 配置一台主机
1. 在客户端安装zabbix-agent
[root@web01 ~]# rpm -ivhhttps://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.12-1.el7.x86_64.rpm
2.配置修改/etc/zabbix/zabbix_agentd.conf内容
[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.conf server=172.16.1.71 #97行 指向zabbix-server timeout=30 #238行 此处默认是注释3或4 可以取消注释修改成30
3.启动服务并检查
[root@web01 ~]# systemctl start zabbix-agent [root@web01 ~]# systemctl enable zabbix-agent [root@web01 ~]# netstat -lntp active internet connections (only servers) tcp0 0 0.0.0.0:10050 0.0.0.0:* listen 981/zabbix_agentd
以上确认配置完成后 进入web界面网页配置
点击创建主机
配置完以上内容后 不要直接点击添加
点击模板->选择连接指示器->选择->搜索linux->点击小按钮添加->最后添加
template os linux 是必添加的监控
添加完成后 点击主机(如果等几分钟 显示zbx则为添加成功 没有问题)
4.2 自定义监控tcp
tcp的12种状态
tcp[established] tcp[syn_sent] tcp[syn_recv] tcp[fin_wait1] tcp[fin_wait2] tcp[time_wait] tcp[close] tcp[close_wait] tcp[last_ack] tcp[listen] tcp[closing] tcp[unknown]
1.在对应的主机上编写自定义监控tcp的11中状态[在本地进行取值,web01]
[root@web01 ~]# vim/etc/zabbix/zabbix_agentd.d/tcp.conf userparameter=tcp[*],netstat -ntal | awk'nr>1{print $nf}'| grep -i "$1" | wc -l
2.在server上使用zabbix_get获取对应主机的值
[root@zabbix ~]# yum install zabbix-get -y [root@zabbix ~]# zabbix_get -s 172.16.1.7 -ktcp[estab]
确认无误后再添加
网页配置内容
先添加一个模板 在模板里创建监控项这样以后就不用再次创建
因为模板支持导出导入
创建完模板 点击监控项
点击创建监控项
然后开始创建
创建时 名称只是让人看的键值是最关键的 不能更改
添加完一个后 就可以使用这个来克隆其他的
需要注意的是 要确保每个键值都正常
克隆完后的 每个都要启用默认创建完就是启用的
添加完成后 我们要把模板加入到web01这台主机上进行监控
按照一开始添加模板 将tcp这个模板加入即可
检查是否成功
如果有数据更新即为成功
4.3 自定义监控内存
1.在agent的/etc/zabbix/zabbix_agentd.d/*.conf自定义监控项, 使用userparameter=key,shell command,目的是便于zabbixserver获取zabbixagent对应监控项的数据
[root@web01 zabbix_agentd.d]# vim mem.conf userparameter=mem.num,free -m |awk '/^mem/{print$nf/$2*100}' userparameter=swap.num,free -m|awk '/^swap/{print$3/$2*100}'
- 使用zabbix_agentd -p | grep key,如果获取到值则正常
[root@web01 zabbix_agentd.d]# zabbix_agentd -p|grep-i mem_num mem_num[t|38.501]
- 在zabbixserver端测试获取zabbixagent端自定义的监控项是否正常zabbix_get -s ip_addr -k key
[root@zabbix ~]# zabbix_get -s 172.16.1.7 -k mem.num 38.7064
然后开始网页配置
将 swap.num 和 mem.num 都添加上
添加完成后 查看最新数据
配置完成
第5章 配置触发器
5.1 配置单条件触发器
5.2 多条件触发器
5.3 登录用户超过两个人就报警
第6章 配置报警
6.1 配置web界面报警
6.2 配置邮件报警
将动作里的触发器的状态设置为已启动(点一下已停止即可)
注意界面右上角 选择为触发器不然显示内容不同
6.2.1 更改报警邮件信息
然后我们点击名称 进入配置界面(更改报警邮件发送的信息)
将默认的信息删除 覆盖掉
故障!!!: {trigger.name}
报警主机:{host.name1}
报警服务: {item.name1}
报警key1: {item.key1}:{item.value1}
报警key2: {item.key2}:{item.value2}
严重级别: {trigger.severity}
恢复: {trigger.name}
恢复主机:{host.name1}
恢复服务: {item.name1}
恢复key1:{item.key1}:{item.value1}
恢复key2: {item.key2}:{item.value2}
恢复的内容也要修改
6.2.2 修改报警媒介类型
6.2.3 添加报警媒介
6.3 企业微信报警
1.准备微信报警脚本, 脚本怎么写->脚本放在哪【相当于配置好了发件人】
[root@zabbix ~]# yum install python-pip -y [root@zabbix ~]# pip install requests [root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
报警脚本内容
[root@zabbix alertscripts]# vim weixin.py #!/usr/bin/env python #-*- coding: utf-8 -*- #author: bgx #date: 2018 #comment: zabbix接入微信报警脚本 import requests import sys import os import json import logging #!/usr/bin/env python #-*- coding: utf-8 -*- #author: bgx #date: 2018 #comment: zabbix接入微信报警脚本 import requests import sys import os import json import logging logging.basicconfig(level = logging.debug, format= '%(asctime)s, %(filename)s, %(levelname)s, %(message)s', datefmt = '%a, %d %b %y %h:%m:%s', filename = os.path.join('/tmp','weixin.log'), filemode = 'a') corpid='wwabcf092986138a4f' appsecret='47r80t2cfybqfros8mrxux84h44rdftj9bmvvaequvq' agentid=1000002 #获取accesstoken token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='+ corpid + '&corpsecret=' + appsecret req=requests.get(token_url) accesstoken=req.json()['access_token'] #发送消息 msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='+ accesstoken touser=sys.argv[1] subject=sys.argv[2] #toparty='3|4|5|6' message=sys.argv[2] + "\n\n"+sys.argv[3] params={ "touser": touser, #"toparty": toparty, "msgtype": "text", "agentid": agentid, "text": { "content": message }, "safe":0 } req=requests.post(msgsend_url,data=json.dumps(params)) logging.info('sendto:' + touser + ';;subject:' +subject + ';;message:' + message)
给脚本增加执行权限并测试
[root@zabbix alertscripts]# chmod +x weixin.py [root@zabbix alertscripts]# ./weixin.py nfsnobodysubject messages #测试 [root@zabbix alertscripts]# rm -f /tmp/weixin.log #删除这个文件不然会报错
开始web界面配置
下图需要增加的内容(注意不要有空格 不然会报错 很难发现)
{alert.sendto}#发给谁
{alert.subject}#发送的主题
{alert.message}#发送的内容
脚本名称 直接填写脚本的名称即可
但要注意 脚本必须放在server端的/usr/lib/zabbix/alertscripts目录下
添加完报警媒介类型后 在报警媒介新增 微信的报警资料 (添加完后不要忘记点击更新)
6.4 配置报警升级
先创建两个用户组
增加报警媒介
修改用户的权限 只有管理员才能接收信息
点击配置--动作
将已经存在的一项更新一下
然后添加一个新的
添加完成后 点击更新此处只添加了两个用户 三个用户 依次往下即可
第7章 快速配置新主机
7.1 配置zabbix本地
server端是zabbix本地服务器 配置和其他服务器略有不同
下载zabbix-agent
[root@zabbix ~]# rpm -ivhhttps://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.14-1.el7.x86_64.rpm [root@zabbix ~]# vim/etc/zabbix/zabbix_agentd.conf
timeout=30 #238行 把这个取消注释 改成30即可 server端的 agent不需要修改server
要注意的是 server端要使用zabbix-get测试 -s 后的地址要写127.0.0.1
[root@zabbix ~]# systemctl enablezabbix-agent.service [root@zabbix ~]# systemctl startzabbix-agent.service
网页配置(server端有zabbix配置好的 只需要启用即可)
server端有已经配好的两个模板 只需要把tcp和内存的模板套用即可
(还需要把agent的conf文件从web服务器拉过来)
把agent里的conf配置文件都拉过来
[root@zabbix ~]# scp -rproot@172.16.1.7:/etc/zabbix/zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d/
重启一下agent服务
[root@zabbix ~]# systemctl restartzabbix-agent.service
7.2 其他agent端
以db01配置为例 (其实除server端 其他配置除了ip地址都是一样的)
[root@db01 ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.14-1.el7.x86_64.rpm
修改agent配置文件 server指向的ip地址是必须要修改的
[root@db01 ~]# vim /etc/zabbix/zabbix_agentd.conf #以下是修改后的内容 server=172.16.1.71 timeout=30
启动服务并加入开机自启动
[root@db01 ~]# systemctl enablezabbix-agent.service [root@db01 ~]# systemctl startzabbix-agent.service
然后进入网页添加
添加模板 直接套用 (这就是创建模板的好处之一 可以直接套用)
把配置文件拉过来 然后重启agent
[root@db01 ~]# scp -rproot@172.16.1.7:/etc/zabbix/zabbix_agentd.d/* /etc/zabbix/zabbix_agentd.d/ [root@db01 ~]# systemctl restartzabbix-agent.service
第8章 自定义图形配置
8.1 聚合图形配置
聚合图形有助于观察
点击名称 可以进入编辑或查看
点击编辑 增加图片
此处就像是表格 增加行和列 点击更改就可以增加图片
点击图片可以选择图片 右上角可以选择群组(群组就是主机)
下图就是增加完的内容 修改已存在的图片也是点击更改新增也一样
8.2 幻灯片配置
幻灯片一般是在聚合图形的基础上配置
将聚合图形改为幻灯片即可编辑幻灯片
如果只有一个聚合图形 是不需要幻灯片的
点击添加即可 延迟时间就是图片更改时间
8.3 安装图形树
1.安装graphtree
[root@zabbix ~]# cd /usr/share/zabbix [root@zabbix zabbix]# wget https://raw.githubusercontent.com/oneoaas/graphtrees/master/graphtree3.0.4.patch
2.导入补丁包
[root@zabbix zabbix]# yum install -y patch [root@zabbix zabbix]# patch -np0 <graphtree3.0.4.patch [root@zabbix zabbix]# chown -r apache.apacheoneoaas
3.新增apache配置文件
[root@zabbix zabbix]# vim/etc/httpd/conf.d/zabbix.conf alias /zabbix /usr/share/zabbix alias /oneoaas /usr/share/zabbix/oneoaas
4.重启httpd服务
[root@zabbix zabbix]# systemctl restart httpd
第9章 拆分数据库
9.1 拆分配置过程
lap+mysql架构(修改如下两个文件中连接数据库的配置信息)
将zabbix数据库拆分到db01上
要修改以下两个文件的内容
[root@zabbix ~]# ll /etc/zabbix/zabbix_server.conf [root@zabbix ~]# ll /etc/zabbix/web/zabbix.conf.php
1.在新的数据库上创建zabbix库
[root@db01 ~]# mysql -uroot -pnfsnobody123.com mysql> create database zabbix character setutf8 collate utf8_bin; mysql> grant all privileges on zabbix.* tozabbix@'%' identified by 'nfsnobody123.com'; #到此处会提示权限过大 不用理会
2.在旧的zabbix服务器上备份数据库文件,然后倒至新的数据库
[root@zabbix ~]# mysqldump -uroot \ --databases zabbix \ --single-transaction > `date +%f%h`-zabbix.sql [root@zabbix ~]# cat 2018-08-2017-zabbix.sql |mysql -h10.0.0.51 -uzabbix -pnfsnobody123.com zabbix
3.修改zabbixserver的数据库连接信息
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf 这是修改后的内容 dbhost=172.16.1.51 dbname=zabbix dbuser=zabbix dbpassword=nfsnobody123.com [root@m01 ~]# systemctl restart zabbix-server 修改后需要重启
4.修改zabbixweb连接数据库信息
[root@m01 ~]# vim /etc/zabbix/web/zabbix.conf.php 修改后如下图 $db['type']= 'mysql'; $db['server']= '172.16.1.51'; $db['port']= '0'; $db['database'] = 'zabbix'; $db['user'] = 'zabbix'; $db['password'] = 'nfsnobody123.com'; [root@m01 ~]# systemctl restart httpd
9.2 错误案例
如出现如下错误:请检查数据库是否允许远程连接,对应的账户和密码是否配置错误
[root@m01 ~]# tail -f/var/log/zabbix/zabbix_server.log 2189:20180820:173636.941 [z3001] connection todatabase 'zabbix' failed: [2003] can't connect to mysql server on '172.16.1.51'(111)
上一篇: PHP 编码规范(27)
下一篇: ThinkPHP的一些类与方法