参考博客:https://blog.csdn.net/li_shi_heng/article/details/111873199
准备测试环境为centos 7:
192.168.124.177 | 192.168.124.178 |
---|---|
zabbix-server | zabbix-agent |
安装zabbix-server
首先上传一个zabbix的源
名字
zabbix_Aliyun.repo
内容为
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0
把他复制到yum源里
mv zabbix_Aliyun.repo /etc/yum.repos.d/
开始yum安装zabbix-server
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent mariadb mariadb-server
装完后启动并进入数据库
systemctl start mariadb
mysql
MariaDB [(none)]> create database zabbix charset utf8;
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by'zabbix';
在退出数据库吧数据导入新创建的库里
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql-4.2.8/create.sql.gz | mysql -uzabbix -pzabbix zabbix
然后开始配置zabbix的配置文件
vim /etc/zabbix/zabbix_server.conf
更改内容
100 DBName=zabbix #创建的库名我用的zabbix所以不用改
116 DBUser=zabbix #创建用户名
124 DBPassword=zabbix #创建的用户密码
然后退出保存在更改时区
vim /etc/httpd/conf.d/zabbix.conf
20 php_value date.timezone Asia/Shanghai #改为上海的
保存退出启动即可
[root@localhost ~]# systemctl start zabbix-agent zabbix-server httpd
登录页面测试
成功然后按着指示安装到这一步的密码指的你创建的密码
到这一步用户名一般默认为admin或者Admin密码默认一般为zabbix
改中文
查看图像发现有乱码
修改字符
[root@localhost ~]# cd /usr/share/zabbix/assets/fonts
[root@localhost fonts]# ls
graphfont.ttf
物理机的字体上传上去一个
覆盖原来的
[root@localhost fonts]# ls
graphfont.ttf SIMSUN.TTC
[root@localhost fonts]# mv SIMSUN.TTC graphfont.ttf
mv:是否覆盖"graphfont.ttf"? y
[root@localhost fonts]# ls
graphfont.ttf
再次查看
至此我们的server端安装完毕
开始安装agent端192.168.124.178主机
上传zabbix源并放到/etc/yum.repo下面并安装zabbix-agent
[root@localhost ~]# mv zabbix_Aliyun.repo /etc/yum.repos.d/
[root@localhost ~]# yum -y install zabbix-agent
安装一个nginx并访问两次安装好的跳过此步
[root@localhost ~]# yum -y install gcc gcc-c++ pcre-devel openssl-devel #装依赖
[root@localhost ~]# ls
anaconda-ks.cfg nginx-1.12.2.tar.gz
[root@localhost ~]# tar xf nginx-1.12.2.tar.gz #解包
[root@localhost ~]# cd nginx-1.12.2/ #进入目录
[root@localhost nginx-1.12.2]# ./configure && make && make install #编译安装
[root@localhost nginx-1.12.2]# /usr/local/nginx/sbin/nginx #启动
[root@localhost nginx-1.12.2]# curl -I 192.168.124.178 #模拟访问
修改配置文件连接server端并简单的创建一个检测nginx的pv和uv的键值
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
98 Server=192.168.124.177 #改为server端的ip
139 ServerActive=192.168.124.178 #改为server端的ip
保存退出后在一下目录下写脚本
[root@localhost zabbix]# mkdir nginx
[root@localhost nginx]# pwd
/etc/zabbix/nginx
[root@localhost nginx]# vim nginx.sh
脚本内容
#!/bin/bash
lu=/usr/local/nginx/logs/access.log
case $1 in
pv)
cat $lu | wc -l
;;
uv)
cat $lu | awk '{print $1}' | sort | uniq | wc -l
;;
*)
echo "输入有误"
esac
测试一下是否可用
[root@localhost nginx]# sh nginx.sh pv
2
脚本没问题开始配置配置文件让这个脚本用于zabbix上
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
287 UnsafeUserParameters=0 #去掉注释
296 UserParameter=296 UserParameter=nginx.status[*],/etc/zabbix/nginx/nginx.sh $1
UserParameter=nginx.status[*],/etc/zabbix/nginx/nginx.sh $1
解释一下这句nginx.status这个名字可以随意起是键值名字【】里的星号代表变量,逗号后面是跟的脚本路径$1是交互输入的一个变量。
给这个脚本一个执行权限
[root@localhost ~]# chmod +x /etc/zabbix/nginx/nginx.sh
然后在server端下载一个工具测试一下
yum -y install zabbix-get
[root@localhost ~]# zabbix_get -s 192.168.124.178 -k nginx.status[pv]
2
这说明这个键值创建成功。
开始配置主机的自动发现
开始创建发现规则
规则创建完后设置动作
进来后开始创建
然后
到这自动发现主机完毕
把我们创建的nginx的pv和uv创建成模板
给模板起名字
创建监控项
加入监控pv
加入监控uv
检测端口存活
然后添加触发器
开始创建
然后添加恢复的数值
在添加图形化
把创建好的模板加入进去也可以先创建模板在添加主机
查看图形
然后设置邮件报警
上传一个报警脚本在server端并给执行权限
[root@localhost ~]# mv baojing.py /usr/lib/zabbix/alertscripts/
[root@localhost ~]# chmod +x /usr/lib/zabbix/alertscripts/baojing.py
报警文件的内容
#!/usr/bin/python
# _*_ coding:utf-8 _*_
import smtplib, sys
from email.mime.text import MIMEText
from email.utils import formataddr
def send_mail(to_email, subject, message):
# 邮箱地址和邮箱密码
my_sender = 'qq邮箱'
my_pass = 'qq的邮箱授权吗'
my_user = to_email
# 发送邮件的信息主体,发件人,收件人,内容
msg = MIMEText(message, 'plain', 'utf-8')
msg['From'] = formataddr(["Zabbix", my_sender])
msg['To'] = formataddr(["Ops", my_user])
msg['Subject'] = subject
# 发送邮件
server = smtplib.SMTP_SSL("smtp.qq.com", 465)
server.login(my_sender, my_pass)
server.sendmail(my_sender, [my_user, ], msg.as_string())
server.quit()
if __name__ == '__main__':
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
然后报警媒介
配置动作
动作之后创建操作
至此邮件报警配置完毕测试一下
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop
发送成功