1、环境说明
1.1 Linux环境说明
zabbix 安装要求 https://www.zabbix.com/documentation/4.0/zh/manual/installation/requirements
[root@node2 ~]# cat /etc/redhat-release 查看系统版本信息
CentOS Linux release 7.4.1708 (Core)
[root@node2 ~]# systemctl stop firewalld.service 关闭防火墙
[root@node2 ~]# systemctl disable firewalld.service 开机禁止启动防火墙
[root@node2 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled 关闭selinux
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@node2 ~]#
selinux setenforce 0 临时关闭
getenforce 结果为Disabled 为关闭 检查selinux是否关闭
1.2 搭建LAMP环境
Zabbix是建立在LAMP或者LNMP环境之上,在此为了方便就使用yum安装LAMP环境。
[root@node2 ~]# yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash
[root@node2 ~]# rpm -qa httpd php mariadb 安装后检查应用版本
httpd-2.4.6-89.el7.centos.x86_64
mariadb-5.5.60-1.el7_5.x86_64
php-5.4.16-46.el7.x86_64
1.2.2编辑httpd
[root@node2 ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName www.aihuidi.com:80 修改主机名,URL
164 DirectoryIndex index.html index.php 修改首页文件格式
1.2.3 编辑配置PHP,配置中国时区
[root@node2 ~]# vim /etc/php.ini
878 date.timezone = PRC
1.2.4启动mysqld
[root@node2 ~]# systemctl start mariadb 启动数据库
[root@node2 ~]# systemctl enable mariadb 加入开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@node2 ~]# systemctl status mariadb 查看运行状态
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-06-13 00:31:21 CST; 11s ago
Main PID: 2490 (mysqld_safe)
CGroup: /system.slice/mariadb.service
├─2490 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
└─2653 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/ma...
Jun 13 00:31:19 node2 mariadb-prepare-db-dir[2412]: MySQL manual for more instructions.
Jun 13 00:31:19 node2 mariadb-prepare-db-dir[2412]: Please report any problems at http://mariadb.org/jira
Jun 13 00:31:19 node2 mariadb-prepare-db-dir[2412]: The latest information about MariaDB is available at http://mariadb.org/.
Jun 13 00:31:19 node2 mariadb-prepare-db-dir[2412]: You can find additional information about the MySQL part at:
Jun 13 00:31:19 node2 mariadb-prepare-db-dir[2412]: http://dev.mysql.com
Jun 13 00:31:19 node2 mariadb-prepare-db-dir[2412]: Consider joining MariaDB's strong and vibrant community:
Jun 13 00:31:19 node2 mariadb-prepare-db-dir[2412]: https://mariadb.org/get-involved/
Jun 13 00:31:19 node2 mysqld_safe[2490]: 190613 00:31:19 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
Jun 13 00:31:19 node2 mysqld_safe[2490]: 190613 00:31:19 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Jun 13 00:31:21 node2 systemd[1]: Started MariaDB database server.
[root@node2 ~]# netstat -lntup|grep mysqld 查看服务端口是否存在
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2653/mysqld
1.2.5 初始化数据库,并设置root用户密码
[root@node2 ~]# mysqladmin -u root password aihuidi 设置数据库密码
[root@node2 ~]# mysql -Uroot -p 登录数据库
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin; #创建zabbix数据库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges; #刷新权限
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select user,host from mysql.user;
+--------+-----------+
| user | host |
+--------+-----------+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | node2 |
| root | node2 |
+--------+-----------+
7 rows in set (0.00 sec)
MariaDB [(none)]> drop user ''@localhost; # 删除空用户
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select user,host from mysql.user;
+--------+-----------+
| user | host |
+--------+-----------+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
| | node2 |
| root | node2 |
+--------+-----------+
6 rows in set (0.00 sec)
MariaDB [(none)]>
2、安装zabbix
安装依赖包+组件
[root@node2 ~]# yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel libevent-devel.x86_64 javacc.noarch javacc-javadoc.noarch javacc-maven-plugin.noarch javacc*
[root@node2 ~]# yum install php-bcmath php-mbstring -y #安装php支持zabbix组件
[root@node2 ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm 安装zabbix yum源
[root@node2 ~]# yum install zabbix-server-mysql zabbix-web-mysql -y 安装zabbix组件
[root@node2 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz | mysql -uzabbix -p -h 192.168.200.157 zabbix
Enter password: #导入数据到数据库zabbix中(最后一个zabbix是数据库zabbix),且因为用户zabbix是%(任意主机),所以登录时需要加上当前主机ip(-h 192.168.200.157)密码是用户zabbix登陆密码zabbix
[root@node2 ~]# vim /etc/zabbix/zabbix_server.conf 配置数据库密码
root@node2 ~]#
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
100:DBName=zabbix
116:DBUser=zabbix
124:DBPassword=zabbix 把注释打开写zabbix库的密码
356:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
473:Timeout=4
516:AlertScriptsPath=/usr/lib/zabbix/alertscripts
527:ExternalScripts=/usr/lib/zabbix/externalscripts
563:LogSlowQueries=3000
[root@node2 ~]#
[root@node2 ~]# vim /etc/httpd/conf.d/zabbix.conf 修改时区
[root@node2 ~]# systemctl enable zabbix-server 启动zabbix服务并加入开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@node2 ~]# systemctl start zabbix-server
[root@node2 ~]# systemctl start httpd 启动httpd服务并加入开机自启动
[root@node2 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@node2 ~]#
google 浏览器访问 http://ip/zabbix
U:Admin P:zabbix
安装zabbix-agent客户端
[root@node2 ~]# yum install zabbix-agent -y
[root@node2 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@node2 ~]# grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=192.168.200.156
139:ServerActive=127.0.0.1
150:Hostname=Zabbix server
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@node2 ~]#
[root@node2 ~]# systemctl start zabbix-agent.service 启动客户端
[root@node2 ~]# systemctl enable zabbix-agent.service 开机启动客户端
zabbix网站页面进行汉化
右键把字体复制到桌面上
然后上传到服务器上,并把TTFmv成ttf
修改配置文件字体名称
[root@node2 ~]# vim /usr/share/zabbix/include/defines.inc.php
可以正常显示中文字体了
配置邮件报警功能
1、在zabbix-master服务器上安装mail邮件服务
安装邮件服务
yum -y install mailx
在配置文件最后面添加邮件地址信息:
网易邮箱的:
set from=xxxxxxx@163.com 邮箱地址
set smtp=smtp.163.com 为邮件服务器
set smtp-auth-user=xxxxxxx@163.com 邮箱用户名
set smtp-auth-password=XXXXXXXX 邮箱密码,由于163邮箱需要设置授权,此处需要填写授权密码
set smtp-auth=login
测试:
[root@node2 ~]# echo "hello zabbix " | mail -s “liudonghui_zabbix-install” xxxxxxx@163.com
》》》点击此处详解mailx邮件配置
2、编写发送邮件脚本
[root@node2 ~]# cd /usr/lib/zabbix/alertscripts/
[root@node2 alertscripts]# vim mailx.sh 编写发邮件脚本
#!/bin/bash
##############################################################
# File Name: mailx.sh
# Version: V1.0
# Author: aihuidi
# Organization: www.xxxxxxx.com
# Created Time : 2019-6-13 14:35
# Description: Send an alarm email
##############################################################
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
3、修改权限
[root@node2 alertscripts]# touch /tmp/mailx.log
[root@node2 tmp]# chown -R zabbix.zabbix /tmp/mailx.log
[root@node2 alertscripts]# chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
[root@node2 alertscripts]# chown -R zabbix.zabbix /usr/lib/zabbix/
4、测试脚本发送邮件
[root@node2 alertscripts]# ./mailx.sh xxxxxxxxxx@163.com "node1-java_server" "java-down"
# ./mailx.sh xxxxxxxxxx@163.com "主题" "内容"
下面我们实现对nginx服务的监控
1、对nginx服务的监控有很多方法,可以从端口,进程,也可以从应用层进行监控,我们就应用层来模仿用户请求服务,检测nginx服务是否提供响应
nginx服务自行安装
定义触发器首先要获取相应值:
zabbix-agent客户端
添加自定义item文件存放路径
创建监控项值
书写格式,nginx-alive为监控项名称
重启zabbix-agnet客户端
[root@node2 zabbix_agentd.d]# systemctl restart zabbix-agent
看zabbix-srver服务端可不可以获取到值
去zabbix网页上进行添加
创建触发器
配置服务监控自动触发邮件发送脚本
详细的告警通知内容:
告警标题:故障({TRIGGER.STATUS}),服务器:({HOSTNAME1}发生:{TRIGGER.NAME})故障!
告警信息:
告警事件ID: {EVENT.ID}
告警主机IP: {HOST.IP}
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE}-{EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
恢复标题:恢复({TRIGGER.STATUS}),服务器:({HOSTNAME1}:{TRIGGER.NAME})已恢复!
恢复信息:
告警事件ID: {EVENT.ID}
告警主机IP: {HOST.IP}
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE}-{EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}
简单的告警通知内容:
{TRGGER.STATUS}:{TRIGGER.NAME}
告警主机:{HOST,NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID :{EVVNT.ID}
添加触发器的告警动作简单的告警内容配置:
详细的内容告警配置:
恢复操作配置:
监控配置流程:
Host groups(主机组)→Hosts(主机)→Applications(监控项组)→Items(监控项)→Triggers(触发器)→Event(事件)→Actions(处理动作)→User groups(用户组)→Users(用户)→Medias(告警方式)→Audit(日志审计)
下面我们测试发送邮件告警
停掉nginx服务
可以看到动作6封邮件都发送成功
邮箱提示:
详细的问题告警内容:
详细的问题告警内容:
恢复邮箱告警提醒:
监控主机连接用户数超过3个进行报警:
zabbix启用snmp监控linux主机
client:
1、安装snmp工具
[root@node2 ~ ]# yum install -y net-snmp
2、配置snmpd.conf
[root@node2 ~ ]# cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
[root@node2 ~ ]# vim /etc/snmp/snmpd.conf
在对应行修改以下内容:
41 com2sec notConfigUser default zabbix #社区名称定义为zabbix
55 view systemview included .1 #添加一个采集项.1,意味着可以采集到所有mib tree的信息
[root@node2 ~ ]# systemctl start snmpd 启动snmp服务
[root@node2 ~ ]# systemctl status snmpd 查看运行状态
[root@node2 ~ ]# systemctl enable snmpd 加入开机自启动
[root@node2 ~ ]# netstat -lntup|grep 161 查看服务端口是否存在
udp 0 0 0.0.0.0:161 0.0.0.0:* 94289/snmpd
service:
安装snmpwalk工具测试
[root@node2 ~ ]# yum install -y net-snmp-utils
[root@node2 ~ ]# snmpwalk -v 2c -c zabbix 192.168.200.157|wc -l
5656
Web side:
添加新主机
添加监控模板
添加宏
值为配置snmp服务的时候创建的社区名称zabbix
主机添加完成后,等待一段时间等待变绿
同时也可以在最新数据中查看采集到的数据
zabbix添加Web页面监控:
zabbix提供了web监测功能,监控到站点的响应时间,还可以根据站点返回的状态码,或者响应时间做报警,列入服务保证官网确打不开等现象,第一时间得知web崩溃信息并做相应处理。
创建web场景
Status为Enabled则成功
设置web测试触发器:
创建一个新的触发器
选择这个表达式:代表最新取回的值与N进行比较,如果值不等于N,那就进行告警
触发器已添加成功
Monitoring——Web查看,已经监控到URL状态。
想要监控其它服务比如Mysql等其它服务。。。可以使用zabbix自带的模板,也可以自己写监控值,创建触发器