有错误就解决错误
下一步设置好数据库配制
出现这个错误时给 conf/ 目录的写权限
如果你是Apache用户,应该不存在此问题,如果是nginx有可能因为配置不当而出现,我们需要修改php.ini
cgi.fix_pathinfo=0 改为等于1
重起php
验证是否通信成功
首先开启服务:
zabbix_server
zabbix_agentd
在zabbix server 端运行以下命令
zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all,avg15]"
返回值代表通讯成功
127.0.0.1代表zabbix agent端主机ip地址.
如果失败,检测是否服务器开放10050,10051端口。
界面中文设置;
监控:
新建个主机群:
创建一个新的主机
ip 地址填写zabbix agentd端的主机ip地址
第3步:
设置监控项
点击监控项列表:
点击创建监控项
设置监控项。选择那里有些系统自带的监控项。
也可以自定义键值。
下面介绍自定义键值
如图:
修改配置文件zabbix_agentd.conf
修改UnsafeUserParameters=1
增加
UserParameter=cpu_id,vmstat | sed -n 3p | awk '{print $(NF-2)}'
那么cpu_id就是键值了
键值逗后就是linux上面运行的正常命令vmstat | sed -n 3p | awk '{print $(NF-2)}'
就这么简单
web介绍就可以设置我们自定义的键值了;
过一会儿就可以查看图形数据
设置触发器
报警媒介设置
这里我们报警方式用邮件通知,
创建个新媒介,类型是sh脚本,用来发信邮件
首先大写先自行配制linux下面用mail来发送邮件。这里就不多写了
创建个mail.sh脚本
内容是以下
#!/bin/bash
to=$1subject=$2context=$3#url=$4echo-e "$context" | mail -s "$subject" "$to"
这就是一个简单的发送邮件的脚本,很明显,这个脚本要传三个参数,发送人邮件地址,主题,内容
那这个脚本放在哪个位置呢?
修改配制文件zabbix_server.conf
AlertScriptsPath就是设置sh脚本的目录
然后新建一个媒介
把参数和脚本名称写好,保存
然后设置通知用户的媒介信息
动作讲解:
当你设置好监控一个项时,然后对这个监控项设置了一个触发项,
比如我设置监控硬盘还剩多少空间,
设置触发项为:如果监控硬盘的空间小于10%,
我就应该报警,通过媒介发邮件通知到工作人员。
这个作为就是动作应该做的事情了
新建一个动作
名字自定义,
触发条件,先选择触发器,比如我这里就是选择触发器 等于 硬盘使用过高
点添加,
还要一个条件就是这个触发器状态报问题,我们才执行此动作
再选择 触发器示警度 等于 严重
这里有个点要注意,到底是等于”严重“,或者是其他值,由你填写的触发器资料决定
所以我这里是要填写严重
第二步设置
这里就是设置发送邮件的内容了,你可以自定义,也可以就用默认的值
以下是设置发送方式:选择我们新建的用sh脚本
设置发送的用户,
然后点添加,(此添加按钮是只发送者人员设置添加)
这是出现问题了要执行的动作操作,
当这个问题恢复了之后,也可以发送邮件通知
那就是设置恢复操作
设置完成之后,点击保存
就样整个流程就设置完成了
当监控的项出现问题时,就会发邮件通知到你了
(注意:如果你用的是腾讯云服务器,那些需要申请解封25端口,邮件才能发送成功)
zabbix有模板功能,监控,触发等等功能,你可以直接导入别人现成的模板来用
或者你可以把自己设置好的导出,当成模板给别人用
下面介绍一下,比如实用的监控项
free | awk '{ if ($1=="Mem:"){print $4} }' | awk -FG '{print $1}'
内存还剩多少
可以自定义这个key
cpu的使用率,有自带的健值
下面监控nginx和php-fpm
首先打开nginx和php-fpm的使用状态数据
修改nginx.conf配制文件,加入:
重启nginx
运行
curl http://127.0.0.1/nginx_status
得到
Active connections: 4 表示Nginx正在处理的活动连接数2个。
server 2333333 表示Nginx启动到现在共处理了2个连接
accepts 233333 表示Nginx启动到现在共成功创建2次握手
handled requests 1 表示总共处理了 1 次请求
Reading:Nginx 读取到客户端的 Header 信息数
Writing:Nginx 返回给客户端 Header 信息数
Waiting:Nginx 已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive的情况下,这个值等于Active-(Reading+Writing))
如果要zabbix监控这些数据呢
新建一个nginx_status.sh脚本
脚本内容为
#! /bin/bash
#date:2018-05-04# Description:zabbix监控nginx性能以及进程状态
#cription:zabbix监控nginx性能以及进程状态
# Note:此脚本需要配置在被监控端,否则ping检测将会得到不符合预期的结果
HOST="127.0.0.1"PORT="80"# 检测nginx进程是否存在
function ping {/sbin/pidof nginx | wc -l
}
# 检测nginx性能
function active {/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'}
function reading {/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'}
function writing {/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'}
function waiting {/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'}
function accepts {/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'}
function handled {/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'}
function requests {/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'}
# 执行function
$1
里面的http://$HOST:$PORT/nginx_status/地址,是与你nginx.conf配置一一对应的
最后在zabbix_agentd.conf配制文件里面加入自定入键值这句话
UserParameter=nginx.status[*],/yavin/sh/nginx_status.sh $1
/yavin/sh/nginx_status.sh这是我sh脚本的路径,大家改为自己对应的地址
最后就是zabbix web 界面导入模板了
报歉,这里分亨不了模板,大家可以去百度上面自行查下。
导入模板之后就完成了。
下面介绍php-fpm监控
首先修改nginx.conf配制文件,打开php-fpm状态消息
这里要特别注意
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000
到底用哪个,取决你的php-fpm.conf配置文件用的是哪个
比如我是用的这个
改好之后重起nginx,php-fpm
运命行输入
curl http://127.0.0.1/status
下面介绍每个参数的作用:
pool:php-fpm池的名称,一般都是应该是www
process manage:进程的管理方法,php-fpm支持三种管理方法,分别是static,dynamic和ondemand,一般情况下都是dynamic
start time:php-fpm启动时候的时间,不管是restart或者reload都会更新这里的时间
start since:php-fpm自启动起来经过的时间,默认为秒
accepted conn:当前接收的连接数
listen queue:在队列中等待连接的请求个数,如果这个数字为非0,那么最好增加进程的fpm个数
max listen queue:从fpm启动以来,在队列中等待连接请求的最大值
listen queue len:等待连接的套接字队列大小
idle processes:空闲的进程个数
active processes:活动的进程个数
total processes:总共的进程个数
max active processes:从fpm启动以来,活动进程的最大个数,如果这个值小于当前的max_children,可以调小此值
max children reached:当pm尝试启动更多的进程,却因为max_children的限制,没有启动更多进程的次数。如果这个值非0,那么可以适当增加fpm的进程数
slow requests:慢请求的次数,一般如果这个值未非0,那么可能会有慢的php进程,一般一个不好的mysql查询是最大的祸首。
接下来修改zabbix_agentd.conf配制文件
增加
UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/status?xml" |grep "" | awk -F '>|
这样就增加了自定义的键值,
zabbix web界面导入模板(模板自行百度查找)
完成
mysql数据库监控
我这里介绍的是用zabbix自带的obdc对数据库做监控
首选在zabbix_server服务器上面安装odbc
yum -y install unixODBC unixODBC-devel
yum install mysql-connector-odbc
然后新增配制文件
vim /etc/odbc.ini
里面输入:
方框号里面的test很重要,以后都要用到的。其他参数改为对应的的值,database代表哪个库
如果 你要监控多台数据库,那就复制多个,填写对应的消息,[test]取别的名字
test 意思是数据源名称 (DSN).
保存之后
输入
isql test
测试是否连接成功
isql test,这个test就是odbc.ini配制文件,你对应设置的值test
重新编译支持ODBC的zabbix
编绎时,编绎参增加
--with-unixodbc
例如:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc
成功之后,接下来
键值的第一参数可以不填,第二个参数,就要填你在odbc.ini设置的源名称了,比如之前就是为test
sql 查询的结果为一行一列值
触发器设置
表达式的条件可以监控它,在周期T内没有收到数据,结果等于1时,就触发报警
后面添加报警动作, 这里不再重复了
目前已写完