一.安装zabbix及解决图表方块字
1.安装zabbix(配置好相关yum源,解决包依赖问题,参考官方文档)
yum install zabbix-agent zabbix-server-mysql zabbix-web-mysql mariadb-server -y
2.更换PHP的时区
vim /etc/php.ini
data.timezone = "Asia/Shanghai"
3.配置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 [email protected] 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.服务器配置
配置--主机--创建主机
三.定义监控项,自定义key
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 [email protected] identified by ‘zabbix‘;
cd /usr/share/doc/zabbix-proxy-mysql-3.0.3/
shell> mysql -uzabbix -p<password> zabbix < images.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