2-zabbix详细配置

zabbix详细配置

zabbix详细配置 1

1. zabbix数据库分离 2

2. 自定义监控项 9

3. 宏 28

4. 触发器 31

5. 报警 46

6. 自定义模块 97

zabbix数据库分离

流程

数据库授权

备份zabbix

将备份的数据库文件导入到新的数据库中

修改zabbix-server配置文件

操作

zabbix应该处在在网环境中,而数据库应该处在内网环境中,如果在旧的数据库服务器上进行备份,若是全库备份则无需在新数据库上创建库,单库备份,需要在新的数据库上创建数据库

结构

zabbix-server : 192.168.1.10(外网) 192.168.2.10(内网)

mysql:192.168.1.11(外网) 192.168.2.11(内网)

web02:192.168.1.12(外网)192.168.2.12(内网)

在192.168.1.12上创建数据库mysql5.7,二进制包安装mysql5.7

卸载掉之前的版本

确保不会出现mariadb
yum -y remove mariadb-libs.x86_64

解包

tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /usr/src

创建软连接(便于版本更换和回滚)

ln -s /usr/src/mysql-5.7.22-linux-glibc2.12-x86_64/ /usr/local/mysql

创建mysql用户

useradd -M -s /sbin/nologin mysql

配置环境变量

echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile

修改配置文件

vim /etc/my.cnf
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
# socket=/var/lib/mysql/mysql.sock

[mysqld]
#设置3306端口
port = 3306
# socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

初始化数据库

mysqld --user=mysql --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
保留密码

修改权限

chown -R mysql:mysql /usr/local/mysql

创建启动连接

cd /usr/local/mysql/
cp -a support-files/mysql.server /etc/init.d/mysqld

修改密码流程

跳过验证密码
启动数据库

service mysqld start --skip-grant-tables

修改连接数据库的root密码

mysql -uroot

update mysql.user set authentication_string=password('123') where user='root' and host='localhost';

flush privileges;

重启

service mysqld restart

下次登陆需要先修改密码

mysql -uroot -p123

2-zabbix详细配置

set password=password('123');

flush privileges;

通过验证密码直接修改
service mysqld start
mysql -uroot -p'系统密码'
set password=password('复杂点的密码');
mysql -uroot -p"密码"

创建库

create database zabbix character set utf8 collate utf8_bin;

授权

grant all privileges on zabbix.* to zabbix@'%' identified by 'CHENCHENxihuanLJH';

导库

server端

mysqldump -uroot zabbix > `date +%F`-zabbix.sql
2-zabbix详细配置
直接远程将数据库发到指定主机IP,不需要scp
cat 2020-10-16-zabbix.sql | mysql -uzabbix -p'CHENCHENxihuanLJH' -h 192.168.1.12 zabbix

修改zabbix server的数据库连接信息

vim /etc/zabbix/zabbix_server.conf

书库主机IP
2-zabbix详细配置
数据库名
2-zabbix详细配置
登录数据库用户名
2-zabbix详细配置
登录数据库使用的密码(这里和管理员密码统一了)
2-zabbix详细配置

修改zabbix web(httpd)连接数据库信息

vim /etc/zabbix/web/zabbix.conf.php

2-zabbix详细配置

重启

systemctl restart zabbix-server httpd

自定义监控项

简介

我们可以自己添加自己需要的监控项

练习一:添加tps监控项

查看取值

tps:每秒事务处理量

查看方式

下载sysstat
2-zabbix详细配置

取sda磁盘tps值

iostat | awk '/^sda/{print $2}'

在目录中新增监控项

vim /etc/zabbix/zabbix_agentd.d/iostat.conf

格式:UserParameter=<key>,<shell command> (键值对)
UserParameter=iotps,iostat | awk '/^sda/{print $2}'
2-zabbix详细配置
重启agent
systemctl restart zabbix-agent.service

add:当然也可以选择直接在主配置文件中修改,这里制定了include目录

2-zabbix详细配置
2-zabbix详细配置

先进性客户端服务端测试

客户端测试设置的监控项是否正常

zabbix_agentd -p | grep iotps
2-zabbix详细配置

在zabbixserver端获取zabbixagent端自定义的监控是否正常

yum -y install zabbix-get
格式:
zabbix_get -s IP_addr -k KEY
2-zabbix详细配置

zabbixweb前端页面进行关联展示

点击配置-主机-对应主机-监控项-创建监控项-名称-键值(监控项目名称)信息类型-单位

点击检测中-最新数据-等待数据

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

键值和键名一样即可

2-zabbix详细配置

点击添加

寻找方式

1:监测,最新数据
2-zabbix详细配置
2-zabbix详细配置
如果管理的服务器结构足够复杂,可以通过选择主机群组和主机配合名称查询
2:配置,主机,监控项
2-zabbix详细配置

练习二:添加11项TCP监听状态(也可以进行克隆添加进行配置)

11中监听状态参考

使用man netstat即可查询

vim tcp_state.txt

CLOSING
LISTEN
SYN_SENT
SYN_RECV
ESTABLISHED
FIN_WAIT1
CLOSE_WAIT
FIN_WAIT2
LAST_ACK
TIME_WAIT
CLOSE

加入到配置文件

for i in `cat tcp_state.txt` ;do echo "UserParameter=${i},netstat -ant|grep -c $i" >>/etc/zabbix/zabbix_agentd.d/tcp_stat.conf; done

此时不能用-p选项,查看进程需要root权限

cat /etc/zabbix/zabbix_agentd.d/tcp_stat.conf

2-zabbix详细配置

重启服务

systemctl restart zabbix-agent.service

生产环境中使用:zabbix_server -R config_cache_reload

服务端找几个监听状态测试一下

下载zabbix_get工具

yum -y install zabbix-get

zabbix_get -s 192.168.1.11 -k ESTABLISHED

2-zabbix详细配置

添加监控项

创建一个TCP应用集

2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

创建监控项

2-zabbix详细配置
2-zabbix详细配置

配置

2-zabbix详细配置

浏览器上按F12,再点击添加进行批量添加,出现一个item.php

2-zabbix详细配置

拷贝post上去的URL和数据

2-zabbix详细配置
2-zabbix详细配置
复制数据
2-zabbix详细配置

命令行批量提交

vim tcp_state.txt
因为页面已经添加了ESTABLISH,所以删除ESTABLISH
for i in `cat tcp_state.txt`;do curl -X POST -d "复制的数据" http://192.168.1.10/zabbix/items.php;done
复制的数据需要修改变量
2-zabbix详细配置
执行
2-zabbix详细配置
出现报错,因为没有登录权限,需要使用curl模拟登陆
2-zabbix详细配置
退出登录,登陆之前先按F12,找index.php页面点击并查找提交的数据
2-zabbix详细配置
2-zabbix详细配置
内容为

name=Admin&password=zabbix&autologin=1&enter=Sign+in

模拟登陆
curl -L -X POST -d "name=Admin&password=zabbix&autologin=1&enter=Sign+in" -b cookie -c cookie http://192.168.1.10/zabbix/index.php
-L 选项可以显示出跳转信息 之前保存的界面url也用上
生成cookie文件

2-zabbix详细配置
取后16位替换sid

awk '/zbx/{print $NF}' cookice |cut -b 17-32

2-zabbix详细配置

2-zabbix详细配置
再次上传
for i in `cat tcp_state.txt`;do curl -X POST -b cookie -c cookie -d "复制的数据" http://192.168.1.10/zabbix/items.php;done
复制的数据中应该有name、key和sid三处修改
修改成功

2-zabbix详细配置
去web界面配置
2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置
看似复杂,但是其实就两步,第一步产生登录的cookie,第二步抓取参数(登录url、name、key、SID)并上传数据
如果没有出现参数可以使用 zabbix_server -R config_cache_reload 刷新
zabbix默认单位是KB如果自定义的值的单位是字节或者是MB,一定要使用乘除法在定义时就统一单位,换算成字节

概念

宏(Macros)的作用是便于在模板,Item、Trigger中对数据进行变量引用。宏的名称为{$名称},宏名称定义可以使用A-Z、0-9、_。例如:net.tcp.service[ssh,{$SSH_PORT}],其中{$SSH_PORT}就是一个宏,可以在不同主机上配置不同的值。其实宏的概念有点类似于shell脚本中的变量,主要便于使用。

查看

2-zabbix详细配置

2-zabbix详细配置

常见的宏变量

主机相关

{HOST.NAME} 主机名称

{HOST.IP} 主机IP

{HOST.METADATA} 设备元数据(自动注册的时候会发这种宏的通知给你)

时间相关

{DATE} 当前时间

{EVENT.DATE} {EVENT.TIME} 告警时间

触发器相关

{TRIGGER.SEVERITY} 触发器告警等级

{TRIGGER.NAME} 触发器名

{TRIGGER.KEY1} 触发器告警项目

{TRIGGER.STATUS} 触发器状态

监控项相关

{ITEM.NAME}:{ITEM.VALUE} 监控项名

动作(Action)相关

{ACTION.ID} Action(动作)的数字标识

{ACTION.NAME} Action(动作)名

自动发现相关

{DISCOVERY.DEVICE.IPADDRESS} 被发现的设备地址

{DISCOVERY.DEVICE.STATUS} 被发现设备的状态: 可能是Up 或 Down

事件(EVENT)相关

{EVENT.ACK.STATUS} 事件的确认状态

{EVENT.AGE} 触发动作的事件持续时间

{EVENT.ID} 触发动作的事件数字标识

{EVENT.STATUS} 触发动作的事件状态

报警脚本相关

{ALERT.MESSAGE} 报警脚本具体内容

{ALERT.SENDTO} 报警时的收件人

{ALERT.SUBJECT} 报警信息的主题

如果想查找更多关于zabbix的内置宏变量,可以去官网查找更详细的信息:

https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location

触发器

触发器:

zabbix中监控项仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,"触发器(Trigger)"正是用于为监控项所收集的数据定义阈值,每一个触发器仅能管理至一个监控项,但是可以为一个监控项同时使用多个触发器;意思就是,为一个监控项定义多个具有不同阈值的触发器,可以实现不同级别的报警。一个触发器由一个表达式构成,它定义了监控项所采集的数据的一个阈值,一旦某次采集的数据超出了触发器定义的阈值,触发器状态将会转为"problem";而当采取的数据再次回归至合理的范围内时,其状态将重新返回到"OK"。

触发器函数的分类

2-zabbix详细配置

常用触发函数

diff 判断最近两个值是否相同

比较最近数据的值与前一个数据的值,如果值相等,则函数运行结果为0,不同则为1
应用场景:对比passwd是否修改,检测主机名是否被修改等;

2-zabbix详细配置

nodata 判断是否能接受到数据

检测一段时间内能否接收到数据,返回值为1表示没有接收到数据,返回值为0表示接收到数据了。该函数中需要输入时间参数

2-zabbix详细配置

last 获取最新的数据

获取最近一段时间内或指定个数的数据

格式:last(sec|#num,<time_shift>)

last(3m)=N #最近3分钟内该值等于N
last(#3)>N #第3次监控数值大于N
last(#3,3m)<N #最近3分钟内第3次的监控数值小于N

应用场景:求系统中运行的进程数

2-zabbix详细配置

max 最大值(min 最小值)

指在一段时间内,或者指定的数据个数中,找出最大值。该函数只支持float和int数据类型

2-zabbix详细配置

avg 求平均值

指在一段时间内,或者指定的数据个数中,求平均值,该函数只支持float和int数据类型。

2-zabbix详细配置

触发器创建

核心配置界面

2-zabbix详细配置

TPS触发器添加

主机-配置-触发器-创建触发器

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

主机监控项出现

2-zabbix详细配置

用户登录触发器

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

测试一下

2-zabbix详细配置
2-zabbix详细配置
大于2的数都会触发
2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

监控项中修改报警触发响应时间

找到这个监控项修改触发间隔
2-zabbix详细配置
2-zabbix详细配置
再点击更新就好了

多了一个触发器

2-zabbix详细配置

开启web界面报警模式

实现web界面和声音报警
2-zabbix详细配置

新建两个11的窗口

2-zabbix详细配置

查看仪表盘并标记

2-zabbix详细配置
不仅如此,还会有一般严重的报警声音
2-zabbix详细配置
2-zabbix详细配置

每个默认监控项都会有一个键值,我们使用默认键值时不需要自己创建键值,直接使用就好,我们可以为具体某一个触发器寻找监控项,也可以自创监控项,然后在建立自己设定的触发器

2-zabbix详细配置

自创的键

2-zabbix详细配置

可以直接拿出这个值

2-zabbix详细配置

2-zabbix详细配置

报警

简介

当zabbix中的触发器,达到阈值时,会触发告警机制,zabbix支持使用邮件,短信,电话,微信,钉钉等方式实现告警 。

发送告警流程

zabbix发送告警流程为,客户端定期采集指定监控项的的相关数据,然后发送给zabbix-server服务器,zabbix-server对数据进程存储和分析,如果监控项的值满级告警表达式中的阈值,则会触发一个告警,但告警并不会主动通知给用户,此时再zabbix-web页面会看到故障信息。如果此故障同时需要发送个用户,需要动作(Action)页面中对告警信息进行规制匹配,并按照设置发送用户信息或执行命令。

2-zabbix详细配置

Action(动作)

Action指定的就是发生了什么事,根据一定的条件来采取什么样的措施,可以发送消息,也可以是执行命令。

Action中的事件来源有四种:触发器,网络自动发现,Agent主动注册和内部事件(Internal)。

Action配置详解

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

邮件报警

思路

2-zabbix详细配置

centos6不支持zabbix自带email,安装mailx实现脚本发送email

安装sendmail和mailx

yum -y install sendmail mailx
systemctl start sendmail

在家目录创建一个.sh认证文件,并给它执行权限

vim A.sh
#!/bin/bash
mkdir /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
chmod +x A.sh
sh A.sh

vim /etc/mail.rc

set smtp-use-starttls
set smtp=smtp.qq.com
set from=自己的qq邮箱
set smtp-auth-user=自己的qq邮箱
set smtp-auth-password=你的密钥
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs/

发送邮件

echo "邮件内容" | mail -s "邮件标题" QQ号@qq.com
2-zabbix详细配置

发送副本

echo "hello world" | mail -s "邮件标题" -a 文件路径 QQ号@qq.com
2-zabbix详细配置

cd /usr/lib/zabbix/alertscripts/

vim email_notification.sh

#!/bin/bash
to=$1
subject=$2
File=/tmp/mail.txt
echo $3 > $File
dos2unix -k $File
cat $File | mail -s "$subject" "$to"
在/tmp下创建文件mail.txt写入内容

执行

./email_notification.sh 503197281@qq.com test 123
2-zabbix详细配置

管理报警媒介类型-创建媒体类型

报警媒介类型配置(发件人)
2-zabbix详细配置
2-zabbix详细配置
配置动作
2-zabbix详细配置
2-zabbix详细配置
配置收件人
2-zabbix详细配置
2-zabbix详细配置

开启报警方式

2-zabbix详细配置

启用后点进去,然后再点操作

模板:
默认标题

故障{TRIGGER.STATUS},服务器名:{HOST.NAME}发生: {TRIGGER.NAME}故障!

消息界面

告警主机:{HOST.NAME}
告警主机IP地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

操作界面详解
2-zabbix详细配置
配置恢复动作:
2-zabbix详细配置
模板:将“故障”修改成已恢复即可

进入发件人配置界面

2-zabbix详细配置

2-zabbix详细配置

授权配置(qq)

登录qq邮箱,选择设置、账户
2-zabbix详细配置
先用手机发送,然后点击我已发送
2-zabbix详细配置
使用手机发送
2-zabbix详细配置
复制授权码
2-zabbix详细配置

附163配置界面:

2-zabbix详细配置

授权配置(网易)

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

加入授权码,点击更新

2-zabbix详细配置

2-zabbix详细配置

配置收件人

2-zabbix详细配置

2-zabbix详细配置

创建三个用户显示邮件发送结果

问题报警

2-zabbix详细配置

解决报警

2-zabbix详细配置

可以在报表动作日志中查看日志

2-zabbix详细配置

钉钉报警

登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内.然后点击群右上角的"群机器人"->"添加机器人"->"自定义",记录该机器人的webhook值。

2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

服务器端添加测试脚本

vim /usr/lib/zabbix/alertscripts/dingding.py

#!/usr/bin/python
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=552a6b58325ccaa206fac36c45267e1e14d938bc5dd97e0c5391d81aa5fd6238"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
        "msgtype": "text",
        "text": {
                "content":text
        },
        "at": {
                "atMobiles": [
                        user
                        ],
                        "isAtAll": False
        }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/dingding.log"):
        f=open("/usr/lib/zabbix/dingding.log","a+")
else:
        f=open("/usr/lib/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
        f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
        f.close()
else:
        f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送失败"+"\n"+str(text))
        f.close()
脚本内容补充说明:
2-zabbix详细配置

yum -y install python-pip; pip install --upgrade pip

pip install requests

touch /usr/lib/zabbix/dingding.log

测试

/usr/lib/zabbix/alertscripts/dingding.py 13021020077 告警 服务器告警
2-zabbix详细配置

WEB界面添加监控方式

创建媒体类型

2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

添加收件人信息:

2-zabbix详细配置

微信报警

首先申请企业微信

https://qy.weixin.qq.com/

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

2-zabbix详细配置

记录AgentID和Secret:

2-zabbix详细配置

点击我的企业,企业信息可以查看企业ID即CropID.

2-zabbix详细配置

查看部门id

2-zabbix详细配置

测试微信接口

2-zabbix详细配置

创建脚本

cd /usr/lib/zabbix/alertscripts/

vim weixin.py

#!/usr/bin/python
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=552a6b58325ccaa206fac36c45267e1e14d938bc5dd97e0c5391d81aa5fd6238"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
        "msgtype": "text",
        "text": {
                "content":text
        },
        "at": {
                "atMobiles": [
                        user
                        ],
                        "isAtAll": False
        }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/usr/lib/zabbix/dingding.log"):
        f=open("/usr/lib/zabbix/dingding.log","a+")
else:
        f=open("/usr/lib/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
        f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
        f.close()
else:
        f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送失败"+"\n"+str(text))
        f.close()

chmod +x weixin.py

/usr/lib/zabbix/alertscripts/weixin.py 李嘉豪 报警 服务器崩了

测试

2-zabbix详细配置

web界面操作

加入微信报警方式

2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

添加收件人

2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

配置动作

2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置
2-zabbix详细配置

自定义模块

往往默认监控项和实际生产环境需求并不符合,所以需要自定义模板监控项和触发器,而且需要多调试才能找到最适合当前环境的监控阈值

检测用户文件修改

在监控项中配置

2-zabbix详细配置

2-zabbix详细配置

点击更新

检测

2-zabbix详细配置

2-zabbix详细配置

为什么会说解决了呢?因为每2秒都会与前两秒进行对比,第二次对比并不会发现有所变化,所以报警解决

发布者:LJH,转发请注明出处:https://www.ljh.cool/36722.html

(0)
上一篇 2023年4月20日 上午2:36
下一篇 2023年4月20日 上午2:53

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注