Zabbix监控
简介
为什么选择zabbix:轻量(一台一般配置的机器支持监控上百台以上机器)、简单(WEB-GUI配置)、高效(支持多种方式采集数据)、企业级、开源、分布式
Zabbix官方文档: https://www.zabbix.com/documentation/2.4/
参考 http://www.ttlsa.com/zabbix/follow-ttlsa-to-study-zabbix/
原理:数据采集->数据存储->数据展示(cacti支持数据存储和展示不重视状态变化并报警,nagios支持数据采集重状态变化并报警,因此常用cacti+nagios来监控大型系统,zabbix均支持而且一台一般配置的机器支持监控上百台以上机器)
Zabbix主要功能:
监控CPU、负荷、内存、磁盘、网络、端口(应用程序)、日志、脚本自定义监控项
Zabbix组件:(各个组件不一定在一台机器上)
注意:Server和Agent时间要一致,时间不同步将导致监控的数据不一致,有可能出现监控了一周却始终只有三五天数据或是无法得到当前时间数据的情况。
所以server和agent任务计划要定时执行ntpdate
准备环境
Linux版本: CentOS release 6.8 (Final) 2.6.32-642.6.2.el6.x86_64
zabbix支持安装在多种数据库上,本方案中数据库为mysql
Server 139.129.119.104
Agent 112.74.97.66
#修改yum源,加快下载速度
这里使用中科大yum源
https://lug.ustc.edu.cn/wiki/mirrors/help/centos
#安装所需的依赖包
# yum install -y gcc gcc-g++ libxml2-devel net-snmp-devel curl-devel perl-DBI php-gd php-bcmath php-mbstring php-xml mysql-devel
#yum安装 lamp环境
yum install -y httpd mysql-server php php-mysql
/etc/init.d/httpd start
chkconfig httpd on # httpd开机启动
/etc/init.d/mysqld restart
cd /var/www/html/
vim 1.php
<?php
phpinfo()
?>
http://ip/1.php #看到php版本号说明lamp环境搭建成功
yum安装zabbix
#安装zabbix yum源头
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
ls /etc/yum.repos.d/zabbix.repo #路径存在,yum源安装成功
#安装zabbix server端
yum install zabbix-server-mysql zabbix-web-mysql
#安装zabbix agent端
yum install zabbix-agent
#初始化数据库
mysql #我的mysql未设置密码
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> quit;
cd /usr/share/doc/zabbix-server-mysql-2.4.8/create
mysql -uroot zabbix < schema.sql
mysql -uroot zabbix < images.sql
mysql -uroot zabbix < data.sql
#修改zabbix配置文件
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
service zabbix-server start
#页面安装zabbix
ip/zabbix/setup.php #可以看到zabbix欢迎页面,点击Next,出现
vim /etc/httpd/conf.d/zabbix.conf #http://ip/zabbix/setup.php#页面出现错误均是设置这个文件
php_value date.timezone Asia/Chongqing #不要和系统时区一致,否则会报错
/etc/init.d/httpd restart
#登陆zabbix
username:Admin #用户名默认为Admin
password:zabbix #密码是自定义的
源码安装zabbix
#源码下载地址
http://www.zabbix.com/download2
tar -zxvf zabbix-2.4.8.tar.gz
cd zabbix-2.4.8
#增加zabbix用户和组
groupadd zabbix
useradd -g zabbix zabbix
#初始化数据库
mysql #我的mysql未设置密码
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> quit;
cd database/mysql
mysql -uroot zabbix < schema.sql
mysql -uroot zabbix < images.sql
mysql -uroot zabbix < data.sql
#编译安装
cd ../..
./configure --prefix=/usr/local/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make && make install
#修改zabbix配置文件
vim /usr/local/zabbix_server/etc/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
#修改启动脚本
cp misc/init.d/fedora/core5/* /etc/init.d/
vi /etc/init.d/zabbix_server
ZABBIX_BIN="/usr/local/zabbix_server/sbin/zabbix_server"
vim /etc/init.d/zabbix_agentd
ZABBIX_BIN="/usr/local/zabbix_server/sbin/zabbix_agentd"
chkconfig --add zabbix_server;chkconfig zabbix_server on #开机启动zabbix
#页面安装zabbix
mkdir /var/www/html/zabbix
cp -r frontends/php/* /var/www/html/zabbix/
/etc/init.d/zabbix_server start
vim /etc/php.ini #http://ip/zabbix/setup.php#页面出现错误均是设置这个文件
date.timezone = Asia/Chongqing #时区不能和系统相同
点击“Download configuration file”按钮,
并将下载的zabbix.conf.php保存到,/var/www/html/zabbix/conf/下,点击“Retry”按钮重试=====》
/etc/init.d/httpd restart
#登陆zabbix
username:Admin #用户名默认为Admin
password:zabbix #密码是自定义的
汉化
上传字体文件到zabbix中
C:\Windows\Fonts\simkai.ttf(楷体)上传到服务器zabbix网站目录fonts目录下,上传后simkai.ttf名可能会是SIMKAI.TT,必须改成小写
修改zabbix php配置文件
找到zabbix安装目录
sed -i 's/DejaVuSans/simkai/g' ./include/defines.inc.php
数据采集
步骤
1.添加主机
组态-》主机-》创建主机-》snmp接口 #(这里可选择接口)
2.添加模板(模板有一些监控项,也可以自定义监控项不添加模板)
某主机名称-》模板-》添加模板
3.添加监控项
某主机项目-》创建监控项 #这里可选择采集方式
4.创建项目图形,可选(如果不创建图形,到 监控(一级菜单)-》最新数据 查看)
某主机图形-》创建图形-》添加监控项
5.显示图形
监控(一级菜单)-》图形
snmp方式
Server和Agent均: yum install -y net-snmp*
Agent : vim /etc/snmp/snmpd.conf #添加 view systemview included .1
/etc/init.d/snmpd restart
snmpwalk -v 2c -c public #手动测试能否获取OID
预定义OID https://www.cnblogs.com/aspx-net/p/3554044.html
自定义OID
可执行脚本 exec echohaha /bin/echo hello world 该信息保存在enterprises分支中的extEntry表中具体的OID为: .1.3.6.1.4.1.2021.8.1 自定义OID extend .1.3.6.1.4.1.2021.50 shelltest /bin/bash /tmp/test.sh extend .1.3.6.1.4.1.2021.51 uname /bin/uname -r extend .1.3.6.1.4.1.2021.52 ps '/bin/ps' extend .1.3.6.1.4.1.2021.53 who /usr/bin/who extend .1.3.6.1.4.1.2021.54 test /tmp/test.py
ssh方式
vim /usr/local/zabbix_server/etc/zabbix_server.conf #添加
SSHKeyLocation=/home/zabbix/.ssh
sudo -u zabbix ssh-keygen -t rsa //创建密钥
sudo -u zabbix ssh-copy-id root@112.74.97.66 //
ssh root@112.74.97.66 //手动测试能否以rootshenfen登陆112.74.97.66
#添加监控项:
external check方式
cd /usr/local/zabbix_server/
vim share/zabbix/externalscripts/checkport.sh #添加
nc -w $1 $2 > /dev/null && echo 1 || ehco 0 #$1为HOST.CONN,$2为80
vim etc/zabbix_server.conf #添加
ExternalScripts=/usr/local/zabbix_server/share/zabbix/externalscripts
#添加监控项:
HOST.CONN为Host interface的值
agent方式
zabbix自身的方式,效率高,有主动被动两种方式
在agent端操作
tar zxvf zabbix-2.4.8.tar.gz
cd zabbix-2.4.8
./configure --prefix=/usr/local/zabbix_agent --enable-agent
make
make install
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ #拷贝启动脚本
vim /etc/init.d/zabbix_agentd #修改BASEDIR
BASEDIR=/usr/local/zabbix_agent
cd /usr/local/zabbix_agent/
vim etc/zabbix_agentd.conf #修改配置文件
/usr/local/zabbix_server/bin/zabbix_get -s 112.74.97.66 -p 10050 -k system.hostname
Agent
configuraration->Host->Agent interfaces
/usr/local/zabbix_agent/etc/zabbix_agentd.conf #添加
Include=/usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/*.conf
cd /usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/
[root@Server ~]# /usr/local/zabbix_server/bin/zabbix_get -s 112.74.97.66 -p 10050 -k mysql.questions
25
![](https://images2015.cnblogs.com/blog/795445/201703/795445-20170310221832920-1586557077.png)
vim other.conf #添加
UserParameter=http.port[*],nc -w 1 $1 $2 > /dev/null && echo 1 || echo 0
手动测试成功则添加到web:
[root@Server ~]# /usr/local/zabbix_server/bin/zabbix_get -s 112.74.97.66 -p 10050 -k http.port[112.74.97.66,80]
1
触发器与报警
给监控项设置触发器
组态-》主机-》触发器-》创建触发器,设置名称、表达式、严重性等级
(触发器是事件的一种,事件会触发报警)
邮件报警(发送内容)
1.定义报警方式
管理-》示警媒介类型-》创建媒体类型
#使用postfix邮件服务
yum install -y postfix;
vim /etc/postfix/main.cf #修改
inet_protocols = all 改为 inet_protocols = ipv4
注释inet_interfaces = localhost
/etc/init.d/postfix start
#测试postfix服务
echo 'haha' | mail -s 'test mail' 邮箱
2.定义收件用户
管理-》用户-》示警媒介
3.创建动作
组态-》动作-》创建动作
设置:动作(邮件内容)、条件(触发报警的条件)、操作()
注意:邮件报警我用的监控服务器是阿里云,邮箱是126邮箱(不要用QQ邮箱,很难收到)
邮件使用:http://blog.csdn.net/i_am_jojo/article/details/7944877
脚本报警(发送附件)
cd /usr/local/zabbix_server/etc
vim zabbix_server.conf #添加
AlertScriptsPath=/usr/local/zabbix_server/share/zabbix/alertscripts
/etc/init.d/postfix restart
cd usr/local/zabbix_server/share/zabbix/alertscripts
vim sendmail.sh #添加
to=$1
subject=$2
body=$3
echo $body | mail -s "$subject" "$to"
chmod +x sendmail.sh
1.定义报警方式
管理-》示警媒介类型-》创建媒体类型
2.定义收件用户,步骤同上
3.创建动作,步骤同上
zabbix的API
API简介
之前所有的操作都可以通过API,以编程方式实现,API是PHP写的接口
大多数API至少包含四种方法:get,create,update和delete,
但某些API可以提供一个完全不同的一套方法。