Zabbix3.4从入门到精通

zabbix-基础

第1章 关于zabbix

1.1 为何要使用监控

1.对系统不间断实时监控
2.实时反馈系统当前状态
3.保证服务可靠性安全性
4.保证业务持续稳定运行
php

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)
node

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.业务监控
python

第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-servermysql

[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数据库以及用户
#启动数据库,加入开机自启ios

[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.导入基础架构和数据nginx

[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中编辑数据库配置git

[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设置已经完成了配置。github

[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服务web

[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

注意:若是字体是ttc,修改成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}'
  1. 使用zabbix_agentd -p | grep KEY,若是获取到值则正常
[root@web01 zabbix_agentd.d]# zabbix_agentd -p|grep-i Mem_Num
Mem_Num[t|38.501]
  1. 在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 配置单条件触发器

ESTAB超过500就报警



检查是否添加成功

5.2 多条件触发器


内存使用剩余不足百分之30且swap使用超过1%就报警

检查

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 修改报警媒介类型

image.png

6.2.3 添加报警媒介


image.png
添加后 点击更新 至此 邮件配置完成

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目录下

添加完报警媒介类型后 在报警媒介新增 微信的报警资料  (添加完后不要忘记点击更新)
image.png

6.4 配置报警升级

先建立两个用户组


增长报警媒介
image.png
修改用户的权限 只有管理员才能接收信息

点击配置--动做

将已经存在的一项更新一下

而后添加一个新的

添加完成后 点击更新此处只添加了两个用户  三个用户 依次往下便可

第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)