1.ZABBIX安装及监控
概述
- ZABBIX是最终的企业级软件,设计用于实时监控数以百万计从服务器,虚拟机和网络设备的数据收集。ZABBIX是开源的,不会增加任何成本。
- 下载站点:http://www.zabbix.com/download.php
- 官方文档:https://www.zabbix.com/documentation/3.0
- repo仓库:http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
ZABBIX安装
1.安装依赖包
yum -y install OpenIPMI-devel libssh2-devel unixODBC-devel iksemel-devel net-snmp-devel mysql-community-devel mysql-community-client libxml2-devel curl-devel java-1.8.0-openjdk-devel openldap-devel fping
2.添加zabbix用户和组
useradd -r -s /sbin/nologin zabbix
3.下载并解压安装包
cd /usr/local/src
wget -c https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.1/zabbix-3.0.1.tar.gz
tar zxf zabbix-3.0.1.tar.gz
cd /usr/local/src/zabbix-3.0.1/
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2 --with-iconv --with-unixodbc --with-jabber --with-openssl --with-ldap
make install
4.创建zabbix数据库与用户
~]# mysql -uroot -p
CREATE DATABASE zabbix;
GRANT ALL ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'your-zabbix-mysql-password';
FLUSH privileges;
quit;
5.导入数据库
mysql -uzabbix -pyour-zabbix-mysql-password zabbix < /usr/local/src/zabbix-3.0.1/database/mysql/schema.sql
mysql -uzabbix -pyour-zabbix-mysql-password zabbix < /usr/local/src/zabbix-3.0.1/database/mysql/images.sql
mysql -uzabbix -pyour-zabbix-mysql-password zabbix < /usr/local/src/zabbix-3.0.1/database/mysql/data.sql
6.PHP设置
sed -i 's/post_max_size = 8M/post_max_size = 32M/' /usr/local/php/etc/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 300/' /usr/local/php/etc/php.ini
sed -i 's/max_input_time = 60/max_input_time = 300/' /usr/local/php/etc/php.ini
7.zabbix_server.conf设置
sed -i 's/# DBHost=localhost/DBHost=localhost/' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's/DBUser=root/DBUser=zabbix/' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's/# DBPassword=/DBPassword=your-zabbix-mysql-password/' /usr/local/zabbix/etc/zabbix_server.conf
8.添加apache设置
cp -a /usr/local/src/zabbix-3.0.1/frontends/php /usr/local/zabbix/
chown -R daemon.daemon /usr/local/zabbix/php
cat >>/usr/local/apache/conf/extra/zabbix.conf <<END
Alias /zabbix "/usr/local/zabbix/php"
<Directory "/usr/local/zabbix/php">
DirectoryIndex index.php
AllowOverride None
Options FollowSymLinks
Require all granted
</Directory>
END
echo "Include /usr/local/apache/conf/extra/zabbix.conf" >> /usr/local/apache/conf/httpd.conf
/etc/init.d/httpd restart
9.有一个BUG
#php7
sed -i "/check for deprecated PHP 5.6.0 option 'always_populate_raw_post_data'/,+4d" /usr/local/zabbix/php/include/classes/setup/CFrontendSetup.php
sed -i "/public function checkPhpAlwaysPopulateRawPostData/,+11d" /usr/local/zabbix/php/include/classes/setup/CFrontendSetup.php
#php7.1
sed -i '/$last = strtolower(substr($val, -1));/a$val = substr($val,0,-1);' /usr/local/zabbix/php/include/func.inc.php
10.添加中文显示支持
zh_CN=$(grep -n zh_CN /usr/local/zabbix/php/include/locales.inc.php |awk -F: '{print $1}')
sed -i ''$zh_CN's/false/true/' /usr/local/zabbix/php/include/locales.inc.php
yum -y install wqy-zenhei-fonts.noarch
\cp /usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc /usr/local/zabbix/php/fonts/DejaVuSans.ttf
11.创建启动脚本
~]# vim /etc/init.d/zabbix
#!/bin/bash
#chkconfig: - 85 15
#description: Zabbix server.
#processname: Zabbix
ACMD="$1"
ARGV="$@"
case $ACMD in
start)
/usr/local/zabbix/sbin/zabbix_server
/usr/local/zabbix/sbin/zabbix_agentd
;;
stop)
pkill zabbix &
pkill zabbix &
;;
status)
netstat -tupnl |grep zabbix
;;
*) echo -e "Usage: $0 {start|stop|status}"
;;
esac
或者
~]# cp misc/init.d/fedora/core/zabbix_* /etc/init.d/ && sed -i 's/local/local\/zabbix/' /etc/init.d/zabbix_*
ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/bin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
12.添加开机启动
chmod u+x /etc/init.d/zabbix
chkconfig zabbix on
/etc/init.d/zabbix start
13.SELinux设置
audit2allow -a -M mycertwatch
semodule -i mycertwatch.pp
日志文件:/tmp/zabbix_server.log、/tmp/zabbix_agentd.log
中文显示:Profile –> User –> Language 选择“chinese(zh_CN)”
启用本机:组态 –> 主机 –> 点击“停用的”启用主机
添加图形:仪表盘 –> 常用图形 –> 添加
Linux客户端
1.添加zabbix用户和组
useradd -r -s /sbin/nologin zabbix
2.安装zabbix-agent
cd /usr/local/src
wget -c https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.1/zabbix-3.0.1.tar.gz
tar zxf zabbix-3.0.1.tar.gz
cd /usr/local/src/zabbix-3.0.1/
./configure --prefix=/usr/local/zabbix --enable-agent && make install
3.指定服务器
sed -i 's/Server=127.0.0.1/Server=192.168.101.250/' /usr/local/zabbix/etc/zabbix_agentd.conf
4.创建启动脚本
~]# vim /etc/init.d/zabbix_agentd
#!/bin/bash
#chkconfig: - 85 15
#description: Zabbix agent.
#processname: Zabbix
ACMD="$1"
ARGV="$@"
case $ACMD in
start)
/usr/local/zabbix/sbin/zabbix_agentd
;;
stop)
pkill zabbix &
;;
status)
netstat -tupnl |grep zabbix
;;
*) echo -e "Usage: $0 {start|stop|status}"
;;
esac
ln -s /usr/local/zabbix/sbin/* /usr/local/bin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
5.添加开机启动
chmod u+x /etc/init.d/zabbix_agentd
chkconfig zabbix_agentd on
/etc/init.d/zabbix_agentd start
6.防火墙\SELinux设置
systemctl restart iptables
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
audit2allow -a -M mycertwatch
semodule -i mycertwatch.pp
7.添加主机:组态 –> 主机 –> 创建主机 ,组群选择 Linux Server、模板选择 Template OS Linux
安装后的配置
预备知识
模板 > 应用集 > 项目 > 触发器 > 图形 > 筛选
模板:监控设备、监控服务
应用集:监控服务项
项目、触发器、图形:监控服务项的子项
筛选:一台设备的监控汇总图
配置使用外部邮箱发邮件
yum install mailx -y
~]# vim /etc/mail.rc
#添加如下
set from=yuor@sina.com
set smtp=smtp.sina.com
set smtp-auth-user=yuor@sina.com
set smtp-auth-password=password
set smtp-auth=login
发件测试
echo "hello word." |mail -s "test" your@qq.com
设置邮件报警
1.添加发邮件脚本
echo -e '#!/bin/bash\necho "$3" |mail -s "$2" $1' >/usr/local/zabbix/share/zabbix/alertscripts/email.sh
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/email.sh
echo "AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts" >>/usr/local/zabbix/etc/zabbix_server.conf
2.设置发件信息:管理 –> 示警媒介类型 ,设置发信件信息。类型选择脚本,脚本名称 email.sh,注意下面要给三个参数,否则收不到邮件[链接]。类型选择电子邮件,注意 SMTP HELO 如果是腾讯企业邮箱就填 qq.com,新浪邮箱是sina.com
3.设置收件信息:管理 –> 用户 –> Admin –> 示警媒介 –> 添加 ,收件信息
4.设置触发报警的动作:组态 –> 动作 –> 创建动作 ,添加 动作 (发送的报警信息) 和 操作 (报警信息发送给谁)
名称:From-Email
默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}
当前状态:{TRIGGER.STATUS}
事件ID:{EVENT.ID}
恢复信息:打钩
恢复主旨:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}
当前状态:{TRIGGER.STATUS}
事件ID:{EVENT.ID}
已启用:打钩
添加Zabbix Agent报警描述
组态 –> 模板 –> Template App Zabbix Agent –> 触发器 –> Zabbix agent on {HOST.NAME} is unreachable for 5 minutes
描述:主机Agentd服务无法访问5分钟
修改内存报警值
组态 –> 模板 –> Template OS Linux –> 触发器 –> Lack of available memory on server {HOST.NAME}
表示式:{Template OS Linux:vm.memory.size[available].last(0)}<10
描述:主机可用内存小于%10
添加ICMP图形
添加图形:组态 –> 模板 –> Template ICMP Ping –> 图形 –> 添加 –> [loss、ping、response time] –> 更新
连接到模板:组态 –> 模板 –> Template OS Linux –> 连接的模板 –> 添加 –> Template ICMP Ping –> 更新
监控自定义端口
添加自定义端口监控:组态 –> 模板 –> Template App HTTP Service –> 项目 –> 创建监控项
名称:8080 service is running
类型:简单检查
键值:选择 net.tcp.service[service,<ip>,<port>] 然后修改成 net.tcp.service[tcp,,8080]
数据更新间隔(秒):60
历史数据保留时长(单位天):7
展示值:Service state
分类:HTTP service
添加触发器:组态 –> 模板 –> Template App HTTP Service –> 触发器 –> 创建触发器(在创建触发器按钮下面 群组:所有、主机:Template App HTTP Service)
名称:8080 service is down on {HOST.NAME}
表达式:{Template App HTTP Service:net.tcp.service[tcp,,8080].max(#3)}=0
描述:8080
在客户端测试报警
systemctl stop zabbix-agent.service
Network traffic 图形在添加主机50分钟后出图
添加MySQL监控
1.监控mysql主从状态,创建或添加zabbix用户查询权限[或者直接用root]
创建repl用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost' IDENTIFIED BY '123456';
或给zabbix用户添加repl权限
mysql> grant replication client on *.* to 'zabbix'@'localhost';
2.在agent创建mysql监控项脚本
mkdir /usr/local/zabbix/scripts
~]# cat /usr/local/zabbix/scripts/mysql-status.sh
#/bin/bash
# 参数是否正确
if [ $# -ne "1" ];then
echo "ARGV error!"
fi
HOST=192.168.56.10
PORT=3306
USER=zabbix
PASS=newpass
# 获取数据
case $1 in
Uptime)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT status|cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT status |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT status|cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`MYSQL_PWD="$PASS" mysqladmin -u$USER -h$HOST -P$PORT extended-status |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;;
Replication)
result=`MYSQL_PWD="123456" mysql -urepl -h192.168.20.21 -P$PORT -e "show slave status\G" |egrep -c "Running: Y"`
echo $result
;;
Version)
result=`mysql -u$USER -p$PASS -h$HOST -P$PORT -V 2>/dev/null |awk '{print $5}' |sed 's/,//'`
echo $result
;;
Ping)
result=`mysqladmin -u$USER -p$PASS -h$HOST -P$PORT ping 2>/dev/null |grep -c alive`
echo $result
;;
Process)
result=`mysql -u$USER -p$PASS -h$HOST -P$PORT -e "show status like 'Threads_connected';" 2>/dev/null |grep Threads_connected |awk '{print $2}'`
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|Replication|Version|Ping|Process)"
;;
esac
chmod +x /usr/local/zabbix/scripts/mysql-status.sh
3.在agent添加自定义Key
~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
#添加如下:
UserParameter=mysql.replication,/usr/local/zabbix/scripts/mysql-status.sh Replication
UserParameter=mysql.version,/usr/local/zabbix/scripts/mysql-status.sh Version
UserParameter=mysql.ping,/usr/local/zabbix/scripts/mysql-status.sh Ping
UserParameter=mysql.process,/usr/local/zabbix/scripts/mysql-status.sh Process
UserParameter=mysql.status[*],/usr/local/zabbix/scripts/mysql-status.sh $1
pkill zabbix_agentd && zabbix_agentd
4.在server端手动测试
zabbix_get -s 192.168.101.253 -k "mysql.replication"
5.添加MySQL监控项
添加监控项:组态 –> 模板 –> Template App MySQL –> 项目 –> 创建监控项
名称:MySQL replication
键值:mysql.replication
分类:MySQL
描述:主从复制
名称:MySQL process
键值:mysql.process
分类:MySQL
描述:MySQL进程
6.添加触发器
添加触发器:组态 –> 模板 –> Template App MySQL –> 触发器 –> 创建触发器
名称:MySQL replication status
表达式:{Template App MySQL:mysql.replication.last()}<2
描述:主从复制
严重性:一般严重
7.添加图形
添加图形:组态 –> 模板 –> Template App MySQL –> 图形 –> 添加
名称:MySQL 2
项目:添加(process、replication、status)
8.主机关联模板。或者将(项目、触发器、图形)复制到(主机群组、主机)
连接模板:组态 –> 主机 –> your-mysql-server –> 模板 –> 添加 “Template App MySQL”
Windows上安装客户端
- 将配置文件zabbix_agentd.conf和运行程序zabbix_agentd.exe放至C:/
- 打开CMD程序,运行:
zabbix_agentd.exe -i -c zabbix_agentd.conf
、net start "Zabbix Agent"
监控命令小结
1.查看硬件的温度/风扇转速,电脑有鲁大师,服务器用ipmitool
,实现对服务器命令行的远程管理
~]# yum install -y OpenIPMI ipmitool #-->IPMI在物理机可以安装,虚拟机不行
2.查看cpu
性能lscpu\uptime\top\htop\vmstat\mpstat
~]# lscpu #-->查看cpu信息
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 94
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Stepping: 3
CPU MHz: 2591.998
BogoMIPS: 5183.99
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0,1
3.查看系统负载
~]# uptime #-->查看系统负载 1, 5, and 15 minutes. 18:23:57 up 1 day, 11:44, 2 users, load average: 0.00, 0.01, 0.05 ~]# top #-->动态显示负载 top命令相关参数介绍: 数字1查看cpu核数 默认以cpu排序 字母z显示颜色 字母h显示帮助 >或<符号切换 ~]# yum install -y htop #-->top的升级版 ~]# w #-->查看系统负载及登录情况 ~]# mpstat 1 #查看每秒cpu负载 ##--> yum -y install sysstat
4.内存查看命令free、vmstat
~]# free -h ~]# vmstat 1 #-->每秒查看内存使用情况
5.查看磁盘剩余及写的速度df\dd\iotop\iostat
~]# df -h ~]# iotop #-->yum install -y iotop ##实时查看磁盘读写状态 排查卡顿现象 ~]# dd if=/dev/zero of=test.data bs=1M count=10 ##测试磁盘的读写速度 [root@zabbix-server ~]# hdparm -t /dev/sda ##测试磁盘io写入速度
6.网络卡顿查看命令iftop\nethogs
~]# yum install -y epel-release #安装临时epel ~]# yum install -y iftop nethogs ~]# iftop -i eth0 ##显示主机总流量默认eth0 ~]# nethogs ##显示进程流量
7.j监控TCP连接状态及文件句柄
~]# netstat -an ##查看网络状态 ~]# ulimit -n ##查看当前文件句柄 默认1024 ~]# ulimit -a ##查看进程消耗情况
- 转载请注明来源:企业级zabbix安装及监控
- 本文永久链接地址:https://www.xionghaier.cn/archives/72.html