注明:以下学习过程参考了很多文档,如有问题,请留言联系!谢谢
一、系统版本
CentOS-6.5-x86_64
二、环境
1、主机名
1.1 hostname
1.2 vim /etc/sysconfig/network
HOSTNAME=
2、网卡
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.2.35
3、selinux
vim /etc/selinux/config
SELINUX=disabled
setenforce 0 #使配置立即生效
4、时间同步
ntpdate 0.pool.ntp.org
方法二
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
vi /etc/ntp/step-tickers
加入一行:
pool.ntp.org
service ntpd start
5、防火墙
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
service iptables save
或:service iptables stop 关闭防火墙
二、LAMP环境
yum -y groupinstall "Development Tools"
1、安装Apache
yum install -y httpd
vim /etc/httpd/conf/httpd.conf
ServerName www.domain.com:80去掉注释并把域名改成localhost或本机地址
service httpd start
chkconfig httpd on
2、安装PHP与关联
yum -y install php php-gd php-xml php-bcmath php-mbstring php-mysql
3、安装Mysql
yum -y install mysql mysql-server mysql-devel
service mysqld start
chkconfig mysqld on
mysqladmin -u root password ‘123456‘ 创建数据库登陆账户和密码
查看数据库:show databases;
查看库中的表:show tables FROM zabbix
4、测试
vim /var/www/html/index.php
<?php phpinfo(); ?>
三、安装zabbix
1、安装依赖软件包
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc libxml2*
2、下载zabbix(可供选择的下载地址)
http://www.zabbix.com/download.php
http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/ http://jaist.dl.sourceforge.net/project/zabbix/
3、下载,解压zabbix (在官网选择要安装的版本)
2.4
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.0/zabbix-2.4.0.tar.gz
2.48(汉化)
http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.8/zabbix-2.4.8.tar.gz
2.2
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz
tar xf zabbix
cd zabbix
4、编译
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2
注1://--prefix指定zabbix安装目录,--enable-server 支持zabbix服务器,--enable-agent支持zabbix代理,--enable-proxy 支持zabbix代理服务器,--with-mysql 使用MySQL客户端库可以选择指定路径mysql_config,--with-net-snmp 使用net - snmp软件包,择性地指定路径NET- SNMP配置,--with-libcurl 使用curl包
注2:
报错:error: MySQL library not found
安装:yum install mariadb-devel
报错:error: LIBXML2 library not found,
安装:yum install -y libxml2*
报错:error: Invalid Net-SNMP directory
安装:yum install -y net-snmp-devel
5、安装执行
make&&make install
6、 进入zabbix目录创建用户
groupadd zabbix 创建用户组zabbix
useradd -g zabbix -m zabbix 创建用户zabbix属于zabbix组
chown -R zabbix.zabbix /usr/local/zabbix 改变zabbix安装目录的拥有者和组群
7、创建数据库
mysql -u root -p
mysql> create database zabbix character set utf8;
mysql> grant all on zabbix.* to [email protected] identified by ‘zabbix‘;
授权:本机能访问mysql,root用户下授权
mysql> flush privileges; ##刷新系统授权
mysql>quit;
8、导入数据库
在解压后的zabbix目录中执行
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/schema.sql
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/images.sql
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/data.sql
10、服务器端配置文件
vim /usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix 数据库名
DBUser=zabbix 数据库登陆账户
DBPassword=zabbix 数据登陆密码
11、配置PHP
vi /etc/php.ini
max_input_time = 600
# sed -i ‘s/max_input_time = 60/max_input_time = 600/g‘ php.ini
max_execution_time = 300
# sed -i ‘s/max_execution_time = 30/max_execution_time = 300/g‘ php.ini
date.timezone = Asia/Shanghai
post_max_size = 16M
# sed -i ‘s/post_max_size = 8M/post_max_size = 16M/g‘ php.ini
memory_limit = 128M
service httpd restart
12、启动设置
1、修改启动参数
修改启动脚本中的路径/usr/local改成/usr/local/zabbix
cp misc/init.d/fedora/core/* /etc/init.d/
sed -i ‘s/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g‘ /etc/init.d/zabbix_server
sed -i ‘s/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g‘ /etc/init.d/zabbix_agentd
2、启动进程
echo "/etc/init.d/zabbix_server start" >> /etc/rc.local
echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local
/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start
ps -ef | grep zabbix 查看进程
3、开放端口
iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT
iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT
service iptables save
查看端口
netstat -npl|grep 10050
netstat -npl|grep 10051
四、页面初始化
cd zabbix-2.2.5
cp -R frontends/php/ /var/www/html/zabbix
打开:
http://192.168.2.35/zabbix/
五、客户机端安装配置
1、主机名
1.1 hostname
1.2 vim /etc/sysconfig/network
HOSTNAME=
2、依赖环境
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc
3、下载与服务器端同版本,步骤相似
编译:
./configure --prefix=/usr/local/zabbix --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
4.1、客户端配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server= #修改为zabbix服务器端IP
ServerActive= #修改为zabbix服务器端IP
Hostname=Zabbix server
UnsafeUserParameters=1 #启用自定义key
5、防火墙,端口
iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT
iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT
service iptables save
或:service iptables stop
6、进入zabbix目录创建用户
groupadd zabbix 创建用户组zabbix
useradd -g zabbix -m zabbix 创建用户zabbix属于zabbix组
chown -R zabbix.zabbix /usr/local/zabbix 改变zabbix安装目录的拥有者和组群
7、启动设置
1、修改启动参数
修改启动脚本中的路径/usr/local改成/usr/local/zabbix
cp misc/init.d/fedora/core/* /etc/init.d/
sed -i ‘s/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g‘ /etc/init.d/zabbix_agentd
2、启动进程
echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local
/etc/init.d/zabbix_agentd start
ps -ef | grep zabbix 查看进程
3、开放端口
iptables -I INPUT -p tcp --dport 10050:10051 -j ACCEPT
iptables -I INPUT -p udp --dport 10050:10051 -j ACCEPT
service iptables save
查看端口
netstat -npl|grep 10050
netstat -npl|grep 10051
8、测试与主机的链接(在zabbix-service端)
/usr/local/zabbix/bin/zabbix_get -s 192.168.190.2 -p 10050 -k "system.uptime"
注:192.168.190.2 指agentd端IP
#有数据显示说明通信正常
9、服务重启(如不能正常重启,则使用以下方法)
查看进程
ps ax|grep zabbix_agentd
关闭进程
ps ax|grep zabbix_agentd|grep -v grep |awk ‘{print $1}‘|xargs kill -9
启动服务
/etc/init.d/zabbix_agentd restart
六、控制台使用
1、添加主机(主机组一样的创建方法)
configuration(配置)---> Hosts(主机)---> Create host(创建主机)
1.1 Host选项
host name 主机IP
visible name (显示的名字)
Groups (组)
New host group (新建组)
Agent interfaces
IP address 被监控端IP
1.2 链接模板
configuration ---> hosts ---> Name前选择要链接的服务器 ---> 左下角(下拉菜单)选择mass update(go) ---> 模板 ---> 选择模板“Template OS liunx”
2、用户
创建新登录用户
管理 ---> 用户 ---> 右上下拉菜单处选择‘用户’ ---> 右上‘创建用户’ ---> 组群(添加超级超级管理员组) ---> 添加媒介(比如邮件) ---> 许可权 ---> 保存
注:许可权 指:权限,当前用户对哪些主机有权限,选择”超级管理员“。
3、图表数据
Monitoring ---> Graphs ---> group / host / Graph
4、item(监控项)
configuration(配置)---> Hosts(主机)---> (主机) ---> (item) ---> Create item
重点:key
Name item的名字
Type item类型,采集数据的方式
key item的标识符(标记item的键),唯一,可接受参数
Type of information 采集的数据类型
Flexible intervals 采集数据间隔数据
New flexible interval 添加采集数据间隔数据
application item组
5、创建图像
5.1 Graphs
Configuration ---> Hosts ---> Graphs ---> Create Graphs
Name 图像名
Graph type 图像类型
items (add) 添加需要加进来的item(监控项)
5.2 Screen
configuration(配置)---> Screen ---> Create Screen
6、Triggers(触发器)
6.1 表达格式:{<server>:<key>.<function>(<parameter>)}<operator><constant>
server 主机名
key 主机上关系,相应监控项(item)的key
function 评估采集到的数据是否在河里范围内时所使用的函数
parameter 函数参数
举例:
{192.168.0.104:system.cpu.load[all,avg1].last(0)}>3
说明:
主机192.168.0.104上所有CPU的过去1分钟内的平均负载的最后一次取值大于3时将触发状态变换
6.2 创建triggers(触发器)
configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers
6.2.1 Triggers(触发器)
configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers
Name (Triggers名)
Expression (定义条件)
Severity 触发级别
7、action (动作,操作)
(宏参考文档:https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location)
7.1 定义媒介
Administration ---> Media types ---> Create media type
Name:媒介名字(自定义)
Type:(媒介类型)
7.2 接收人配置
Administration ---> Users ---> (用户)---> Media ---> add:
Type: (选择上一步自定义的媒介名)
send to:(收件邮箱)
---> add ---> save
7.3设置Action
Configration ---> Action ---> Create action
1.Actions项(发送邮件的格式和内容)
Name:action的名字
Default message (信息内容)
Recovery message (转换成OK时发送信息)
2.Conditions(发送警告的条件)
Trigge = PROBLEM (触发器)
3.Operation ---> New
Step (告警级别)
Operation type (告警方式)
Send message(发送信息)
******Remote command (命令操作)
Send to User groups (发送到的用户组)
Send to Users (发送到的用户)
Send only to (选择调用脚本)
---> add ---> save
8、模板
Configration ---> Templates
Create Templates (创建模板)
七、web监控
网页状态码获取(正常值为200):
curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" www.baidu.com
1、首页是否能打开
创建application
1.1********* configuration ---> Host ---> Application ---> create application
1.2 configuration ---> Host ---> 你的主机 ---> web ---> 右上角Create scenario
scenario 主要选项:
Name:监控项的名称
Application:放到哪个应用中
Update interval:更新周期,默认60秒
Agetn:模拟浏览器
Variables:宏变量(没有可以不填)
steps 主要选项
name:当前step名称,item key中可以用到
url:需要检测的网址
POST:你需要post提交上去的内容(没有可以不填)
Timeout:超时时间,默认15秒
Required status codes:响应代码必须包含在里面,多个响应代码用逗号分隔
正常响应码为:200
web监控方案创建后自动添加以下item,可在创建trigger中直接使用
说明:使用时,Scenario换为真是方案的名称
web.test.in[Scenario,,bps]
说明:页面(step)的下载速度,默认单位bps
web.test.fail[Scenario]
说明:出现错误的步骤(步骤指监控的页面):ailed step of scenario "Scenario".
web.test.error[Web1]
说明:最后一次的错误信息:Last error message of scenario "Scenario".
web.test.in[Scenario,step,bps]
说明:页面(step)的下载速度(指定相应方案Scenario的相应步骤step)
web.test.rspcode[Scenario,step]
说明:指定步骤中的页面的响应码,页面正常的响应码为200
web.test.time[Scenario,step,resp]
说明:指定步骤中的页面的响应时间
2、登陆*********
scenario 选项:
Variables:宏变量
用来定义能登录的账号密码
user=
password
steps 主要选项
POST:你需要post提交上去的内容,
例如:使用宏变量:user={user}&password={password}&Sign in
3、验证登录*********
steps 主要选项:
Required string :Profile
4、查看结果
monitorning ---> web---> 筛选出你的主机 ---> 查看“WEB性能监控_FOR_TTLSA”,Status,显示OK 便是正常
5、监控项*********
web方案监控项当web监控项创建好之后,下面的key会被自动添加好(备注:Scenario为web方案的名称)
web.test.in[Scenario,,bps] 整个阶段中的下载速度,单位字节/秒
web.test.rspcode[Scenario,Step] 检索指定阶段的http响应代码
八、自定义邮件报警
1、linux zabbix-server端配置
mutt+msmtp下载安装:
下载MSMTP
# wget http://down1.chinaunix.net/distfiles/msmtp-1.4.30.tar.bz2
# tar xvf msmtp-1.4.17.tar.bz2
# cd msmtp-1.4.17
# ./configure --prefix=/usr/local/msmtp
# make
# make install
# cd /usr/local/msmtp/
# mkdir etc #配置文件目录和配置文件都要自己建
# cd etc
# vim msmtprc #手动创建配置文件
# account default
# host smtp.163.com
# port 25
# from [email protected] #要从哪个邮箱发出
# auth login #这里如果使用on的话会报 "msmtp: cannot use a secure authentication method"错误
# tls off
# user [email protected] #邮箱用户名
# password xmanufo #邮箱密码,这里可是明文的,如果你觉得不安全可以把文件改为600属性
# logfile /var/log/mmlog
保存退出。简单测试一下
/usr/local/msmtp/bin/msmtp [email protected]
随便输入一些内容用ctrl+d结束。然后到邮箱查看
安装MUTT
yum -y install mutt
# vim /etc/Muttrc
# set sendmail="/usr/local/msmtp/bin/msmtp"
# set use_from=yes
# set realname="fan******[email protected]"
# set editor="vim"
测试一下吧!
echo "testmail" | mutt -s "测试" [email protected]
这里的-a 是指添加附件,如果是多个附件的话就 多加几个 -a 文件名
脚本路径
cd /usr/local/zabbix/share/zabbix/alertscripts/
编写sendmail脚本:
#!/bin/bash
#zabbix use msmtp+mutt sendmail script.
echo $1; #to email address.
echo $2; #title.
echo $3; #content.
echo "$3" | mutt -s "$2" $1
脚本权限:
chmod +x sendmail.sh
测试:
./sendmail.sh $1 $2 $3
$1 收邮件地址
$2 邮件标题
$3 邮件内容
2、控制台配置使用sendmail.sh脚本
2.1创建媒介
Administration ---> Media types ---> Create media type
# Name:媒介名字(自定义)
# Type :Script (选择脚本Script)
# Scriptname:sendmail.sh (脚本名)
2.2接收人配置
Administration ---> Users ---> (用户)---> Media ---> add:
# Type: (选择上一步自定义的媒介名)
# send to:(收件邮箱)
---> add ---> save
2.3设置Action
(宏参考文档:https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location)
Configration ---> Action ---> Create action
1.Actions项(发送邮件的格式和内容)
Name:action的名字
# Default message (信息内容)
# Recovery message (转换成OK时发送信息)
2.Conditions(发送警告的条件)
# Trigger value = PROBLEM (触发器)
3.Operation ---> New
Step (告警级别)
Operation type (告警方式,选择:Send message(发送信息))
Send to User groups (发送到的用户组)
# Send to Users (发送到的用户)
# Send only to (选择调用脚本)
# ---> add ---> save
2.4 测试
十、测试操作
1、 主机:node1 无任何模板和触发器
用户:admin
2、自定义item
选定node1对应的items ---> greate item --->
Name:Network Outbound Rating
key:net.if.out[eth0]
store value:Delta(speed per second)
application:Net
Name:Network Inbound Rating
key:net.if.in[eth0]
store value:Delta(speed per second)
application:Net
Name:CPU Switches
key:system.cpu.switches
store value:As is
application:CPU
Name:CPU Interrupts
key:system.cpu.intr
store value:As is
application:CPU
save 保存
查看各个item采集的数据图像
Monitoring ---> Latest data ---> Graph
3、 可视图
3.1 自定义Graphs
图一: Network Outbound Rating
Network Inbound Rating
图二: CPU Switches
CPU Interrupts
3.2 自定义Screen
4、Triggers(触发器)
configuration(配置)---> Hosts(主机)---> triggers ---> Create triggers
自定义:Network Inbound Rating 的 Triggers(触发器)
Expression (定义条件)
{node1:net.if.in[eth0].last()}>10000
Severity 触发级别
High
5、设置邮件报警
当触发Triggers,邮箱便会收到邮件
十一:本机测试
1、创建媒介
Administration ---> Media types ---> Create media type
name:localhost_mail(自定义名)
Type:Email
SMTP server:localhost
SMTP helo:localhost
SMTP email:[email protected]
2、创建收件人媒介配置(测试用admin配置)
Administration ---> Users ---> (admin)---> Media ---> add:
# Type: localhost_mail
# send to:[email protected]
---> add ---> save
3、action动作配置
Configration ---> Action ---> Create action
1.Actions项(发送邮件的格式和内容)
Name:action的名字
# Default message (信息内容)
# Recovery message (转换成OK时发送信息)
2.Conditions(发送警告的条件)
# Trigger value = PROBLEM (触发器)
3.Operation ---> New
Step:1-3 (告警级别)
Operation type: (告警方式,选择:Send message(发送信息))
# Send to Users:Admin
# Send only to:localhost_mail
# ---> add ---> save
十二、自定义宏
官方参考文档:
https://www.zabbix.com/documentation/2.2/manual/appendix/macros/supported_by_location
变量可以用于如下地方:
item 名称
item key 参数
触发器名称和描述
触发器表达式
其他地方
宏变量优先级:
主机宏(checked first)
主机模板定义的宏,如果有多个模板,那么按照模板越靠前那么宏的优先级越高
全局宏(checked last)
自定义宏
定义全局宏
Administration → General → Macros
十三、自定义监控
客户端配置文件 zabbix_angentd.conf 里面配置 UserParameter=1.
语法如下:
UserParameter=<key>,<command>
示例:
1、自定义监控客户端free,(zabbix_angentd端添加)
vim zabbix-agentd.conf #zabbix-agent配置文件添加
UserParameter=memory.free,/usr/bin/free | awk ‘/^Mem/{print $4}‘
重启zabbix_angentd
测试是否定义成功:(在zabbix_server端)
/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.free"
返回了数据,即表示成功
控制台添加items
key:memory.free
灵活的自定义 key:
UserParameter=key[*],command
示例:
自定义监控cat /proc/meminfo下的所有项,[*]指/proc/meminfo下的项目参数
UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk ‘/^$1:/{print $$2}‘
测试是否定义成功:(在zabbix_server端)
/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage[Buffers]"
/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage[MemFree]"
/usr/local/zabbix/bin/zabbix_get -s 192.168.0.104 -k "memory.usage[MemTotal]"
控制台添加items
key:memory.usage[Buffers]
key:memory.usage[MemFree]
key: memory.usage[MemTotal]
实战:监控nginx(本机IP:192.168.0.106)
(参考文档:http://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/)
nginx status信息
curl http://127.0.0.1/ngx_status
yum安装nginx:
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install nginx
service nginx start
配置:
cd /etc/nginx/conf.d/
vim default.conf
nginx.status开启方法:
server{
...
location /status {
stub_status on;
access_log off;
allow 192.168.0.0/16;
deny all;
}
}
nginx -t 检查语法
状态页面各项数据的意义
active connections - 当前 Nginx 正处理的活动链接数
serveraccepts handled requests - 总共处理了233851个链接,成功创建233851次握手(证明中间没有失败的),总共处理了687942个请求(平均每场握手处理了2.94个数据请求)
reading - nginx 读取到客户端的 header 信息数
writing - nginx 返回给客户端的 header 信息数
waiting - 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是Nginx已处理完正在等候下一次骑牛指令的驻留链接
nginx压力测试:
ab -n 1000 -c 100 http://192.168.0.106/status/
vim /usr/local/zabbix/etc/zabbix_agentd.conf
修改
UnsafeUserParameters=1
文档末尾:添加以下内容:
UserParameter=Nginx.active[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^Active/{print $NF}‘
UserParameter=Nginx.reading[*],/usr/bin/curl -s "http://$1:$2/status" | grep ‘Reading‘ | cut -d" " -f2
UserParameter=Nginx.writing[*],/usr/bin/curl -s "http://$1:$2/status" | grep ‘Writing‘ | cut -d" " -f4
UserParameter=Nginx.waiting[*],/usr/bin/curl -s "http://$1:$2/status" | grep ‘Waiting‘ | cut -d" " -f6
UserParameter=Nginx.accepted[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/{print $$1}‘
UserParameter=Nginx.handled[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/{print $$2}‘
UserParameter=Nginx.requests[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/{print $$3}‘
说明:
$1 指主机HOST(IP或域名)
$2 端口
服务器端测试:
/usr/local/zabbix/bin/zabbix_get -s 192.168.0.106 -k "Nginx.accepted[192.168.0.106,80]"
控制台(192.168.0.105/zabbix)key
Nginx.active[192.168.0.106,80] as is
Nginx.reading[192.168.0.106,80] as is
Nginx.writing[192.168.0.106,80] as is
Nginx.waiting[192.168.0.106,80] as is
Nginx.accepted[192.168.0.106,80] delta
Nginx.handled[192.168.0.106,80] delta
Nginx.requests[192.168.0.106,80] delta
网页的http_code:
UserParameter=web.http_code:curl -I -m 10 -o /dev/null -s -w %{http_code}"\n" 192.168.2.35/index.php
第一阶段总结:定义一次完整的监控:
1、添加主机(主机组)
2、添加item(内置的简单图形 Monitoring ---> Latest data)
3、trigger(event:OK ---> Problem,Recovery)
4、action(发通知 message(通知信息中使用宏)conditond(自定义触发条件),operation(step))
5、媒介 Administration ---> Media types
Script (脚本)
6、自定义图形
1、Graphs
2、screen
7、map(拓扑图)***********
8、定义模板
configuration ---> Templates
十四、自动发现
1、定义模板
1、创建定义模板
configuration ---> Templates ---> creat Template
必填参数:
Template name
Visible name
Groups
New group
2、为自定义的模板添加item
configuration ---> Templates ---> 创建的模板 ---> item ---> create item
3、为创建的item创建trigger
4、为创建的item创建graphs
2、discovery(发现)设置:
configuration ---> Discovery ---> create Discovery rule(自定义发现规则)
Name
Discovery by proxy
IP range:(IP范围,如:192.168.2.1-100)
Delay (in sec):(延迟时间)
Checks (New)
Check type:zabbix agent (发现规则)
Port range:10050
Key:(获取其中监控的一个key作为获取的手段)
Device uniqueness criteria: IP address
3、action添加主机:(添加主机:定义接口,关联模板)
configuration ---> Action ---> Event source:(discovery) ---> create action
1、action
Name
2、Conditions (发现条件)
New condition
Host IP=
Discovery rule =
Discovery status = Discovered
3、operations (发现后的操作)
Add host (添加发现的主机)
Link to templates: Test-Template (为添加的主机连接测试模板)
自动注册
configuration ---> Action --->Event source:(Auto registration) ---> create action
4、移除主机
configuration ---> Action ---> Event source:(discovery) ---> create action
1、action
Name
2、Conditions
Discovery status = "Lost"
Host IP=
3、operations (发现后的操作)
Remove host
十五、分布式环境中使用zabbix_proxy
1、依赖环境
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc
2、proxy安装配置
下载,解压zabbix (在官网选择要安装的版本)
2.4
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.0/zabbix-2.4.0.tar.gz
2.48(汉化)
http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.8/zabbix-2.4.8.tar.gz
2.2
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz
3、下载与服务器端同版本,步骤相似
编译:
./configure --prefix=/usr/local/zabbix --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl
注:如需监控proxy端,可安装:--enable-agent
make && make install
4、安装mysql
yum -y install mysql mysql-server mysql-devel
service mysqld start
chkconfig mysqld on
mysqladmin -u root password ‘123456‘ 创建数据库登陆账户和密码
查看数据库:show databases;
查看库中的表:show tables FROM zabbix
5、创建数据库
mysql -u root -p
mysql> create database zabbix_proxy character set utf8;
注:创建数据库 zabbix_proxy
mysql> grant all on zabbix_proxy.* to [email protected] identified by ‘zabbix‘;
授权:本机能访问mysql的zabbix_proxy库,root用户下授权
mysql> grant all on zabbix_proxy.* to [email protected]‘192.168.%.%‘ identified by ‘zabbix‘;
授权:192.168.网段的用户能访问mysql的zabbix_proxy库,root用户下授权
注:在其他服务器登录
mysql -u zabbix -h192.168.%.% -p
mysql> flush privileges; ##刷新系统授权
mysql>quit;
6、导入数据库
在解压后的zabbix目录中执行
mysql -uzabbix -pzabbix -hlocalhost zabbix_proxy < database/mysql/schema.sql
7、配置文档
vim /usr/local/zabbix/etc/zabbix_proxy.conf
Server= #zabbix-server端IP
Hostname= #必须和控制台端的Proxy name 保持一直,建议使用IP
DBHost=localhost #数据库主机
DBName=zabbix_proxy #数据库名,与前面创建的数据名一定要相同
DBUser=zabbix #数据库登录用户
DBPassword= zabbix #数据库密码
ConfigFrequency=1 #默认3600秒,建议修改为短时间
DataSenderFrequency=10 #默认1秒,建议修改为10-30秒
ProxyOfflineBuffer=1 #默认1小时
8、进入zabbix目录创建用户
groupadd zabbix 创建用户组zabbix
useradd -g zabbix -m zabbix 创建用户zabbix属于zabbix组
chown -R zabbix.zabbix /usr/local/zabbix
9、启动设置******
/usr/local/zabbix/sbin/zabbix_proxy
查看proxy端是否启动
ss -tanlp
重启方法:同zabbix-agentd端重启方法
10、需要被proxy监控的host的zabbix_agentd.conf的Server=指向proxy的IP
11、配置zabbix-server控制台端
11.1、创建proxy
Administration ---> DM ---> creat proxy
必填选项:
Proxy name
#必须和zabbix_proxy.conf配置文件的Hostname=保持一致
Proxy mode:Active
11.2、创建主机
Configuration ---> Hosts ---> creat host
必填选项:
Host name
Visible name
Agent interfaces
Monitored by proxy
重点:选择创建proxy时的Proxy name
11.3、创建item、trigger或嵌套模板
十六、监控Windows
1、agents端win版下载(官方下载)
conf目录存放是agent配置文件 bin文件存放windows下32位和64位安装程序
示例:
c:/zabbix
c:/zabbix/bin/
c:/zabbix/conf/
c:/zabbix/logs/
2、配置与安装
2.1 配置zabbix agent相关配置。
找到conf下的配置文件 zabbix_agentd.win.conf ,修改以下参数:
LogFile=c:/zabbix/logs/ #日志路径
Server #zabbix-server端IP
Hostname #本机名
ServerActive #zabbix-server端IP
3、启动
开始 ---> 运行 ---> CMD
cd c:\zabbix\bin
zabbix-agentd.exe -c c:\zabbix\conf/zabbix_agentd.win.conf
安装成Windows服务
service.msc 开始Windows服务控制台--->开启服务
netstat -an 查看端口是否被监控
4、控制台设置
添加主机、item、trigger
十七、监控类型
zabbix agent
zabbix 自带的客户端程序(被动模式)
需要注意的是,server 检索数据有超时限制,最大超时时间 30 秒,如果检索数据经常超过 30 秒,那么,不建议你使用主动模式的agent
zabbix agent (active )
agent主动模式
simple check
基本的检测,可以检测网络、端口、fping 这些,功能很少并且无需安装客户端。
snmp check
适用于以下场景:
客户基于安全考虑,不同意安装agent
路由器、打印机等无法安装的设备
十八、维护模式
Configuration(配置) → Maintenance(维护)—>点击 Create maintenance period (创建维护周期)
Maintenance
Maintenance type 维护类型
With data collection – 依旧收集数据
No data collection– 暂停收集数据
Active since 维护周期开始时间
Active till 维护结束时间
Periods:维护周期
十九、zabbix命令
19.1、zabbix_server
启动zabbix_server端
zabbix_server -c <file>
<file> 指配置.conf文件路径
19.2、获取agent端的key的数据
zabbix_get -s --host<hostname or IP> -p <post> -k --key <key of metric>
--host<hostname or IP> 指客户端主机名或IP
<post> 指监控端口
--key <key of metric> 指客户端的key
实例
./zabbix-get -s 127.0.0.1 -p 10050 -k "system.hostname"
19.3、zabbix_agentd
启动zabbix_agentd端
zabbix_agentd -c <file>
<file> 指配置.conf文件路径
19.4、zabbix_proxy
启动 zabbix_proxy 端
zabbix_proxy -c <file>
<file> 指配置.conf文件路径
二十、优化
1、操作系统优化
2、数据库优化
3、数据库分离
4、数据库引擎
mysql5.6或更高的版本
5、其他优化
减少item获取时间
减少不必要的监控项
终章:实战
zabbix监控
puppet_master
mem cached
mysql (master)
mysql (slave)
nginx(mogilefs) amoeba
mogilefs mogstored
tomcat
其它:
zabbix-service端安装配置,页面初始化“简易脚本”
#!/bin/bash
#
# 环境
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI gcc libxml2*
# 下载安装
cd /usr/local/src
wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.5/zabbix-2.2.5.tar.gz
tar xf zabbix-2.2.5.tar.gz
cd zabbix-2.2.5
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make && make install
# 创建用户
groupadd zabbix
useradd -g zabbix -m zabbix
chown -R zabbix.zabbix /usr/local/zabbix
# 数据库设置
mysql -u root -p123456 -e "
create database zabbix character set utf8;
grant all on zabbix.* to [email protected] identified by ‘zabbix‘;
flush privileges;
quit"
#数据库导入
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/schema.sql
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/images.sql
mysql -uzabbix -pzabbix -hlocalhost zabbix < database/mysql/data.sql
# 修改配置文件:zabbix_server.conf
cd /usr/local/zabbix/etc/
sed -i ‘s/DBUser=root/DBUser=zabbix/g‘ zabbix_server.conf
echo DBPassword=zabbix >> zabbix_server.conf
# 修改php配置文件
cd /etc/
sed -i ‘s/max_input_time = 60/max_input_time = 600/g‘ php.ini
sed -i ‘s/max_execution_time = 30/max_execution_time = 300/g‘ php.ini
sed -i ‘s/post_max_size = 8M/post_max_size = 16M/g‘ php.ini
echo ‘date.timezone = Asia/Shanghai‘ >> php.ini
service httpd restart
# 启动设置
cd /usr/local/src/zabbix-2.2.5/
cp misc/init.d/fedora/core/* /etc/init.d/
sed -i ‘s/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g‘ /etc/init.d/zabbix_server
sed -i ‘s/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g‘ /etc/init.d/zabbix_agentd
echo "/etc/init.d/zabbix_server start" >> /etc/rc.local
echo "/etc/init.d/zabbix_agentd start" >> /etc/rc.local
/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start
cp -R frontends/php/ /var/www/html/zabbix