简介
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
安装zabbix
master-client架构
环境
Centos7
Httpd
MariaDB
PHP
安装过程
- 下载rpm包安装
# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
# yum clean all
- 安装Zabbix server,Web前端,agent
# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent httpd
- 创建初始数据库
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> quit;
- 导入初始架构和数据,系统将提示您输入新创建的密码。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
- 为Zabbix server配置数据
# vim /etc/zabbix/zabbix_server.conf
# 设置数据库密码
DBPassword=password
- 为Zabbix前端配置PHP
# vim /etc/httpd/conf.d/zabbix.conf
# 设置php_value的值为 date.timezone Asia/Shanghai
- 启动Zabbix server和agent进程并为它们设置开机自启:
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
现在您的Zabbix server已经安装完成并开始运行
- 配置Zabbix前端
连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix
根据Zabbix文件里步骤操作: 安装前端
开始使用Zabbix!
一键安装脚本
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum -y install zabbix-server-mysql
yum -y install zabbix-proxy-mysql
yum -y install zabbix-web-mysql
yum -y install mariadb-server
systemctl start mariadb
mysql -uroot -e "create database zabbix"
sed 's/DBUser=zabbix/DBUser=root/g' -i /etc/zabbix/zabbix_server.conf
zcat /usr/share/doc/zabbix-server-mysql-3.4.8/create.sql.gz | mysql -uroot zabbix
setenforce 0
systemctl start zabbix-server
问题排障
- 前端配置页面红色错误,一般更改
php.ini
的配置即可 - 检查selinux是否开启
- 检查firewalld端口是否放行,zabbix-agent默认10050端口
- 检查zabbix的错误日志
- 前端打不开检查httpd或者nginx的错误日志
监控Nginx状态
nginx编译安装的时候开启http_stub_status_module
模块。
增加如下的配置文件,访问http://server_ip_or_name/nginx_status
的时候就会返回nginx的状态值
location /nginx_status {
stub_status on;
access_log off;
}
Shell脚本
#!/bin/bash
HOST="server_ip_or_name"
PORT="80"
function ping {
/sbin/pidof nginx | wc -l
}
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}'
}
$1
监控JMX
监控JMX需要插件Zabbix Java Gateway
# yum insttall -y zabbix-java-gateway java-1.8.0
# 配置文件位置
# /etc/zabbix/zabbix_java_gateway.conf
# 自己按需修改
数据库优化
使用脚本定期删除数据库中30天之前的文件,一般非核心、不重要的数据保留30天即可。
经过生产环境的实践经验,100台以下的agent端运行半年的数据量大概是70个G。
User="xxx"
Passwd="xxx"
Date=`date -d $(date -d "-30 day" +%Y%m%d) +%s`
mysql -u${User} -p${Passwd} 2> /dev/null -e "
use zabbix;
DELETE FROM history WHERE 'clock' < $Date;
optimize local table history;
DELETE FROM history_uint WHERE 'clock' < $Date;
optimize local table history_uint;
DELETE FROM history_text WHERE 'clock' < $Date;
optimeze local table history_text;"
# 添加定时任务,每周日凌晨两点执行清理脚本
[root@localhost ~]# crontab -e
0 2 * * 0 /root/mysql_clear/clear_his.sh
拓展阅读
官方最新中文文档:
https://www.zabbix.com/cn/manuals
zabbix从入门到放弃系列
http://www.zsythink.net/archives/tag/zabbix/