zabbix agent安装在被监控的主机上,负责定期收集被监控端的本地各项数据,并发送至zabbix server端,zabbix server收到数据,将数据存储到数据库( zabbix database)中,用户基于zabbix web的可视化界面可以看到前端数据图像。当zabbix监控某个具体的项目时,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。
systemctl stop firewalld.service #关闭防火墙及核心安全机制
setenforce 0
vim /etc/yum.repos.d/nginx.repo #创建nginx的yum仓库
[nginx]
name=nginx
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
yum clean all
yum list
yum install -y nginx
systemctl start nginx
systemctl enable nginx
netstat -natp | grep 80
yum -y install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service
netstat -natp | grep 3306
mysql_secure_installation
Enter current password for root (enter for none): #回车
Set root password? [Y/n] #Y
New password: #123456
Re-enter new password: #123456
Remove anonymous users? #n
Disallow root login remotely? #n
Remove test database and access to it? #n
Reload privilege tables now? #Y
登录验证
mysql -u root -p123456
exit
yum -y install epel-release.noarch
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #yum源的建立
yum install -y php72w php72w-devel php72w-fpm php72w-gd php72w-mbstring php72w-mysql #安装环境依赖包
php -v #查看版本
vim /etc/php-fpm.d/www.conf
user = nginx #第8行
group = nginx #第10行
index index.php index.html index.htm; #第10行添加index.php
location ~ \.php$ { #配置php模块,去掉注释
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
vim /etc/php.ini
short_open_tag = On #202行修改,支持php短标签
expose_php = Off #359行修改,隐藏php版本
##为PHP兼容zabbix进行修改,优化配置要求
max_execution_time = 300 #368行修改,执行时间
max_input_time = 300 #378行修改,接收数据等待时向
memory_limit = 128M #389行,每个脚本占用内存
post_max_size = 16M #656行修改,POST数据大小
upload_max_filesize = 2M #799行,下载文件大小
always_populate_raw_post_data = -1 #800行添加,可以用$HTTP_RAW_POST DATA
date.timezone = Asia/Shanghai #877行取消注释并添加时区
开启服务
systemctl start php-fpm
systemctl enable php-fpm
netstat -natp | grep 9000
systemctl restart nginx
vim /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
http://192.168.153.40/info.php
vim /usr/share/nginx/html/test.php
<?php
$link=mysqli_connect('127.0.0.1','root','123456');
if ($link) echo "数据库连接成功!";
else echo "数据库连接失败~";
?>
http://192.168.153.40/test.php
mysql -uroot -p123456
create database zabbix character set utf8 collate utf8_bin;
grant all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';
flush privileges;
exit
vim /usr/share/nginx/html/zabbix.php
<?php
$link=mysqli_connect('127.0.0.1','zabbix' ,'admin123' );
if ($link) echo "zabbix数据库连接成功 !";
else echo "zabbix数据库连接失败 !";
?>
http://192.168.153.40/zabbix.php
注:在连接zabbix数据库失败的解决办法,删除用户名为空的主机即可
mysql -uroot -p123456
select user,host from mysql.user;
+--------+-----------+
| user | host |
+--------+-----------+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | wt |
| root | wt |
+--------+-----------+
7 rows in set (0.00 sec)
drop user ''@localhost;
drop user ''@wt;
exit
刷新重连
rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -padmin123 zabbix
mysql -u zabbix -padmin123
use zabbix;
show tables;
exit
vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log #38行
LogFileSize=0 #49行
PidFile=/var/run/zabbix/zabbix_server.pid #72行
SocketDir=/var/run/zabbix #82行
DBHost=localhost #91行,取消注释
DBName=zabbix #100行
DBUser=zabbix #116行
DBPassword=admin123 #124行,取消注释,zabbix数据库的密码
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log #356行
Timeout=4 #473行
AlertScriptsPath=/usr/lib/zabbix/alertscripts #516行
ExternalScripts=/usr/lib/zabbix/externalscripts #527行
LogSlowQueries=3000 #563行
vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai #20行,修改时区
cp -r /usr/share/zabbix/ /usr/share/nginx/html/
chown -R zabbix:zabbix /etc/zabbix/
chown -R zabbix:zabbix /usr/share/nginx/
chown -R zabbix:zabbix /usr/lib/zabbix/
chmod -R 755 /etc/zabbix/web/
chmod -R 777 /var/lib/php/session/
systemctl start zabbix-server
systemctl enable zabbix-server
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
netstat -ntap | grep 10051
systemctl restart php-fpm.service
systemctl restart nginx
http://192.168.153.40/zabbix/setup.php
http://192.168.153.40/zabbix
账号:Admin 密码:zabbix
①关闭防火墙和核心防护机制
systemctl stop firewalld
setenforce 0
②部署zabbix-agent
rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y zabbix-agent
③修改配置文件
PidFile=/var/run/zabbix/zabbix_agentd.pid #13行
LogFile=/var/log/zabbix/zabbix_agentd.log #32行
LogFileSize=0 #43行
Server=192.168.153.40 #98行修改,指向监控服务器
ServerActive=192.168.153.40 #139行修改,指向监控服务器
Hostname=test #150行,指定名称
Include=/etc/zabbix/zabbix_agentd.d/*.conf #268行
④开启服务并检查端口
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -natp | grep zabbix #查看10050端口
如何切换成中文界面
添加被监控的主机
在zabbix图形页面——配置——主机——创建主机(定义主机名称、添加群组、填写被监控端主机IP地址)——模板——选定要监控的模板(httpd sshd服务)——选择——添加(添加连接模板)——添加(添加主机)
yum -y install mailx
vim /etc/mail.rc
'//末尾添加'
set from=邮箱
set smtp=smtp.qq.com
set smtp-auth-user=邮箱
set smtp-auth-password=邮箱授权码
set smtp-auth=login
测试下邮件是否可以发送
echo "hello tomorrow" | mail -s "test" 邮箱
编写邮件脚本
cd /usr/lib/zabbix/alertscripts
vim mailx.sh
#!/bin/bash
#send mail
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
创建日志文件并修改权限并测试
touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
sh mailx.sh 邮箱 zabbix "this is test"
管理 > 报警媒介类型 > 创建媒体类型
名称自定义,后面会用到
类型选择脚本
脚本名称是之前编辑的脚本名称
脚本的三个参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
管理 > 用户 > 点击Admin > 报警媒介 > 添加
类型选择之前自定义的名称
收件人填自己邮箱
点击添加
点击更新
配置 > 动作 >删除默认的动作 > 创建动作 > 删除默认 > 创建动作
添加执行操作
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容 告警主机:{HOST.NAME}
告警IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}-{ITEM.VALUE}
事件ID:{EVENT.ID}
添加恢复操作
除了消息内容的模板,其他和上一步基本一致
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容 恢复主机:{HOST.NAME}
恢复IP:{HOST.IP}
恢复时间:{EVENT.DATE}-{EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}-{ITEM.VALUE}
事件ID:{EVENT.ID}
最后再确认一下操作是不是都添加完成了,如果没完成是不会发送邮件的!!
被监控端停止sshd服务
systemctl stop sshd
可以看到邮件已经发送过来了,并且仪表板的问题界面开始闪烁
重新开启服务后同样会有邮件发来
systemctl start sshd
由于固态驱动器(SSD)的速度比传统的硬盘驱动器(HDD)快得多,并且价格越来越便宜...
MFC项目在vs2017编译正常无报错,但是升级vs2019后一打开项目就报如下错误。 项...
这5个PHP编程中的不良习惯,一定要改掉 PHP世界上最好的语言! 测试循环前数组是...
目录 1. C语言文件接口(库函数) 1.1 fopen 1.2 fclose 1.3 fread 1.4 fwrite 1.5...
目录 读者基础 ?微服务架构梳理 https://www.coder4.com/homs_online/ ? ? 读者...
本文实例为大家分享了javascript实现倒计时提示框的具体代码,供大家参考,具体...
在大三的时候,一直就想搭建属于自己的一个博客,但由于各种原因,最终都不了了...
首先到这里下载其源码。里面东西挺多的,我们基本上可以把它放到两个文件夹就是...
今天看到个不错的网页播放器,感觉不错,大家可以测试 我写的一个播放器网页: ...
本文实例为大家分享了vue实现按钮切换图片的具体代码,供大家参考,具体内容如下...