企业级zabbix安装及监控

1.ZABBIX安装及监控

概述


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上安装客户端

  1. 将配置文件zabbix_agentd.conf和运行程序zabbix_agentd.exe放至C:/
  2. 打开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     ##查看进程消耗情况

 

 

0
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到