提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由两部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
本次安装的服务器基础环境为centos7+nginx+mysql,首先进行安装前的准备工作
# systemctl disable firewalld
# systemctl stop firewalld
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config
reboot
# vim /etc/chrony.conf
server 192.168.118.33 iburst //新增一行,指向NTP服务,原来几个可以#掉
# for i in { 01 02 }; do scp /etc/chrony.conf root@ceph$i:/etc/ ;done
# systemctl restart chronyd
# chronyc sources -v //验证时间是否同步 client1前面有^*表示同步成功
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.118.33 3 6 7 2 +7866ns[ +14ms] +/- 143ms
windows客户端 修改-> 调整时期与时间->internet 时间-》更改设置
nginx可以先不装,后面安装前端时也有一个,没改端口的话容易造成端口冲突。
#由于centos默认没有nginx rpm源,首先更新一下nginx的rpm源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装nginx
yum install nginx
# 设置开机启动
systemctl enable nginx
# 启动nginx
systemctl start nginx
# 查看nginx启动状态
systemctl status nginx
#docker run -d -p 80:80 --name nginx01 \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf:/etc/nginx/conf.d \
registry.cn-hangzhou.aliyuncs.com/ivesgdidf/nginx
拷贝临时容器默认文件到默认路径
直接挂载,默认配置文件不会生成,所以需要从一个临时的容器中复制一份过来
# docker run -d -p 83:80 --name nginx03 centos-nginx:latest
# docker start nginx03
# docker cp nginx03:/usr/share/nginx/html/index.html /data/nginx/html
# docker cp nginx03:/etc/nginx/conf.d/default.conf /data/nginx/conf/
# docker stop nginx03 | docker rm nginx03 ##删除临时容器
# docker restart nginx01
# 更新mysql的rpm源
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# 由于该rpm源默认的mysql版本为8.0,我们需要改为5.7
vim /etc/yum.repos.d/mysql-community.repo
如下所示,更改默认版本为5.7
# cat /etc/yum.repos.d/mysql-community.repo
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-preview]
name=MySQL Tools Preview
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-7.5-community]
name=MySQL Cluster 7.5 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
注意:这个方式安装不了的话,可能是官网又更新了,可以看看 MySQL高可用集群-MHA 的安装方式。
# 安装 mysql
yum -y install mysql-community-server mysql-community-devel
# 设置 mysql 为开机启动
systemctl enable mysqld
# 启动 mysql
systemctl start mysqld
# 查看 mysql 启动状态
systemctl status mysqld
# 查看 mysql 临时密码
grep 'temporary password' /var/log/mysqld.log
# 用临时密码登录 mysql
mysql -uroot -p
# 更改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
# 允许远程登录
update mysql.user set Host='%' where HOST='localhost' and User='root';
# 刷新权限
mysql> flush privileges;
# 退出
quit;
# docker pull mysql:5.7
# docker run -d -p 3306:3306 --name mysql \
-v /opt/mysql/log:/var/log/mysql \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf:/etc/mysql/conf \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
# docker exec -it mysql /bin/bash
// 更新zabbix的rpm源
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cat /etc/yum.repos.d/zabbix.repo
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
cat /etc/yum.repos.d/zabbix.repo
//清掉其他 源
# yum clean all
# yum -y install zabbix-server-mysql
....
依赖关系解决
====================================================================================================================================================
Package 架构 版本 源 大小
====================================================================================================================================================
正在安装:
zabbix-server-mysql x86_64 5.0.36-1.el7 zabbix 3.2 M
为依赖而安装:
OpenIPMI x86_64 2.0.27-1.el7 base 243 k
OpenIPMI-libs x86_64 2.0.27-1.el7 base 523 k
OpenIPMI-modalias x86_64 2.0.27-1.el7 base 16 k
fping x86_64 3.16-1.el7 zabbix-non-supported 44 k
unixODBC x86_64 2.3.1-14.el7 base 413 k
事务概要
====================================================================================================================================================
安装 1 软件包 (+5 依赖软件包)
启用红帽软件集合
# yum install centos-release-scl
编辑文件 /etc/yum.repos.d/zabbix.repo 并启用 zabbix-frontend 存储库。
[zabbix-frontend]
...
enabled=1
...
安装前端包
# yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> update mysql.user set Host='%' where HOST='localhost' and User='zabbix';
mysql> flush privileges;
mysql> quit;
---降低密码安全强度
mysql> set global validate_password_special_char_count=0;
mysql> set global validate_password_mixed_case_count=0;
mysql> set global validate_password_length=6;
mysql> set global validate_password_number_count=0;
# flush privileges;
最后的zabbix表示数据库名
docker 容器的mysql 方式需要
[root@localhost ives]# cp /usr/share/doc/zabbix-server-mysql-5.0.23/create.sql.gz /opt/mysql/data/zabbix/
[root@localhost ives]# docker exec -it mysql /bin/bash
root@0f3e375c1261:/# zcat /var/lib/mysql/zabbix/create.sql.gz | mysql -uzabbix -p zabbix
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
# vim /etc/zabbix/zabbix_server.conf
。。
DBPassword=password
。。
编辑文件 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf,取消注释并设置“listen”和“server_name”指令。
# listen 80;
# server_name example.com;
//域名一定要改,可以改成 IP地址 192.168..;否则,后面启动后会显示红帽的默认nginx的页面,不显示zabbix页面,如下
编辑文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf,将 nginx 添加到 listen.acl_users 指令。
listen.acl_users = apache,nginx
然后取消注释并为您设置正确的时区。
; php_value[date.timezone] = Europe/Riga
改成系统相同的如: Asia/Shanghai
Beijing
# systemctl restart zabbix-server rh-nginx116-nginx rh-php72-php-fpm
# systemctl enable zabbix-server rh-nginx116-nginx rh-php72-php-fpm
zabbix-agent安装在被监控服务器上,可以与zabbix-server在同一台服务器上,也可以在不同服务器上,以下假定在新的一台服务器上进行安装
# 更新zabbix的rpm源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
# 安装
yum -y install zabbix-agent
//显示前面不带#的配置行
# grep -n '^[^#]' /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
117:Server=127.0.0.1
163:ServerActive=127.0.0.1
174:Hostname=Zabbix server //在服务器端配置时的名称,要对应好,其他节点还是要注意下.
314:Include=/etc/zabbix/zabbix_agentd.d/*.conf
vim /etc/zabbix/zabbix_agentd.conf //服务端安装这个会在/etc/zabbix/文件下,客户只接安装代理则会在/etc下
--- 其他服务器配置如下
Server=192.168.118.20 //zabbix-server服务器的ip地址
# ListenPort=10050 //默认10050端口,要改其他就改下,不然就不要动
StartAgents=3 //138行,去掉前面的#号,如果设置为0,则禁用被动检查,
ServerActive=192.168.118.20 //163行,zabbix-server地址,用于服务可用性探测
Hostname=Client-nginx1 //必须与服务器上配置的主机名匹配。
Include=/etc/zabbix/zabbix_agentd.d/*.conf //334行,不动
---
# 启动服务并设置开机自启
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -anpt | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2952/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 2344/zabbix_server
tcp6 0 0 :::10050 :::* LISTEN 2952/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 2344/zabbix_server
服务 不能连外,只能其他 机子先下载,再上传到指定服务器
wget https://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.36/zabbix_agent-5.0.36-linux-3.0-amd64-static.tar.gz
mkdir /opt/zabbix_agent
mv zabbix_agent-5.0.36-linux-3.0-amd64-static.tar.gz /opt/zabbix_agent
cd zabbix_agent
tar -zxvf zabbix_agent-5.0.36-linux-3.0-amd64-static.tar.gz
#ls
bin conf sbin
cp conf/zabbix_agentd.conf conf/zabbix_agentd.conf.bak
创建zabbix用户
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix
创建需要的目录及授权
mkdir -p /var/log/zabbix
chown -R zabbix:zabbix /var/log/zabbix
修改下配置文件
# grep -n '^[^#]' conf/zabbix_agentd.conf
30:LogFile=/tmp/zabbix_agentd.log
113:Server=127.0.0.1
159:ServerActive=127.0.0.1
170:Hostname=Zabbix server
vim conf/zabbix_agentd.conf
PidFile=/opt/zabbix_agent/zabbix_agentd.pid //11行,去掉#号空格,再改路径。
LogFile=/var/log/zabbix/zabbix_agentd.log //32行,改路径
Server=192.168.118.10 //113行 ,127.0.0.1改成服务器地址
ListenPort=10050 //121行,去掉#号
StartAgents=3 //138行,去掉前面的#号,如果设置为0,则禁用被动检查,
ServerActive=192.168.118.10 //zabbix-server地址,用于服务可用性探测
Hostname=node //必须与服务器上配置的主机名匹配。
Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
把zabbix-agent/bin/下的两个命令软连接到/usr/bin下
ln -s /opt/zabbix_agent/bin/* /usr/bin/
cp sbin/zabbix_agentd /usr/bin/
创建服务启动文件
# vim zabbix-agent.service
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/opt/zabbix_agent/conf/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/opt/zabbix_agent/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/bin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
启动服务
cp zabbix-agent.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl restart zabbix-agent.service
systemctl enable zabbix-agent.service
systemctl status zabbix-agent.service
这部分应该是要放后面的,相对应该的服务端页面的设置
这个安装包是被动模式的,主动模式不能用
zabbix agent检测分为主动(agent active) 和被动(agent)
agent 安装包 对应zabbix agent模块
agent2 安装包对应zabbix agent active模块
重新安装另一台时,又出现PID问题,直接指到其他opt路径,不能生效,
生产中的服务 器是不能随便重启的,只能先用在线安装,后续有空再用虚拟机再装下
报错:
Jul 13 15:42:45 data_node1 systemd[1]: Can't open PID file /run/zabbix/zabbix_agentd.pid (yet?) after start: No such file or directory
Jul 13 15:42:45 data_node1 systemd[1]: Failed to start Zabbix Agent.
先把配置文件的PID文件改回到 /var/run/下,正常启动后,再停止,再把文件指向到/opt/zabbix_agentd
/usr/lib/systemd/system/zabbix-agent.service
conf/zabbix_agentd.conf
默认:
PidFile=/var/run/zabbix/zabbix_agentd.pid
mkdir -p /var/run/zabbix/
chown -R zabbix:zabbix /var/run/zabbix/
//查看版本软件
yum --showduplicates list zabbix-agent
//下载软件不安装,或不指定版本下载最新的
yum install zabbix-agent.x86_64.0.5.0.36-1.el7 --downloadonly --downloaddir=/opt -y
for i in { 11 12 13 }; do scp zabbix-agent.* root@192.168.30.$i:/opt/ ;done
或
ansible node -m copy -a 'src=/opt/zabbix-agent.* dest=/opt/'
//本机安装查看,再确认下当前版本的行数,如有不对请改后面脚本
rpm -ivh /opt/zabbix-agent-5.0.36-1.el7.x86_64.rpm
grep -n '^[^#]' /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
117:Server=127.0.0.1
163:ServerActive=127.0.0.1
174:Hostname=Zabbix server
314:Include=/etc/zabbix/zabbix_agentd.d/*.conf
//建立脚本
vim zabbix-agent-conf.sh
---
//安装程序zabbix-agent
rpm -ivh /opt/zabbix-agent-5.0.36-1.el7.x86_64.rpm
//修改配置文件,注意替换行数,最好提前再确认下当前版本的行数
grep -n '^[^#]' /etc/zabbix/zabbix_agentd.conf
cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.ba
sed -i 's/# StartAgents=3/StartAgents=3/g' /etc/zabbix/zabbix_agentd.conf
sed -i '125c ListenPort=11050' /etc/zabbix/zabbix_agentd.conf
sed -i '117c Server=192.168.118.10' /etc/zabbix/zabbix_agentd.conf
sed -i '163c ServerActive==192.168.118.10' /etc/zabbix/zabbix_agentd.conf
sed -i 's/Hostname=Zabbix server/Hostname='"$HOSTNAME"'/g' /etc/zabbix/zabbix_agentd.conf
grep -n '^[^#]' /etc/zabbix/zabbix_agentd.conf
//启动服务
systemctl restart zabbix-agent.service
systemctl status zabbix-agent.service
systemctl enable zabbix-agent.service
----
//复制脚本文件
for i in { 11 12 13 }; do scp zabbix-agent-conf.sh [email protected].$i:/opt/ ;done
或
ansible node -m copy -a 'src=/opt/zabbix-agent-conf.sh dest=/opt/'
//ansible执行脚本文件
ansible node -m command -a "sh /opt/zabbix-agent-conf.sh"
下载地址:https://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.14/zabbix_agent2-5.0.14-windows-amd64-openssl.msi
Host name需要和Zabbix服务端Web页面上设置的主机名称一致
连接到您新安装的 Zabbix 前端:http:// server_ip_or_name
按照 Zabbix 文档中描述的步骤:
1、前端页面初始化工作
zabbix-server配置完成并启动后,访问对应的域名,进行初始化工作
进行环境检查
这里会提示错误:
Details Cannot connect to the database.
Access denied for user ‘zabbix’@‘%’ to database ‘zabbix’
百度查下很多人说改这个文件
# ls /usr/share/zabbix/conf/
certs zabbix.conf.php.example
# cp /usr/share/zabbix/conf/zabbix.conf.php.example /usr/share/zabbix/conf/zabbix.conf.php
# vim /usr/share/zabbix/conf/zabbix.conf.php
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '3306';
$DB['PASSWORD'] = '';
改完还是没法下一步,考虑到权限问题,就进数据库查看用户权限,发现是无访问权限 USAGE ON .
,奇怪了,用MySQLQueryBrowser 都连得好好的,只能再重新对zabbix这个库重新授权下,就搞定了.
回退把/usr/share/zabbix/conf/zabbix.conf.php改名掉,还是可以下一步,说明5.0不用提前设置这个文件,最后完成配置后,会自动生成的,看后面…。
mysql> show grants for zabbix;
+------------------------------------+
| Grants for zabbix@% |
+------------------------------------+
| GRANT USAGE ON *.* TO 'zabbix'@'%' |
+------------------------------------+
1 row in set (0.01 sec)
## zabbix用户和 zabbix@localhost会被mysql认为是两个库,一个本地,一个远端
mysql> create user zabbix identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix;
mysql> show grants for zabbix;
+----------------------------------------------------+
| Grants for zabbix@% |
+----------------------------------------------------+
| GRANT USAGE ON *.* TO 'zabbix'@'%' |
| GRANT ALL PRIVILEGES ON `zabbix`.* TO 'zabbix'@'%' |
+----------------------------------------------------+
2 rows in set (0.00 sec)
检查配置
登录,初始用户名为Admin,密码为zabbix
1、登录邮箱后台找到邮箱的授权码,用于配置zabbix报警邮箱,163邮箱方式是,设置-POP3/SMTP/IMAP,点进去后下边授权密码管理。加一下授权码,需复制下来保存,只显示一次。
QQ邮箱方式是 账户-设置-POP3/SMTP/IMAP。。开启 -短信验证 : 授权码 fleaycxhbuhpcadf
custom messege 部分:
{TRIGGER.STATUS}: {TRIGGER.NAME}
故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
告警主机:{HOSTNAME1},IP地址:{HOST.CONN}
告警时间:{EVENT.DATE}--{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
如需重复报警,上边的步骤里,把1-1改成1-3,就是同一事件报警3次,0表示无数次。
{TRIGGER.STATUS}: {TRIGGER.NAME}
恢复:{TRIGGER.STATUS},服务器:{TRIGGER.NAME} 已经恢复!
告警主机:{HOSTNAME1} ,IP地址:{HOST.CONN}
告警时间:{EVENT.DATE}---{EVENT.TIME}
恢复时间:{EVENT.DATE}---{EVENT.RECOVERY.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
虽然配置完就是显示启用状态,但是好久没发邮件,偶然勾选了再启用,就生效了。
停掉虚拟机服务或 SW后的,问题这边有动作自动发邮件,动作日志也可以查看。
这里注意下:
zabbix agent检测分为主动(agent active)和被动(agent)两种形式,主动与被动的说法均是相对于agent来讨论的。简单说明一下主动与被动的区别如下:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
过一会就会显示出来监控状况,红色代表有问题了, Zabbix server 使用正常
邮件发送等故障问题,看后面的故障内容,处理完后
如上图左上角所示,选择对应的监控项,则会展示监控图表数据,但是图表部分的汉字乱码
需要安装对应的字体包
执行如下命令:
yum -y install wqy-microhei-fonts
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
cp: overwrite ‘/usr/share/fonts/dejavu/DejaVuSans.ttf’? y
3、建触发器
4、最后将要建的模板加入相应的主机。
方法:
默认cpu监控模板中的触发器,当负载在一定时间内(比如最近5分钟)超过5以上为报警阀值。但是在实际场景中,由于服务器配置不一样,这个默认的cpu触发器用起来意义就不大了,这时候就需要我们手动自定义cpu的触发器了。
在cpu utilization中有一个cpu idle时间,即cpu的空闲时间,当空闲时间小于20%的时候就是cpu大于80%的时候。所以cpu达到80%后报警的触发器配置如下:
名称:cpu user percent on {HOST.NAME} gt 80%
表达式:{Template OS Linux:system.cpu.util[,idle].avg(5)}<20
1、进入配置
点配置-主机,之后点想要建web页面监控的主机
关于加密: 内网可以不加密,比较消耗资源。
点右上角的 创建应用集
应用集一般配合监控项使用,是多个同类型的监控项的分类目录
名字随便输入,比如你后面这个应用集里面放的是监控cpu的,你可以写成cpu utils
场景模式可以用来测试访问主页、登入,测试,登出,测试(具体可以参考官网https://www.zabbix.com/documentation/5.0/zh/manual/web_monitoring/example)
2、然后同一页面,点步骤
4、 触发器
这里边选择完主机会出现刚才的web场景的选项
至此完成web页面状态码监控,注意这里只能监测到返回200以外的错误,像网页文件打不开这种404等之类的,而nginx挂了的超时并不会报错。可以用前边的进程监控,也可以利用nginx状态模块监控,也可以用下边的端口监控,当然nginx只监听一个端口时可以,多个端口建议用进程或状态模块。
四、端口监控
1、配置开始
点配置-主机-相应的主机-选中之前web监控建的模板。因为我这里是一个应用,所以用相同的模板,可以单独建立一个。
2、创建监控项
点进相应的主机后,创建监控项
3、创建触发器
接着点,触发器,创建触发器。
yum install net-snmp
vim /etc/snmp/snmpd.conf
# sec.name source community
com2sec notConfigUser default public //修改团体名称public 改成zabbix
# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser // notConfigUser改成关联至组 notConfigGroup
# Make at least snmpwalk -v 1 localhost -c public system fast again.
# name incl/excl subtree mask(optional)
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
//创建一个view,并对其授权可访问的OID范围, 自定义授权,否则zabbix server无法获取数据,这里需要用到SNMP MIB,参考https://blog.csdn.net/qq_36801585/article/details/105569627 ,华为的设备为1.3.6.1.4.1.2011
view systemview included 1.3.6.1.4.1.2011
//或者 获取所有的数据,如下取消前面#
view systemonly included .1
改完记得重启下
测试获取数据
yum -y install net-snmp-utils
snmpwalk -v 2c -c zabbix 192.168.118.254 .1.3.6.1.4.1.2021.192.168.118.20
服务页面正常后显示如下,SNMP变绿色:
交换机也可以同样获取,IP取值其中一个Vlan的IP就好,主机名确保和设置一致。
补允: snmpwalk使用方法很简单,如下:
snmpwalk -v 1或2c(代表SNMP版本) -c SNMP密码 IP地址 OID(对象标示符)
–v:指定snmp的版本, 1或者2,该参数必须有。
–c:指定连接设备SNMP读密码,该参数必须有。
IP:指定要walk的设备的IP地址,该参数必须有。
OID:代表要获取设备的指标oid,该参数不是必须的。
# snmpwalk -v 2c -c zabbix 192.168.118.254 //这样会获 取一大堆信息。。。
# snmpwalk -v 2c -c zabbix 192.168.118.254 system //查看系统信息
SNMPv2-MIB::sysDescr.0 = STRING: Huawei AR1220 Huawei Versatile Routing Platform Software VRP (R) software,Version 5.130 (AR1220 V200R003C00) Copyright (C) 2011-2012 Huawei Technologies Co., Ltd
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.2011.2.224.1
。。。
# snmpwalk -v 2c -c zabbix 192.168.118.254 ifDescr //获取网卡信息
打开Ensp模拟器设置需要的设置及中转的云
设置云连接到内网
路由、交换机的IP和路由设置好后,这里省略
[R1]snmp-agent
[R1]snmp-agent community read zabbix //设置团体名为zabbix
[R1]snmp-agent sys-info version all //开启所有版本的SNMP
//udp-port是监听端口,address是zabbix服务器地址,trap-hostname、trap-paramsname 服务主机名
[R1]snmp-agent target-host trap-hostname zabbix address 192.168.118.20 udp-port 161 trap-paramsname zabbix
[R1]snmp-agent trap enable /开启SNMP
[SW]snmp-agent
[SW]snmp-agent sys-info version v2c
[SW]snmp-agent community read/write XXX(团体名) zabbix //设置团体名为zabbix
[SW]snmp-agent target-host inform address udp-domain 192.168.118.20 params securityname zabbix v2c
[SW]snmp-agent trap enable /开启SNMP
或者 ??
[SW]snmp-agent target-host inform address udp-domain 192.168.118.10 udp-port 10160 params securityname zabbix v2c
新设备改端 口 snmp-agent port ?
添加一个宏{$SNMP_COMMUNITY},设置团体名字:
v3用户名zabbix
dis cu | inc snmp
snmp-agent
snmp-agent community read cipher zabbix
snmp-agent sys-info version v3
snmp-agent usm-user v3 zabbix //实体机只要用户名zabbix ,虚拟机还要后面跟组名,一样zabbix
snmp-agent usm-user v3 zabbix authentication-mode sha 回车输PW zabbix
snmp-agent usm-user v3 zabbix privacy-mode aes128 回车输PW
snmp-agent trap enab
虚拟机设置方法:
用户名:zabbix 组名:zabbix 认证算法:md5 加密算法:des56
snmp-agent
snmp-agent community read cipher zabbix
snmp-agent sys-info version v3
snmp-agent usm-user v3 zabbix zabbix authentication-mode sha zabbix123 privacy-mode des56 zabbix123
//配置Trap
snmp-agent target-host trap address udp-domain 192.168.118.10 udp-port 161 params securityname zabbix v3 privacy
snmp-agent trap enable
后面可以再加acl 控制
[SW]snmp-agent usm-user v3 zabbix zabbix authentication-mode sha zabbix123 privacy-mode des56 zabbix123 acl ?
INTEGER<2000-2999> Apply basic ACL
vim /etc/zabbix/zabbix_server.conf
参考以下内容修改:
StartVMwareCollectors=0 修改为
StartVMwareCollectors=3
此值取决于要监控的 VMware 服务的数量。在大多数情况下,这应该是
servicenum < StartVMwareCollectors < (servicenum * 2)
其中 servicenum 是 VMware 服务的数量。例如:如果您有 1 个 VMware 服务要将 StartVMwareCollectors 设置为 2。
systemctl restart zabbix-server
在管理-系统-高级设置,找到键:Config.HostAgent.plugins.solo.enableMob,然后将其设置为true
3.1 访问ManagedObjectReference页面
浏览器访问:https://esxi_ip/mob
获取主机UUID
浏览器访问:https://esxi_ip/mob/?moid=ha-host&doPath=hardware.systemInfo
UUID: aaa64d56-91e0-85ab-50ff-b4533a6acd39
设置宏:添加以下变量
{KaTeX parse error: Expected 'EOF', got '}' at position 11: VMWARE.URL}̲ {VMWARE.USERNAME}
{KaTeX parse error: Expected 'EOF', got '}' at position 16: VMWARE.PASSWORD}̲ {VMWARE.HV.UUID}
docker ps
查看到容器一直在重启,查看日志
docker logs -f --tail 500 0f3e375c1261
故障原因 ,大致说明没有空间,mysql容器无法启动
查询后,磁盘没有空间
[root@localhost ives]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 19M 892M 3% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 39G 39G 20K 100% / ------------------没 空间了。。。。。
/dev/sda1 1014M 185M 830M 19% /boot
/dev/mapper/centos-home 19G 203M 19G 2% /home
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
tmpfs 182M 0 182M 0% /run/user/1000
排查看,发现之前做的每天系统备份一直在运行,空间弄没了,清掉备份,再启动mysql容器
再看下还有提示。。。
查看日志文件了解故障详情
/var/log/zabbix/zabbix_server.log
4367:20220829:174119.862 database is down: reconnecting in 10 seconds
4367:20220829:174129.863 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
容器 mysql的位置 -v /opt/mysql/data:/var/lib/mysql \ 没找到。。。
查找并指定文件
find / -name mysql.sock //容器映射的位置没找到文件,关掉容器,把本机mysql启动后,就在/var/lib/mysql/看到生成文件了,看来不适合用docker容器的mysql
zabbix_server.conf文件中有一项需求,默认会在/var/lib/mysql/下找,,113行
DBSocket=
其他人的案例解决方式:
解决方式参考:https://blog.csdn.net/wojiuwangla/article/details/92585758
主要原因是zabbix服务运行开始监测时,会有太多个进程连接mysql,造成无法连上
可以查看日志文件了解故障详情
/var/log/zabbix/zabbix_server.log
数据库是存活状态,再看看数据库配置的进程数大小
vim /opt/mysql/conf/my.cnf //docker mysql的映射文件,默认为/etc/my.cnf
添加如下:
max_connections = 1000
max_connect_errors = 20000
设置完再重启下
查看maillog日志
# tail /var/log/maillog
Aug 31 09:44:11 localhost postfix/postdrop[27387]: warning: mail_queue_enter: create file maildrop/708842.27387: No space left on device
没发现最新的,查查服务配置,发现qq的smtp服务器设置成mail.qq.com了,改成smtp.qq.com
断开客户端主要网络等一会看看邮件,正常发送了,再恢复网络,接收也正常了,可以看到故障时的邮件及网络恢复后邮件。
# vim /etc/zabbix_agentd.conf
ServerActive=192.168.118.204 #填写zabbix_server服务端 的 IP
telnet服务,实际生产中可能有的服务器不安装,或拒绝这些,这里是因为添加了检测telnet出现的报错
对被监控机子安装下面这三个,
yum -y install telnet-server telnet xinetd
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
由于间隔太久,两种方式安装 ,docker的还启动着,二进制安装后就不能正常启动,试了改pid的位置 也不行,后面才想到,dokcer好像有装过,可能有冲突了,停了docker容器就好
-- Unit zabbix-server.service has begun starting up.
7月 09 21:50:51 K8SHA-master systemd[1]: Can't open PID file /run/zabbix/zabbix_server.pid (yet?) after
7月 09 21:50:51 K8SHA-master polkitd[716]: Unregistered Authentication Agent for unix-process:4756:1931
7月 09 21:50:51 K8SHA-master systemd[1]: Failed to start Zabbix Server.
-- Subject: Unit zabbix-server.service has failed
[root@zabbix ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8281
Server version: 5.5.68-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)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| zabbix |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [zabbix]> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
MariaDB [zabbix]> select * from users;
+--------+-------+--------+---------------+--------------------------------------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+--------------------------------------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
| 1 | Admin | Zabbix | Administrator | $2y$10$92nDno4n0Zm7Ej7Jfsz8WukBfgSS/U0QkIuu8WkJPihXBb2A1UrEK | | 1 | 0 | zh_CN | 30s | 3 | default | 0 | | 0 | 50 |
| 2 | guest | | | $2y$10$89otZrRNmde97rIyzclecuk6LwKAsHN0BcvoOKGjbT.BwMBfm7G06 | | 0 | 15m | en_GB | 30s | 1 | default | 0 | | 0 | 50 |
| 3 | itczl | | | $2y$10$142fFWpyYY3.qpE0SSS02O8O32vTAUVpj82xAXmJt7PrH5jkbSR5m | | 0 | 0 | zh_CN | 30s | 1 | default | 0 | | 0 | 50 |
+--------+-------+--------+---------------+--------------------------------------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+
3 rows in set (0.00 sec)
MariaDB [zabbix]> update user set password=PASSWORD('Root@11111') where user='Admin';
MariaDB [zabbix]> flush privileges;
zabbix server 在开启Discovery功能后,zabbix web页面报警提示:“Zabbix server :Ulitization of discoverer processes over 75%”。
原因:
每个discovery任务占用一个discovery进程,但是zabbix server默认只配置了一个discovery。
所以告警“Zabbix server :Ulitization of discoverer processes over 75%”和Utilization of data collectors 占用100%
最简单的处理办法就是直接关闭discovery功能。告警即可解决。
优化的解决办法是修改配置文件把discovery进程数量调大。
方法:
编辑zabbix server配置文件/etc/zabbix/zabbix_server.conf
找到StartDiscoverers,把注释去掉,值给个3或者5即可,然后重启zabbix server服务。
systemctl restart zabbix-server
下载源包 https://www.zabbix.com/cn/download_sources#50LTS
令解压缩源代码
# tar -zxvf zabbix-5.0.35.tar.gz
# cd zabbix-5.0.35/
# 安装依赖
# yum install mysql-devel libcurl libevent libevent-devel fping curl-devel libxml2 libxml2-devel
## 如果要启用snmp的话
# yum install mysql-devel libcurl libevent libevent-devel fping curl-devel libxml2 libxml2-devel snmpd net-snmp-devel net-snmp
groupadd zabbix
useradd -g zabbix zabbix
导入数据库脚 本
mysql -uroot -p
use zabbix;
source /opt/zabbix-5.0.35/database/mysql/schema.sql;
source /opt/zabbix-5.0.35/database/mysql/images.sql;
source /opt/zabbix-5.0.35/database/mysql/data.sql;
如果要配置 Zabbix server 和 Zabbix proxy 的源代码,您可以运行以下内容:
//查看帮助
./configure --help
./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
./configure --prefix=/opt/zabbix/ --enable-server --enable-agent --with-mysql --with-libcurl --with-libxml2 --with-net-snmp
make && make install
该示例示范了如何使用内置 MySQL 数据库、Zabbix server、基于 Nginx Web 服务器的 Zabbix Web 界面和 Zabbix Java gateway 来运行 Zabbix 应用。
1.创建专用于Zabbix组件容器的网络:
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
2.启动空的MySQL服务器实例
# docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-d mysql:8.0 \
--restart unless-stopped \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
3.启动Zabbix Java gateway实例
# docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-5.0-latest
4、启动Zabbix snmptraps实例
# docker run --name zabbix-snmptraps -t \
-v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
-v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
--network=zabbix-net \
-p 162:1162/udp \
--restart unless-stopped \
-d zabbix/zabbix-snmptraps:alpine-5.0-latest
5.启动Zabbix server实例并将该实例与创建的MySQL服务器实例链接
# docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
-e ZBX_ENABLE_SNMP_TRAPS="true" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
--volumes-from zabbix-snmptraps \
-d zabbix/zabbix-server-mysql:alpine-5.0-latest
Zabbix服务器实例向主机公开10051 / TCP端口(Zabbix trapper)
5.启动Zabbix Web界面,并将实例与创建的MySQL服务器和Zabbix server实例链接
# docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest
Zabbix Web界面实例向主机公开80 / TCP端口(HTTP)
docker pull mysql:8.0
docker pull zabbix/zabbix-java-gateway:alpine-5.0-latest
docker pull zabbix/zabbix-snmptraps:alpine-5.0-latest
docker pull zabbix/zabbix-server-mysql:alpine-5.0-latest
docker pull zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest
定位到是PHP的问题,以下是PHP的优化配置
[root@zabbix ~]# cat /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 8
pm.max_spare_servers = 35
pm.max_requests = 2000
php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/rh/rh-php72/lib/php/session/
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Shanghai
[root@zabbix ~]# systemctl restart rh-php72-php-fpm
[root@zabbix ~]# systemctl status rh-php72-php-fpm