zabbix 安装 监控 nginx php-fpm mysql

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/

 配制个web项目。把源码放进去,在浏览上面访问打开:

有错误就解决错误

下一步设置好数据库配制

 出现这个错误时给 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时,就触发报警

后面添加报警动作, 这里不再重复了

原文地址:https://www.cnblogs.com/liliuguang/p/13425685.html