一.安装zabbix及解决图表方块字
php
1.安装zabbix(配置好相关yum源,解决包依赖问题,参考官方文档)mysql
yum install zabbix-agent zabbix-server-mysql zabbix-web-mysql mariadb-server -y
linux
2.更换PHP的时区web
vim /etc/php.inisql
data.timezone = "Asia/Shanghai"shell
3.配置mysql,解决编码问题vim
vim /etc/my.cnfwindows
character-set-server=utf8
centos
mysql -uroot -p<password>bash
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
cd /usr/share/doc/zabbix-server-mysql-3.0.3/
zcat create.sql.gz | mysql -uroot zabbix
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
4.其它配置
关闭sellinx
firewall-cmd --add-service=http
firewall-cmd --add-service=http --permanent
5.解决中文语言状态预览方块字
/usr/share/zabbix/fonts (linux下zabbix字体存路径 )到windows下载字体到此目录字体的TTF后缀改成小写
/usr/share/zabbix/include/defines.inc.php #修改字体的配置文件
define('ZBX_GRAPH_FONT_NAME', 'SIMKAI'); // font file name
二.添加被监控主机
1.安装客户端
yum install zabbix-agent.x86_64
2.配置客户端
/etc/zabbix/zabbix_agentd.conf
Server=192.168.178.134
ServerActive=192.168.178.134
Hostname=centos7 #和服务器主机名称保持一致
3.服务器配置
配置--主机--建立主机
1.在主机上建立监控项
配置--主机--监控项--建立监控项
2.key的使用
proc.num[<name>,<user>,<state>,<cmdline>]
proc.num[,,,] # name,user,state为默认值
proc.num # 查看全部的里程,客户端已经安装了代理,代理会自动的监测系统中的不少信息
3.安装zabbix-get获取客户端数据
yum install zabbix-get -y # 须要配置好yum源
4.zabbix_get的使用
zabbix_get -s 被监测服务器地址 -k 监测的key
zabbix_get -s 192.168.178.132 -k proc.num[,,,]
zabbix_get -s 192.168.178.132 -k proc.num[,zabbix,] # 四个,号后面不使用的,,能够不写,前面的,号不能忽略
zabbix_get -s 192.168.178.132 -k proc.num[,,,pro] # pro为第四个值(cmdline),匹配关键字含有pro的进程
cmdline-->写上一个关键字,好比写pro,那么在ps aux里面command部分里面出现pro的进程都匹配
5.在服务器上建立主机图表
配置---主机---建立图形
--------------------------------------------------------------------------------------------------------------------------------------------------
测试多进程监控脚本
#!/bin/bash
while :
do
echo 1 > /dev/null
done
--------------------------------------------------
#!/bin/bash
if [ $# -ne 1]; then
echo '必须跟一个数字'
exit 1
fi
echo "终止测试,请连续按ctrl+c"
trap 'killall -9 sh &> /dev/null ; rm -rf /tmp/aa*.sh' INT
for i in `seq 1 $1`
do
cp /root/aa.sh /tmp/aa${i}.sh
sh /tmp/aa${i}.sh &
done
--------------------------------------------------------------------------------------------------------------------------------------------------
6.自定义KEY
在客户端进行设置
/etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/ # 在此目录写自定义脚本
语法: UserParameter=key的名称,命令
例子:UserParameter=num-of,ps aux --no-header | wc -l
zabbix_get -s 192.168.178.132 -k num-of # 在服务器上执行触发客户端执行num-of的命令或脚本并将执行的结果回传给服务器
语法:UserParameter=key的名称[*],命令 $1
例子:UserParameter=pro[*],echo $1
zabbix_get -s 192.168.178.132 -k pro[1]
配置--主机--监控项--建立监控项
自定义的键值在选择按钮列表是找不到键值的,须要手工录入
四.触发器的使用及报警
1.触发器的建立,针对某一个监控项
配置--主机--建立触发器
仅仅建立触发还不够,必须建立一个动做,当知足触发器的条件的话,而后要执行什么操做
2.动态的建立
配置---动做--事件来源[触发器]--建立动做
建立了一个动做--->当触发器触发的时候,则把信息发送给指定的人
当centos7.1上进程超过100的时则触发了这个条件,触发了动做会产生一些信息而且将这些信息发送给指定的人。
3.用户管理
管理--用户
决定admin收到信息以后要执行的操做,决定使用什么方式报警:
a.邮件
决定admin这个用户以什么邮件地址做为发件人
b.脚本
4.媒介类型的建立与修改
管理--报警媒介类型--建立媒介类型
5.微信警报 (企业公众号)
配置一个触发器同,当cpu超过80%的时候就开始微信报警
/etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts # 将微信脚本放至此目录
/usr/lib/zabbix/alertscripts/WeiXin-Private-API/config.php # 修改此文件
/usr/lib/zabbix/alertscripts/WeiXin-Private-API/test.php
$testFakeId = "$argv[1]"; # 发送给指定的用户
$msg="$argv[3]"; # 发送的信息内容
./weixin "owZmQwSvaFm1RmaYvmAdhoaemoDU" '' 'hello lincx' # 测试消息发送
五.其它设置
1.应用集的定义
把相关的监控项定义一个应用集,对监控项进行分类
配置--主机--应用集--建立应用集
2.主机组定义
基于服务器进行分类,对类型相同的服务器进行分组
3.模板的建立(应用集、监控项、触发器 、图形、聚合图形、自动发现、Web监测,元素的集合被主机引用)
4.聚合图形的使用(基于图形)
5.幻灯片的使用(每隔一时间内自动切换多个聚合图形)
6.网络拓扑图
插入背景图(管理--通常--图片--建立图片)用于拓扑区分地理位置
7.宏定义
{$变量名} # 通常使用大写字母,全局性引用
全局性的设置
主机级别的变量
管理--通常--宏--添加--更新
监控项的名称、键值的参数能够引用自定义的宏xx[,{$AA},]
网络拓扑图不能引用这种变量,使用的是内置的变量例如{HOST,NAME}
zabbix有不少内置的宏(查询相关资料)
配置--主机--建立主机--宏定义(只能用于该主机,其它主机不能使用该主机自定义的宏)
七.自动化
1.网络发现:zabbix服务器主动扫描环境中的主机,知足条件的话,自动的添加过来
使用第三方软件
puppet
saltstack
配置--自动发现--建立自动发现
2.自动发现动做的建立
发现主机后在哪一个主机组里进行添加主机、使用哪一个模板等的操做
2.1.配置--动做--事件源[自动发现]--建立动做
3.自动注册:zabbix server不主动,而是客户端主动去向zabbix server发送请求,要求注册
服务器须要设置一个动做,指定哪些客户端能加进来
配置--动做--事件源[自动注册]--建立动做
/etc/zabbix/zabbix_agentd.conf
HostMetadata=xx # xx客户端与服务端匹配的字符串
4.低级别发现(low-level discovery):
可让其自动的发现客户端要监测哪些东西
好比监测分区不一样的机器的分区确定是不同的
vfs.fs.size[/boot,used]
vfs.fs.size[/,used]
不一样机器不一样分区须要逐个去设置比较繁琐,可让zabbix自动的去发现客户端的分区状况,而后根据实际状况自动的定义监控项
zabbix_get -s 192.168.178.132 -k vfs.fs.discovery # 动态获取被监控机器的分区类型
{#FSNAME}---> 挂载点
{#FSTYPE}---> 文件系统类型
低级别发现是基于模板的,在这个模板里不须要定义具体的监控项,须要定义的是原型,监控项原型、图表原型
当某个主机使用这个模板的时候,会把模板里面的监控项原型转变为监控项、图表原型转变为图表
4.1.配置--模板--建立模板--自动发现--建立发现规则
经过vfs.fs.discovery能够获取客户端全部的文件系统信息
4.2.配置--模板--自动发现--监控项原型--建立监控项原型
4.3.配置--模板--自动发现--图形项原型--建立图形原型
八.分布式
1.安装zabbix-proxy
配置好相关yum源
yum install zabbix-proxy zabbix-proxy-mysql mariadb-server -y
2.配置mysql,解决编码问题
vim /etc/my.cnf
character-set-server=utf8
mysql -uroot -p<password>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
cd /usr/share/doc/zabbix-proxy-mysql-3.0.3/
shell> mysql -uzabbix -p<password> zabbix < p_w_picpaths.sql
shell> mysql -uzabbix -p<password> zabbix < data.sql
3.代理服务器配置文件相关修改
/etc/zabbix/zabbix_proxy.conf
Server=192.168.178.134 # zabbix服务器的IP
DBHost=localhost
DBPassword=zabbix
Hostname=Zabbix proxy
SourceIP=192.168.178.132 # 代理服务器本身的IP
重启动服务
systemctl restart zabbix_proxy
4.代理的配置
管理---代理---建立代理
清除日志
cat /dev/nul > /var/log/zabbix/zabbix_agentd.log