zabbix安装
1 下载源代码存档
转到 Zabbix download page 下载源代码存档。待下载完毕后,执行以下命令解压缩源代码存档:
tar -zxvf zabbix-4.0.0.tar.gz
2 创建用户账户
groupadd zabbix useradd -g zabbix zabbix
4 编译
进入解压后的文件夹
cd zabbix-4.0.12/
如果要安装 Zabbix server 和 Zabbix proxy 和zabbix agent,您可以运行以下内容:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
如果只安装 Zabbix agent ,您只需要运行以下内容:
./configure --enable-agent
编绎完成之后运行
make install
注意:如果 MySQL 客户端类库不处在默认的位置,则需要添加可选的 MySQL 的配置文件 --with-mysql=/<path_to_the_file>/mysql_config ,
比如:
编译的写法就为:
./configure --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
5 添加数据库
如果安装的是zabbix server就要添加数据库,如果安装的是zabbix agent就不需要添加数据库
添加数据库方法
找到数据库文件的位置
进入解压的文件夹目录
把schema.sql images.sql data.sql 三个sql文件依次导入zabbix库,记住,顺序不能乱。
如:
6 查看和编辑配置文件
-
在此编辑 Zabbix agent 的配置文件 /usr/local/etc/zabbix_agentd.conf
- 修改配置文件里面的这两项:
-
Server=[zabbix server ip]
-
ServerActive=[zabbix server ip]
您必须在这个文件中指定 Zabbix server 的 IP 地址 。若从其他主机发起的请求会被拒绝。
-
在此编辑 Zabbix server 的配置文件 /usr/local/etc/zabbix_server.conf
您必须指定数据库的名称、用户和密码(如果使用的话)。
例如:
DBName-zabbix
DBUser=root
DBPassword=123456
-
如果您安装了 Zabbix proxy,请在此编辑 proxy 的配置文件 /usr/local/etc/zabbix_proxy.conf
您必须指定 Zabbix server 的 IP 地址和 Zabbix proxy 主机名(必须被 Zabbix server 识别),同时也要指定数据库的名称、用户和密码(如果使用的话)。
7 启动或者关闭进程
启动:
zabbix_server
zabbix_agentd
关闭:
查看进程
8 安装 Zabbix web 界面
web项目源码位置在
zabbix-4.0.12/frontends/php/
有错误就解决错误
下一步设置好数据库配制
出现这个错误时给 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步:
设置监控项
点击监控项列表:
点击创建监控项
设置监控项。选择那里有些系统自带的监控项。
比如键值:system.cpu.util[<cpu>,<type>,<mode>],【】括号里面是参数,<>包起来的参数代表可不填。
也可以自定义键值。
下面介绍自定义键值
如图:
修改配置文件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=$1 subject=$2 context=$3 #url=$4 echo -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 "<$1>" | awk -F '>|<' '{ print $$3}'
这样就增加了自定义的键值,
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时,就触发报警
后面添加报警动作, 这里不再重复了