Zabbix3.4从入门到精通

心不动则不痛 提交于 2020-01-14 11:58:45

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

注意:如果字体是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 修改报警媒介类型


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)

 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                    

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!