centos搭建zabbix
安装一些依赖包,不同情况缺的包不同
yum install mysql-devel curl curl-devel net-snmp net-snmp-devel perl-DBI php-gd php-xml php-bcmath
下载源码文件,我下载的是2.4的版本zabbix
wget http://iweb.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.3/zabbix-2.4.3.tar.gz tar zxvf zabbix-2.4.3.tar.gz cd zabbix-2.4.3 ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl make && make install
创建zabbix数据库及其相关账号
create database zabbix default charset = utf8; grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix'; flush privileges; \q
然后导入原始数据库
cd /home/zabbix-2.4.3/database/mysql
mysql -uroot -p zabbix<schema.sql
mysql -uroot -p zabbix<images.sql
mysql -uroot -p zabbix<data.sql
添加zabbix服务端口号
cat >>/etc/services <<EOF
zabbix-agent 10050/tcp #Zabbix Agent
zabbix-agent 10050/tcp #Zabbix Agent
zabbix-agent 10050/tcp #Zabbix Agent
zabbix-server 10051/udp #Zabbix server
EOF
拷贝启动脚本
cp /home/zabbix-2.4.3/misc/init.d/fedora/core5/zabbix_* /etc/init.d/
chmod +x /etc/init.d/zabbix_*
修改启动命令脚本
vim /etc/init.d/zabbix_server
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
vim /etc/init.d/zabbix_agentd
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
修改连接数据库的用户名和密码
vi /usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
复制网站程序
cp frontends/php/ /var/www/html/ -r
useradd zabbix -M -s /sbin/nologin
service zabbix_server start
service zabbix_agentd start
配置zabbix
选择模板
查看主机列表(绿色的Z表示成功的监控了这台客户端,如果是红色Z表示失败,此时将鼠标移动到红色Z上,会有具体的提示)
查看监控数据
最新数据:第一台主机添加完成之后,我们便可以查到最新的数据,例如cpu、内存、硬盘等情况
图表数据
模板Template OS Linux一共包含图表,查看方法如下图
监控MySQL性能
在/usr/local/zabbix创建一个文件夹scripts,并且创建一个脚本文件chk_mysql.sh,在该文件里写入以下code,将此文件给权限chmod +x chk_mysql.sh,chown zabbix:zabbix chk_mysql.sh
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: check_mysql.sh
# Description:
# Notes: ~
# ------------------------------------------------------------------------------- # 用户名
MYSQL_USER='zabbix' # 密码
MYSQL_PWD='zabbix' # 主机地址/IP
MYSQL_HOST='127.0.0.1' # 端口
MYSQL_PORT='3306' # 数据连接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}" # 参数是否正确
if [ $# -ne "1" ];then
echo "arg error!"
fi # 获取数据
case $1 in
Uptime)
result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;; *)
echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
;;
esac
修改zabbix_agentd.conf
增加自定义key,在最后一行增加如下:
# 获取mysql版本
UserParameter=mysql.version,mysql -V
# 获取mysql性能指标,这个是上面定义好的脚本
UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1
# 获取mysql运行状态
UserParameter=mysql.ping,mysqladmin -uzabbix -pzabbix -P3306 -h127.0.0.1 ping | grep -c alive
# killall zabbix-agentd # /usr/local/zabbix/bin/zabbix_agentd 或# service zabbix_agentd restart
模板是zabbix系统提供的,进入zabbix web后台,configuration-->hosts-->点击你的主机name-->选择template选项卡,选择模板"Template App MySQL",最后点击update即可
去监控图查看mysql显示 【no data】,然后去日志查看错误状态
tail /var/log/zabbix/zabbix_agentd.log
1266:20140523:063554.157 no active checks on server [127.0.0.1:10051]: host [zabbix.linuxidc.com] not found
cat /etc/zabbix/zabbix_agentd.conf | grep Hostname
### Option: Hostname
# Value is acquired from HostnameItem if undefined.
# Hostname=
Hostname=Zabbix server
### Option: HostnameItem
# Item used for generating Hostname if it is undefined. Ignored if Hostname is defined.
# HostnameItem=system.hostname
# Aliases can be used in HostMetadataItem but not in HostnameItem parameters. 在zabbix web页面Monitoring->Configuration->Hosts 页面更改Host name和zabbix_agentd.conf里面的Hostname一样。 然后重启,发现mysql有数据显示了
在主界面发现还有一个错误Lack of free swap space on Zabbix server
swap好像没有被监控
这种情况下,如果开启Zabbix监控,Zabbix将会报告系统缺少交换分区空间(“Lack of free swap space”)。这完全可以理解,因为按照正常的逻辑,一台物理服务器不可能不设置交换分区。显然,这样的设计没有考虑到云主机用户,但需要适当调整监控文件配置即可解决问题。
选择Configuration->Templates(模板),在模板界面中选择Template OS Linux右侧的Triggers(触发器),在触发器页面中打开Lack of free swap space on {HOST.NAME}项目,在新打开的触发器编辑页面中修改Expression(表达式)的内容,由原先的
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 |
修改为
{Template OS Linux:system.swap.size[,pfree].last(0)}<50 and {Template OS Linux:system.swap.size[,free].last(0)}<>0 |
此处修改增加了“ and {Template OS Linux:system.swap.size[,free].last(0)}<>0”判断系统有交换空间,当系统无交换空间即{Template OS Linux:system.swap.size[,free].last(0)}的值为0时将不会时表达式不成立就不会触发错误提示。保存之后在下一个更新周期内Zabbix之前报告的“Lack of free swap space”问题就会被自动标记为Resolved(已解决)。
Zabbix监控nginx性能
nginx status信息
curl http://127.0.0.1/nginx_status
Active connections: 2
server accepts handled requests
183 183 2471
Reading: 0 Writing: 1 Waiting: 1
编写客户端脚本nginx_status.sh
#!/bin/bash source /etc/bashrc >/dev/null 2>&1
source /etc/profile >/dev/null 2>&1
nginxstatus=http://127.0.0.1/nginx_status # Functions to return nginx stats
function checkavailable {
code=$(curl -o /dev/null -s -w %{http_code} ${nginxstatus})
if [ "${code}" == "200" ]
then
return 1
else
echo 0
fi
}
function active {
checkavailable|| curl -s "${nginxstatus}" | grep 'Active' | awk '{print $3}'
}
function reading {
checkavailable|| curl -s "${nginxstatus}" | grep 'Reading' | awk '{print $2}'
}
function writing {
checkavailable|| curl -s "${nginxstatus}" | grep 'Writing' | awk '{print $4}'
}
function waiting {
checkavailable|| curl -s "${nginxstatus}" | grep 'Waiting' | awk '{print $6}'
}
function accepts {
checkavailable|| curl -s "${nginxstatus}" | awk NR==3 | awk '{print $1}'
}
function handled {
checkavailable|| curl -s "${nginxstatus}" | awk NR==3 | awk '{print $2}'
}
function requests {
checkavailable|| curl -s "${nginxstatus}" | awk NR==3 | awk '{print $3}'
} case "$1" in
active)
active
;;
reading)
reading
;;
writing)
writing
;;
waiting)
waiting
;;
accepts)
accepts
;;
handled)
handled
;;
requests)
requests
;;
*)
echo "Usage: $0 {active |reading |writing |waiting |accepts |handled |requests }"
esac
将自定义的UserParameter加入配置文件,然后重启agentd
UserParameter=nginx.accepts,/usr/local/zabbix/scripts/nginx_status.sh accepts
UserParameter=nginx.handled,/usr/local/zabbix/scripts/nginx_status.sh handled
UserParameter=nginx.requests,/usr/local/zabbix/scripts/nginx_status.sh requests
UserParameter=nginx.connections.active,/usr/local/zabbix/scripts/nginx_status.sh active
UserParameter=nginx.connections.reading,/usr/local/zabbix/scripts/nginx_status.sh reading
UserParameter=nginx.connections.writing,/usr/local/zabbix/scripts/nginx_status.sh writing
UserParameter=nginx.connections.waiting,/usr/local/zabbix/scripts/nginx_status.sh waiting
导入Template App NGINX模板
https://github.com/itnihao/zabbix-templates-Prod/blob/master/templates/zbx_templates_App_Nginx.xml
监控php-fpm
添加用户参数,添加在zabbix_agentd.conf最后面即可!!!
UserParameter=phpfpm.status.pool,/usr/local/zabbix/scripts/check_phpfpm.sh pool
UserParameter=phpfpm.status.process.manager,/usr/local/zabbix/scripts/check_phpfpm.sh process_manager
UserParameter=phpfpm.status.start.since,/usr/local/zabbix/scripts/check_phpfpm.sh start_since
UserParameter=phpfpm.status.accepted.conn,/usr/local/zabbix/scripts/check_phpfpm.sh accepted_conn
UserParameter=phpfpm.status.listen.queue,/usr/local/zabbix/scripts/check_phpfpm.sh listen_queue
UserParameter=phpfpm.status.max.listen.queue,/usr/local/zabbix/scripts/check_phpfpm.sh max_listen_queue
UserParameter=phpfpm.status.listen.queue.len,/usr/local/zabbix/scripts/check_phpfpm.sh listen_queue_len
UserParameter=phpfpm.status.idle.processes,/usr/local/zabbix/scripts/check_phpfpm.sh idle_processes
UserParameter=phpfpm.status.active.processes,/usr/local/zabbix/scripts/check_phpfpm.sh active_processes
UserParameter=phpfpm.status.total.processes,/usr/local/zabbix/scripts/check_phpfpm.sh total_processes
UserParameter=phpfpm.status.max.active.processes,/usr/local/zabbix/scripts/check_phpfpm.sh max_active_processes
UserParameter=phpfpm.status.max.children.reached,/usr/local/zabbix/scripts/check_phpfpm.sh max_children_reached
然后编写脚本check_phpfpm.sh,给权限,改属主
#!/bin/bash source /etc/bashrc >/dev/null 2>&1
source /etc/profile >/dev/null 2>&1 LOG_FILE=/var/log/zabbix/phpfpmstatus.log
curl http://127.0.0.1/fpm_status.php >${LOG_FILE} 2>&1 pool(){
awk '/pool/ {print $NF}' ${LOG_FILE}
}
process_manager() {
awk '/process manager/ {print $NF}' ${LOG_FILE}
} start_since(){
awk '/^start since:/ {print $NF}' ${LOG_FILE}
}
accepted_conn(){
awk '/^accepted conn:/ {print $NF}' ${LOG_FILE}
}
listen_queue(){
awk '/^listen queue:/ {print $NF}' ${LOG_FILE}
}
max_listen_queue(){
awk '/^max listen queue:/ {print $NF}' ${LOG_FILE}
}
listen_queue_len(){
awk '/^listen queue len:/ {print $NF}' ${LOG_FILE}
}
idle_processes(){
awk '/^idle processes:/ {print $NF}' ${LOG_FILE}
}
active_processes(){
awk '/^active processes:/ {print $NF}' ${LOG_FILE}
}
total_processes(){
awk '/^total processes:/ {print $NF}' ${LOG_FILE}
}
max_active_processes(){
awk '/^max active processes:/ {print $NF}' ${LOG_FILE}
}
max_children_reached(){
awk '/^max children reached:/ {print $NF}' ${LOG_FILE}
} case "$1" in
pool)
pool
;;
process_manager)
process_manager
;;
start_since)
start_since
;;
accepted_conn)
accepted_conn
;;
listen_queue)
listen_queue
;;
max_listen_queue)
max_listen_queue
;;
listen_queue_len)
listen_queue_len
;;
idle_processes)
idle_processes
;;
active_processes)
active_processes
;;
total_processes)
total_processes
;;
max_active_processes)
max_active_processes
;;
max_children_reached)
max_children_reached
;;
*)
echo "Usage: $0 {pool|process_manager|start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}"
esac
导入模板文件
https://github.com/itnihao/zabbix/blob/master/templates/zbx_templates_App_PHP_FPM.xml
发现错误,监控图显示php-fpm并没有数据显示
centos搭建zabbix的更多相关文章
- CentOS 6.5 搭建 Zabbix
CentOS 6.5 搭建 Zabbix 说明: 操作系统:CentOS 6.5 IP地址:192.168.21.127 Web环境:Nginx+MySQL+PHP zabbix版本:Zabbix 2 ...
- CentOS 6.6 搭建Zabbix 3.0.3 过程
分享CentOS 6.6下搭建Zabbix 3.0.3 的过程,希望都大家有所帮助. 环境安装 系统环境: # cat /etc/RedHat-release CentOS release 6.6 ( ...
- Centos 6.x 搭建 Zabbix Agent 客户端
如需搭建zabbix server端,请参考:Zabbix-Server配置 环境: Zabbix-Server: Centos 6.8 IP:192.168.126.129 #Zabix- ...
- CentOS 6.4 yum快速搭建Zabbix 2.2版本(中文)
1.安装zabbix官方epel包 rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6. ...
- 源码安装LNMP与搭建Zabbix
系统环境:CentOS release 6.5 (Final) 搭建Zabbix 3.0对PHP环境要求>= 5.4 一.下载NMP的软件包: N:wget http://nginx.org/d ...
- 搭建zabbix服务器监控
搭建zabbix 监控服务 服务器环境Centos 7.3 修改网卡名称 高并发优化 Web环境 nginx + php-fpm 必须对nginx配置有连接优化 使用systemd服务启动nginx和 ...
- CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置
CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 (1).配置Zabbix监控Apache服务 主机名:yo ...
- 搭建zabbix监控系统详解
搭建zabbix监控系统详解 文:warren 博文大纲:一.前言 二.zabbix监控架构三.搭建Zabbix监控服务器四.搭建过程中遇到有些服务无法正常启动的解决办法 一.前言 : 要想实时的 ...
- CentOS 搭建LNMP服务器和LAMP服务器
CentOS 搭建LNMP服务器 方法一:yum安装 1.更新YUM源 wget http://www.atomicorp.com/installers/atomic #下载atomic自动更新Y ...
随机推荐
- 使用pip install 或者easy_install安装Python的各种包出现cc failed with exit status 1
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- C/C++与lua实现互调
1,在lua脚本中调用C/C++代码中的函数 在C++中定义函数时必须以lua_State为参数, 以int为返回值才能被Lua所调用. /* typedef int (*lua_CFunction) ...
- 实验八 sqlite数据库操作
实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016年5月3日 实验项目名称 SQLite数据库操作 实验地点 S30010 实验类型 □验证型 √设计型 □综合型 ...
- rlwrap 的安装使用
rlwrap 的安装使用 在Windows操作系统上,当在DOS命令窗口中运行SQL*Plus的时候,可以使用向上,向下键来跳回之前已经执行过的SQL语句.你可以根据需要修改他们,然后按Enter键重 ...
- Extjs4.0.7 MVC Architecture异常
uncaught exception: Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Mi ...
- hdu 3339 In Action
http://acm.hdu.edu.cn/showproblem.php?pid=3339 这道题就是dijkstra+01背包,先求一遍最短路,再用01背包求. #include <cstd ...
- 无法在People Picker中选择用户
问题: 通过备份还原的方式(*.bak或者ContentDB备份还原)将某个网站集迁移到新的环境,无法在这个网站集中的任何站点选择用户,但是可以在其它网站集和管理中心选择用户. 我的环境是:Share ...
- PowerShell_零基础自学课程_2_Powershell与Cmd以及Unix/Linux Shell
上篇文章我说道,windows为了改变用户对其console界面的诟病,于是就从windows vista开始,计划要改变这种局面,于是就有 了Powershell的出现. 1.兼容shell命令 ...
- CPU的物理限制
Quote from Solidot 密歇根大学的Igor Markov在上周的<自然>期刊上发表了一篇文章,谈论了CPU面临的基本物理限制.有学者曾估计预言CPU晶体管数目和性能增长的摩 ...
- Eclipse代码提示功能设置(Java & Eclipse+CDT C/C++)
http://developer.51cto.com/art/200907/136242.htm http://blog.chinaunix.net/u/21684/showart_462486.ht ...