注:安装前一定要注意关闭防火墙,关闭selinux,这个小问题困扰了我一天,没找到问题在哪。一直查看nginx日志,没日志显示,与学习视频里边的实验现象不符合。看到这篇文章的大神一定先检查网络,防火墙这些基础配置。
关闭selinux: getenforce 查看selinux的状态
setenforce 0 临时关闭selinux
vim /etc/selinux/config 永久关闭selinux
SELINUX=disabled
关闭防火墙 :systemctl stop firewalld.service
systemctl disable firewalld.service
安装思路:1、安装zabbix-web; 2、安装数据库;3、安装zabbix-server
安装步骤:选择安装版本-----》安装依赖-----》
hostnamectl set-hostname zabbix-server 修改主机名
本次安装是nginx + php7.2 : 因为centos7默认yum源php版本过低,所以要修改php的源,yum源对应的rpm安装包为webtatic-release.rpm
步骤一:安装php72w和nginx
下载三个yum源文件.repo,然后源文件对应的yum仓库安装php72w和nginx
cd /etc/yum.repos.d/
rm -rf local.repo #清空所有.repo文件
yum源更新为阿里云base源及安装nginx时使用的epel源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
因为webtatic-release.rpm依赖epel-7软件仓库
安装php72w的yum源
wget http://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum localinstall webtatic-release.rpm #本地安装包yum localinstall
安装php72w和nginx 不安装其它多余的组件其它组件在之后打开zabbix-web页面时会提示安装
yum list | grep php
yum install php72w-fpm php72w-cli nginx -y
步骤二:配置php和nginx
1、配置php
vim /etc/php-fpm.d/www.conf
user=nginx
group=nginx
systemctl start php-fpm.service #启动php服务
systemctl enable php-fpm.service #设置开机启动
2、配置nginx
grep -Ev '^$|#' /etc/nginx/nginx.conf.default > /etc/nginx/nginx.conf #复制开头没有#号注释的行,这个正则要研究一下 ^$|#表示空行或者包含#的行 -E扩展正则 -v取反
|(扩展正则) 或,匹配竖杠两边的任意一个
也可以直接复制/etc/nginx/nginx.conf.default为/etc/nginx/nginx.conf 修改对应参数
vim /etc/nginx/nginx.conf
添加上连接php的location
在/etc/nginx/nginx.conf.default文件中查找,然后添加到/etc/nginx/nginx.conf文件中,使用xshell鼠标右键复制
检查nginx语法 nginx -t
systemctl start nginx.service
systemctl enable nginx.service
3、下载zabbix-web前端页面,去zabbix官网下载官方源码包 https://cdn.zabbix.com/zabbix/sources/stable/
mkdir /html 创建站点目录,之后去zabbix官网下载web文件,将zabbix-web文件放进去
cd /opt
wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.5.tar.gz
可以使用迅雷先下载好zabbix-5.0.8.tar.gz,然后通过xshell拖进zabbix-server ,在虚拟机里边下载特别慢
tar xf zabbix-5.0.5.tar.gz
cd zabbix-5.0.5/
cp -a ui/* /html/
chown -R nginx:nginx /html/ #修改目录权限
netstat -lntup
检查index是否有index.php
vim /etc/nginx/nginx.conf
index index.php index.html index.htm;
systemctl restart nginx.service
步骤三:浏览器访问
nginx安装的直接在浏览器输入ip地址
apache安装的zabbix-server服务在浏览器输入ip/zabbix
无法正常访问的时候要查看日志、错误日志
cat /var/log/nginx/error.log 日志提示无目录
创建目录
mkdir /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session
浏览器再登录zabbix-web的ip地址,按照网页的提示修改php参数
vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai #去掉前边的分号#
systemctl restart php-fpm.service
再刷新浏览器,根据提示,安装插件包
yum install php72w-mysqli php72w-bcmath php72w-gd php72w-mbstring php72w-xml php72w-ldap -y
systemctl restart php-fpm.service
刷新浏览器,zabbix-web前端显示已经正常
步骤四:安装数据库
yum install mariadb-server.x86_64 -y
systemctl start mariadb.service
systemctl enable mariadb.service
mysql_secure_installation 数据库安全初始化
回车------no------y------y------y------y
仓库授权 命令需要在zabbix官网查询
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123456';
步骤五:安装zabbix-server
去清华源下载zabbix-server源文件
rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
ls /etc/yum.repos.d/ 可以看到多了一个zabbix.repo源
默认下载地址是国外的地址,要修改成国内的下载地址
修改zabbix.repo的下载地址
vim /etc/yum.repos.d/zabbix.repo
:%s#http://repo.zabbix.com#https://mirror.tuna.tsinghua.edu.cn/zabbix#g #这个命令需要研究一下
yum install zabbix-server-mysql -y
rpm -ql zabbix-server-mysql #查看zabbix-server安装目录
/usr/share/doc/zabbix-server-mysql-5.0.5/create.sql.gz这个压缩文件
zcat /usr/share/doc/zabbix-server-mysql-5.0.8/create.sql.gz | mysql -uzabbix -p123456 zabbix zcat是一个不解压查看压缩文件内容的命令,这条命令的意思是找到zabbix数据库,使用规划好的zabbix用户的用户名与密码,创建zabbix数据库
步骤六:将zabbix-server自带数据库导入到mysql数据库
mysql zabbix -e 'show tables;' 查zabbix表
步骤七:配置zabbix-server 只需要配置数据库连接地址
vim /etc/zabbix/zabbix_server.conf
/DBHost 取消注释
DBPassword = 123456
systemctl start zabbix-server.service
systemctl enable zabbix-server.service
netstat -lntup 10051
cat /var/log/zabbix/zabbix_server.log 查看zabbix-server日志
步骤八:继续zabbix-web安装 打开浏览器设置参数
只用输入密码123456
问题: 打开浏览器 提示zabbix-server未能正常监控
登录server
yum install zabbix-agent -y
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
查看配置:打开主机界面,依然是红色 原因:zabbix-server扫描zabbix-agent有60S的周期,重启zabbix-server服务,即可重新扫描,变绿
乱码与zabbix-web相关,所以要替换/html目录下与字体有关的文件
/html/assets/fonts
替换完之后,直接显示正常。
linux系统被监控的主机上安装zabbix-agent2
rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.5-1.el7.x86_64.rpm
建议使用清华源安装rpm包,如果使用yum安装,下载安装包特别慢
vim /etc/zabbix/zabbix_agent2.conf
Server=192.168.175.129 #zabbix-server地址
ServerActive=192.168.175.129 #允许被哪台zabbix-server监控
systemctl start zabbix-agent2.service
systemctl enable zabbix-agent2.service
在zabbix-web平台添加监控主机
步骤一: 填写主机信息,添加主机 :配置------主机------创建主机
然后在web界面连接模板 默认60s同步
步骤二: 主机链接模板: 配置------主机------选择需要添加模板的主机
步骤三:查看添加完成后的效果: 添加完成模板,查看监测到的数据,如果数据正常就已经完成添加
linux系统对比两个文件不同的工具 vimdiff
vimdiff /tmp/zabbix-agentd.conf /etc/zabbix/zabbix-agent2.conf
#vimdiff软件需要安装,目前还没找到安装的方法
zabbix-agent在agent端通过脚本自定义监控项,核心是要得到一个数值
ps -ef | grep -v grep | grep -c nginx 去掉grep进程,统计nginx
自定义监控项
通过linux命令,采集监控参数,并且在zabbix-web显示监控结果
1、监控nginx需要修改 /etc/zabbix/zabbix_agentd.conf配置文件
cat /etc/zabbix/zabbix_agentd.conf | grep -i userpara
步骤:1、在/etc/zabbix/zabbix_agentd.conf 找到可参考得语法示例
2、在/etc/zabbix/zabbix_agentd.d/ 目录新增加一个自定义监控脚本(监控命令行结果显示到zabbix-web界面,对应zabbix-agent主机的配置文件)
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
2、自定义监控项脚本 在被监控主机/etc/zabbix/zabbix_agentd.d/目录下添加.conf脚本
vim /etc/zabbix/zabbix_agentd.d/zbx-nginx.conf
UserParameter = nginx_alive, ps -ef | grep -v grep | grep -c nginx
格式:UserParameter = 结果名称 , 命令 #名称和命令之前要使用逗号隔开
systemctl restart zabbix-agent.service
3、在zabbix-server上使用zabbix-get命令测试agent的监控脚本是否可以正确返回值
yum install zabbix-get -y #先在zabbix-server上安装zabbix-get工具
zabbix_get -s 192.168.175.129 -k nginx_alive #IP为自定义脚本agent主机的IP 如果正常会有取值
4、在web界面添加自定义监控项
配置------主机------监控项------创建监控项 创建完成先测试
查看添加结果:监测------最新数据-----应用集选择nginx-----图形
创建图形: 主机------图形------创建图形 关联之前创建的监控项
查看添加完的图形:监测------最新数据------主机------应用集------图形
vim /etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter = tw_count,netstat -ant | grep -c TIME_WAIT
systemctl restart zabbix-agent.service
zabbix-get -s 192.168.175.129 -k tw_count #测试自定义监控项
5、自定义触发器 定义一个数值范围 对监控项得到的结果数据进行相应的动作
配置------主机------192.168.175.129------触发器------创建触发器
名称:nginx服务已停止
表达式:
触发器表达式 {主机名:key值.last()}=0 #last()表示最新值
平均值 {主机名:key值.avg(5m)}=0 #过去5分钟的平均值
count计数 {主机名:key值.count(1m,10)}=0
diff对比 {主机名:key值.diff(1m,10)}=0
严重性
恢复表达式: 恢复的条件要低于触发
这些表达式根据需求在 “添加 ” 窗口选择即可,添加完自动生成表达式。
测试一下触发器
6、邮件报警 对超出触发器定义范围的结果进行告警
1、自定义发件人 管理------报警媒介类型
先把其他不使用的媒介类型关闭,只留下email
要选择SSL/TLS 邮箱密码是客户端专用密码 是一个随机码
先随便写一个密码,之后企业邮箱通过微信公众号会自动发送一个随机码
2、定制告警内容 可以百度模板
管理------报警媒介类型------Message template
定制报警邮件的内容
告警邮件模板:
主题:
服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
定制故障恢复邮件的内容
恢复邮件模板:
主题:
服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
消息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
3、收件人 问题更新间隔15S
User settings------报警媒介------收件人------添加------更新
4、启用发消息动作
配置------动作------启用
7、添加自定义图形和grafana #目前还没有完成文档的书写
1、先自定义监控项
vim /etc/zabbix/zabbix_agentd.d/tcp.conf
UserParameter = tw_count,netstat -ant | grep -c TIME_WAIT
systemctl restart zabbix-agent.service
zabbix-get -s 192.168.175.129 -k tw_count #测试自定义监控项
2、在Web界面添加自定义监控项 创建好监控项之后创建图形,关联监控项
创建图形: 主机------图形------创建图形 关联之前创建的监控项
主机------图形------过滤器------选择需要的图形
time_wait优化 systemctl 修改内核参数
3、使用grafana出图
到清华源找grafana最新版
https://mirror.tuna.tsinghua.edu.cn/
找到grafana目录,进入yum目录下找rpm目录
复制链接
wget https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.4.2-1.x86_64.rpm
下载rpm包
yum localinstall grafana-7.4.2-1.x86_64.rpm -y
systemctl start grafana-server.service
systemctl enable grafana-server.service
netstat -lntup
curl命令语法:curl ip:port
浏览器登录 ip:3000 默认用户名密码 admin
grafana概念 默认不支持zabbix 需要安装插件
需要使用数据源对接zabbix(链接、用户名、密码)
dashboard 去网站下载 grafana dashboard
列举出插件
grafana-cli plugins list-remote | grep zabbix
安装插件
grafana-cli plugins install alexanderzobnin-zabbix-app
下载慢的话,可使用浏览器下载再上传至服务器
cd /var/lib/grafana/plugins/
unzip alexanderzobnin-zabbix-app-4.0.1.zip
解压到/var/lib/grafana/plugins目录
systemctl restart grafana-server.service
刷新浏览器,可看到支持列表出现zabbix
点进去 enable configuration------plugins
configuration------Datasource 对接数据源
------Add a Datasource------zabbix
URL http://192.168.175.129/api-jsourpc.php
用户名密码 Admin zabbix
Save test
点开 dashboards import
导入其他人的模板 + import
download json
zabbix自定义模板
TCP 11种状态监控 syn_revd 如果过多有可能是dos攻击
1、修改zabbix-agent配置文件 .conf
cd /etc/zabbix/zabbix-agent2.d/
vim zbx-tcp.conf
UserParameter = tcp_state[*],netstat -ant | grep -c $1
#[*]表示可以传参,可以取多个值
systemctl restart zabbix-agent2.service
zabbix-get -s 192.168.175.129 -k tcp-state[LISTEN]
#如果有多个参数需要传递,中括号内使用逗号隔开
2、 web页面创建自定义监控项
添加监控项 监控项可以克隆
1、依次添加11种状态对应的每个监控项:主机------监控项------创建监控项------名称------键值------新的应用集 其它状态只用克隆就行 只修改名称和键值
2、从之前添加11种状态的主机上复制监控项:配置------模板------创建模板------名称------Templates组------(从之前添加11种状态的主机上复制监控项)主机------监控项------找到11种状态监控项(全选)------复制------选模板------选择目标模板------复制
3、添加应用集(复制完应用集丢了):模板------监控项------全选(添加应用集)------批量更新(拉到最下边应用集)------应用集------输入应用集名称------更新
应用集是对监控项进行分组,必须有应用集才行
4、模板创建触发器:创建触发器------表达式------添加------监控项------选择------结果------添加 (现在模板有了应用集、监控项、触发器,如果需要图形可以添加图形)
5、保存模板:可以导出刚才创建的模板,生成模板文件(.xml)
如果是服务器: 模板文件(.xml)+ zabbix-agent的配置文件.conf
模板------导入------选文件------导入------去zabbix server修改配置文件
vim zbx-tcp.conf
UserParameter = tcp_state[*],netstat -ant | grep -c $1
如果是linux服务器安装zabbix-agent两个文件:模板.xml + 配置文件.conf
如果是交换机这些不安装zabbix-agent的设备,只需要在zabbix-server页面导入
模板.xml文件
模板样例: 系统------share------有很多模板
6、给主机应用模板
主机------模板------link new templates------选择------更新
需要再添加.conf配置文件 重启agent
7、管理------一般------其他------刷新不支持的项目------15s
不支持的项 刷新时间
使用模板的流程:
zabbix-agent 设备:添加模板------添加.conf文件(linux主机使用zabbix-agent需要添加.conf文件)------重启zabbix.agent------主机上链接模板
交换机等设备(无zabbix-agent文件):添加模板------主机上链接模板
使用zabbix模板监控nginx
开启nginx人监控页面
nginx -t
systemctl restart nginx
1、导入模板,测试下模板兼容性 模板可以去share下载
导完模板可以看监控项
2、把模板取值的配置文件和脚本放在对应的目录下,并重启agent
/etc/zabbix/zabbix-agent2.d/ userparameter
3、用zabbix-gent测试取值
4、给主机链接模板 更新
5、配置宏变量 因为监控项有变量,要在宏里边配置
6、最新数据里查看配置是否正常 使用自带的模板就可以
zabbix监控角度总结
1、物理层监控 硬件监控 CPU温度 主板温度 功率 电压 硬盘状态 网络设备
2、操作系统 CPU 内存 磁盘 网卡流量 进程数 安全性
3、应用层 nginx php mysql redis....
4、业务层 业务访问速度 用户访问量 活跃用户的数量 订单量
ipmi 远程管理控制卡 监控CPU温度
ipmi-tools CPU温度 电压 功率
网络设备 snmp 查看流量等
低级自动发现规则 会根据设备类型自动生成监控项模板
应用业务访问速度 站长工具网站
用户访问量 (PV UV IP) 借助统计平台 ta.qq.com分析网站
清空日志 >/var/log/nginx/access.log 大于号清空文件内容
使用zabbix监控web页面打开速度
ab命令进行网页压测
yum install httpd-tools -y
ab -n 20000 -c 100 http://10.0.0.71/
动作日志
使用percona插件监控 mysql 去percona网站下载 rpm
SNMP
snmp可监控windows和linux系统、UPS、打印机 都支持snmp协议
SNMP:simple network manager protocol
客户端(在zabbix-server上安装):获取数据
在zabbix-server上安装用来获取被监控对象的数据
服务端(被监控的设备上安装):采集数据
在监控对象上安装,需要在监控对象上打开snmp服务
snmp 三个版本 v1 v2c v3 v2c用的最多
v2c community是口令
snmp概念
oid:.1.3.6.1.2.1.1.5.0
MIB库:所有oid组成一个库MIB
在被监控linux主机上安装snmp 服务端
1、在被监控主机上安装snmp server
yum install net-snmp 被监控主机
vim /etc/snmp/snmpd.conf
community 服务端和客户端zabbix-server一致,客户端zabbix-server取值时,服务端(被监控主机)要验证客户端zabbix-server的comminuty口令
v2c默认是public
view systemview included .1 表示监控所有
systemctl start snmpd.service
systemctl enable snmpd.service
netstat -lntpu udp 161
2、在zabbix-server上安装snmp客户端
yum install net-snmp-utils.x86_64 -y
snmpwalk -v2c -c public 10.0.0.8
-v版本 -c口令 IP oid
OID什么参数都不接表示从树根开始每个项都取值
3、在zabbix-web上添加主机,要使用161端口,snmp协议
zabbix的自动发现和自动注册(主动)
zabbix自动发现:作用是自动化添加主机
配置需要添加主机的网段范围,192.168.1.100-200 zabbix会扫描每个IP
配置------自动发现
步骤:
1、配置扫描范围 配置------自动发现
2、配置扫描动作 配置------动作------Discovery actions------动作操作
3、被监控的主机需要安装配置启动agent
linux主机安装完agent,要修改 /etc/zabbix/zabbix-agentd.conf
Server=zabbix服务器IP
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
zabbix自动发现效率不高,可使用主动注册
主动注册需要修改 agent 配置文件字段
zabbix-agent:
vim /etc/zabbix/zabbix_agentd.conf
Server = 允许哪台server向本机取值
ServerActive = 主动向哪台Server注册
Hostname = 在zabbix界面显示的主机名称
HostMetadata = web | db | cache 使用的模板
zabbix-server
自动注册的规则:
metadata:web 定义agent链接的模板,供agent使用
db
自动注册配置:
1、zabbix-server zabbix-web配置
配置------动作------Autoregistration actions------创建动作------动作------条件(主机元数据------包含web)------操作(添加------发送消息+添加主机+添加到主机群组+链接到模板)------添加
配置------动作------Autoregistration actions------创建动作------动作------条件(主机元数据------包含db)------操作(添加------发送消息+添加主机+添加到主机群组+链接到模板)------添加
与 /etc/zabbix/zabbix_agentd.conf metadata一致
2、zabbix-agent配置
/etc/zabbix/zabbix-agentd.conf
Server ServerActive Hostname Hostmetadata
查看日志的路径:cat /var/log/zabbix/zabbix-agentd.log
自动发现:server向agent发送请求消息、效率低
自动注册:agent向server发消息、效率高 也要选主动模板
自动注册步骤:
1、zabbix server web 配置自动注册动作
2、修改agent的配置文件 Server ServerActive Hostname Hostmetadata
zabbix-agent 主动模式和被动模式的区别
zabbix-agent 默认是被动模式
主动模式 有一个bug是在zabbix-web界面zabbix不绿 需要修改一个监控项为被动模式就会绿
被动模式 每次取一个监控项
zabbix版本升级
1、解决模板不兼容的问题 比如有的模板不支持高版本zabbix-server
2、提升性能,建议升级LTS 可以现在低版本上监控,然后升级zabbix版本
zabbix低级自动发现 low level discovery
自动发现:自动添加主机
低级自动发现:自动添加监控项、触发器、图形等
有规律有区别的监控项使用低级自动发现