文章内容是作者本人编写,之前一直放在word文档中,突然有闲情转移到博客上来了,欢迎后续观看者有问题找我探讨~~~
废话不多说,先说下原理吧
通过c/s模式采集数据,基于b/s模式进行数据的分析及展示
Agent 配置数据采集项
Server 收集数据并进行分析,最终通过web gui进行数据的展示
Database 历史数据的存储
Proxy 分布式监控程序,对agent端的数据进行接收,转发到Server
Web gui 数据的展示,一般与Server在同一机器
Java gateway 2.0以后版本引入的工具, 类似agentd,但是只用于Java方面。
Sender 主动发送数据至Server,一般配置于agent端
Get 主动收集数据,一般应用与server或者proxy,手动触发
zabbix_agentd agent端的守护进程,负责收集数据
zabbix_server zabbix服务端守护进程,接收并分析数据
zabbix_get 手动采集数据工具,一般用于server端对agent端的测试
zabbix_sender zabbix工具,用于发送数据给server或者proxy
zabbix_proxy zabbix代理守护进程。功能类似server,它只是一个中转站
zabbix_java_gateway Java网关,类似agentd
主动模式: agent端根据server端的具体请求来主动返还数据
被动模式: server端根据监控列表项对agent进行数据的索取
Host 需要被监控的设备,如主机、路由器、打印机等等
Host group 被监控主机的逻辑分组,可配置模板
Items 监控项
Application 应用组,一组监控项的集合
Keys 具体的监控值
Trigger 阀值,主要对监控项进行进行评估
Event 事件,对一个事物的描述,如状态改变、主机列入、登入
Action 动作,实现定义好的operations(操作),如脚本、邮件
Escalation 执行action中的operations的定制场景;一连串的发送通知、执行远程命令
Media 媒介,传递信息的方式
Notification 通过media发送给用户的事件信息
Remote commend 远程命令
Template 模板,对实现定义好的itmes、application、action等
Server 192.168.2.111
Database 192.168.2.111
Agent 192.168.2.112
rpm -qa | grep "iptables" | xargs rpm -e --nodeps rpm -qa | grep "firewall" | xargs rpm -e --nodeps sed -i ‘s/enforcing/disabled/g‘ /etc/selinux/config
mount -t iso9660 -o loop /opt/CentOS-7-x86_64-Everything-1708.iso /mnt/ echo ‘[ever]‘ > /etc/yum.repos.d/local.repo sed -i ‘$a name=ever‘ /etc/yum.repos.d/local.repo sed -i ‘$a baseurl=file:///mnt‘ /etc/yum.repos.d/local.repo sed -i ‘$a gpgcheck=0‘ /etc/yum.repos.d/local.repo sed -i ‘$a enable=1‘ /etc/yum.repos.d/local.repo rm -rf /etc/yum.repos.d/CentOS-* yum makecache
安装httpd与php
yum -y install httpd php gcc gcc-c++ ncurses ncurses-devel autoconf
安装zabbix及相应程序
ls /opt #这下面这些包是得去zabbix官网下载的包 fping-3.10-1.el7.x86_64.rpm iksemel-1.4-2.el7.centos.x86_64.rpm iksemel-devel-1.4-2.el7.centos.x86_64.rpm iksemel-utils-1.4-2.el7.centos.x86_64.rpm zabbix-server-mysql-3.4.10-1.el7.x86_64.rpm zabbix-web-3.4.10-1.el7.noarch.rpm zabbix-web-mysql-3.4.10-1.el7.noarch.rpm cd /opt/ yum -y install ./*.rpm
卸载默认数据库
rpm -qa | grep "mysql" | xargs rpm -e --nodeps rpm -qa | grep "mariadb*" | xargs rpm -e --nodeps
安装cmake及相应插件
wget https://cmake.org/files/v3.10/cmake-3.10.1.tar.gz tar -zxf cmake-3.10.1.tar.gz -C /usr/local/ cd /usr/local/cmake-3.10.1 ./bootstrap make && make install
创建mysql守护进程用户
groupadd -g 306 mysql useradd -g mysql -s /sbin/nologin -M mysql
Mysql的安装
cd mysql-5.6.26 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DWITH_DEBUG=0 make -j `grep "processor" /proc/cpuinfo | wc -l` make install
Mysql的配置
cp support-files/my-default.cnf /etc/my.cnf sed -i ‘$a basedir=/usr/local/mysql‘ /etc/my.cnf cp support-files/mysql.server /etc/init.d/mysqld chmod a+x /etc/init.d/mysqld sed -i ‘$a PATH=$PATH:/usr/local/mysql/bin‘ /etc/profile sed -i ‘$a export PATH‘ /etc/profile source /etc/profile
初始化并启动
cd /usr/local/mysql chown -R mysql:mysql * ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ chown -R root * chown -R mysql data service mysqld start
登入数据库
mysql -uroot -p
创建数据库,并授权用户
CREATE DATABASE IF NOT EXISTS zabbix DEFAULT CHARSET utf8 COLLATE utf8_general_ci; grant all privileges on zabbix.* to ‘zabbix‘@‘%‘ identified by ‘zabbix‘; flush privileges;
Zabbix数据信息的导入
cd /usr/share/doc/zabbix-server-mysql-3.4.10/ gunzip -d create.sql.gz mysql -uzabbix -pzabbix -h192.168.2.111 zabbix < create.sql
vi /etc/zabbix/zabbix_server.conf LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=192.168.2.111 指定zabbix数据库存储位置 DBName=zabbix 指定zabbix数据库名 DBUser=zabbix 指定zabbix数据库登录用户 DBPassword=zabbix 指定数据库远程连接密码 #DBSocket=/var/lib/mysql/mysql.sock 指定sock连接文件 SNMPTrapperFile=/var/log/snmptt/snmptt.log AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts
修改php默认时区
vim /etc/php.ini date.timezone = Asia/Shanghai
启动http与zabbix
systemctl start httpd.service systemctl start zabbix-server systemctl enable httpd.service systemctl enable zabbix-server
Web界面的配置
更改中文
在windows的目录C:\Windows\Fonts下面寻找一份自己喜欢的字体,上传至Server 的zabbix字体目录下面
将这个目录下面的原有链接文件干掉,并将自己上传的文件改成原有的这个文件即可,其他版本可能还需要仅fonts的配置文件里面更改支持中文
至此server端的部署完毕
Agent的安装不需要依赖任何插件,直接安装即可
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.10-1.el7.x86_64.rpm wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-sender-3.4.10-1.el7.x86_64.rpm rpm -ivh zabbix-sender-3.4.10-1.el7.x86_64.rpm rpm -ivh zabbix-agent-3.4.10-1.el7.x86_64.rpm
vim zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid # 设置agent的pid文件位置
LogFile=/var/log/zabbix/zabbix_agentd.log # 设置agent的日志文件位置
LogFileSize=0 # 设置agent的日志文件大小
Server=192.168.2.111 # 设置zabbix server的地址
ServerActive=192.168.2.111 # 设置主动模式,并且填写server地址
Hostname=192.168.2.112 # 设置server能解析agent的主机名或IP
Include=/etc/zabbix/zabbix_agentd.d/*.conf # 设置扩展配置目录
systemctl start zabbix-agent.service systemctl enable zabbix-agent.service systemctl is-enabled zabbix-agent.service
至此主机添加完毕,需要注意的是,zabbix刚加入被监控主机,需要一段时间来激活主机
切换zabbix的扩展配置目录
cd /etc/zabbix/zabbix_agentd.d
生成网卡流量监控脚本 network.sh
#!/bin/bash
usage() {
echo "Useage : $0"
echo "eg. sh $0 eth0"
exit 1
}
if [ $# -lt 1 ]
then
usage
fi
eth=$1
timer=1
in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $1 }‘)
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $9 }‘)
x=1
while [ $x -le 2 ]
do
sleep ${timer}
in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $1 }‘)
out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $9 }‘)
dif_in=$(((in-in_old)/timer))
dif_in=$((dif_in/1024))
dif_out=$(((out-out_old)/timer))
dif_out=$((dif_out/1024))
ct=$(date +"%F %H:%M:%S")
echo "${ct} -- IN: ${dif_in} KByte/s OUT: ${dif_out} KByte/s"
in_old=${in}
out_old=${out}
x=3
done
exit 0
将脚本加入到Items自定义文件中
UserParameter=Network_in,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk ‘{print $5}‘
UserParameter=Network_out,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk ‘{print $8}‘
重启agent,server测试Keys
systemctl restart zabbix-agent
#agent端
zabbix_get -s 192.168.2.112 -p 10050 -k "Network_out"
#server端
web界面添加item
至此自定义keys已经创建
单一图形的添加完毕,下面介绍整合图形的创建
至此聚合图形创建完毕
触发器用来定义阀值,下面演示创建触发器
触发器创建完毕
告警可以使用命令或者邮件或者脚本程序等等,我这里做演示仅用远程命令
下面演示Actions的创建:Configure >> Actions >> create action
一般触发器主要就是定义这些内容
自定义监控磁盘使用使用率
自定义监控磁盘IO
自定义监控CPU负载
自定义监控内存
自定义监控网卡流量
# cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf | tail -n2
UserParameter=Network_in,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk ‘{print $5}‘
UserParameter=Network_out,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk ‘{print $8}‘
下面附network.sh脚本内容
#!/bin/bash
usage() {
echo "Useage : $0"
echo "eg. sh $0 eth0"
exit 1
}
if [ $# -lt 1 ]
then
usage
fi
eth=$1
timer=1
in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $1 }‘)
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $9 }‘)
x=1
while [ $x -le 2 ]
do
sleep ${timer}
in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $1 }‘)
out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk ‘{print $9 }‘)
dif_in=$(((in-in_old)/timer))
dif_in=$((dif_in/1024))
dif_out=$(((out-out_old)/timer))
dif_out=$((dif_out/1024))
ct=$(date +"%F %H:%M:%S")
echo "${ct} -- IN: ${dif_in} KByte/s OUT: ${dif_out} KByte/s"
in_old=${in}
out_old=${out}
x=3
done
exit 0
自定义监控端口
自定义监控用户文件使用量
自定义监控日志文件
自定义监控URL
文件已上传至博客园的存储处,其实看那个更加好使,因为图片的清晰度比博客这个强,但是我怕下次又忘记文档放哪去了,先写到博客上再说。。。
原文:https://www.cnblogs.com/guge-94/p/11290506.html