LNMP 说明:
linux centos7系统
nginx 实现前端服务器
mysql 实现数据库fuwu
php 实现页面
安装nginx php php-mysql mariadb mariadb-server zabbix-server zabbix-web zabbix-mysql
systemctl start mariadb
mysql
MariaDB [(none)]> create database zabbix charset utf8;
MariaDB [(none)]> grant all on zabbix.* to "zabbix@localhost identified by “cui0116”;
MariaDB [(none)]> flush privileges;
yum install zabbix40-dbfiles-mysql -y
导入zabbix需要的sql:
mysql -uzabbix -pcui0116 zabbix mysql -uzabbix -pcui0116 zabbix mysql -uzabbix -pcui0116 zabbix
vi /etc/zabbix/zabbix_server.conf
SocketDir=/var/lib/mysql
DBPassword=cui0116
启动服务:
systemctl start zabbix-server
vi /etc/nginx/conf.d/default.conf
location / {
root /usr/share/zabbix/;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /usr/share/zabbix/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_buffer_size 64k;
fastcgi_buffers 32 64K;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
启动nginx、php服务
systemctl start nginx php-fpm
vi /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone =Asia/Shanghai
保存后重启php服务:
systemctl restart php-fpm
浏览器中原先的错误已消失:
发现一直提示错误,应该是msyql创建zabbix数据库是,字符编码出现了问题,
MariaDB [(none)]> drop database zabbix;
Query OK, 144 rows affected (0.08 sec)
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin
-> ;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all on zabbix.* to "zabbix"@localhost identified by "cui0116";
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]>
并重新导入sql:
[root@node2 web]# mysql -uzabbix -pcui0116 zabbix < /usr/share/zabbix-mysql/schema.sql
[root@node2 web]# mysql -uzabbix -pcui0116 zabbix < /usr/share/zabbix-mysql/images.sql
[root@node2 web]# mysql -uzabbix -pcui0116 zabbix < /usr/share/zabbix-mysql/data.sql
[root@node2 web]# cat zabbix.conf.php
;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'cui0116';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '京峰监控';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
接下来,就可以进入zabbix的主页,对监控做配置了:
登录Zabbix WEB界面,默认用户名和密码为:Admin/zabbix
语言可选择中文:
点击页面右上角—> 选择语言复选框,选择中文:
134、136 主机上执行:
[root@node3 ~]# yum install zabbix40-agent -y
修改配置文件:
vi /etc/zabbix_agent.conf
Server=192.168.10.135
启动 agent
systemctl start zabbix-agent
1、添加自动发现的规则,IP地址选择对应虚拟机的IP范围;
检查类型选择zabbix客户端,这样就是只有客户端启动了zabbix-agent就可以发现它:
2、创建动作,基于刚才创建的规则去执行动作:
点击创建动作:
选择自动发现规则,选择刚刚创建的规则的名字:
动作包括:添加主机、添加主机到群组、链接到模板:
添加后,到主机页面查看主机添加成功:
1、为保证操作的准确性,将刚才自动发现规则的动作禁用掉,并删除刚刚添加成功的主机:
现在监控主机列表是初始状态了,是空的:
开始添加主机了:
1、 agent -134:
[root@node1 ~]# grep -iavE “^$|#” /etc/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.135
ServerActive=192.168.10.135
Hostname=agent-node1
HostMetadata=zabbix-linux
2、 agent-136:
[root@node3 ~]# grep -iavE “^$|#” /etc/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.135
ServerActive=192.168.10.135
Hostname=agent-node3
HostMetadata=zabbix-linux
3、 server-136:
[root@node2 web]# grep -iavE “^$|#” /etc/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.10.135
ServerActive=192.168.10.135
Hostname=zabbix-server
HostMetadata=zabbix-linux
配置—>发现 选择自动注册,点击创建:
主机元数据,选择刚才添加的HostMetadata键对应的值zabbix-linux
动作跟刚才自动发现方式的保持一致:
保存后,到主机页面,查看主机添加成功:
可以看到,三台主机的名称跟刚才自动发现方式添加的主机名称不一致,原因我主动注册这种方式添加主机时,是会默认先读取hostname的值,如果hostname注释了,则读取 HostnameItem的值,HostnameItem的值其实就是 主机 uname 的值
zabbix-server 135 主机上执行: yum install mailx -y
修改mailx 的配置文件:
set [email protected] #发件箱 个人邮箱的账号
set smtp=221.176.9.170 smtp.139.com:25 #smtp地址,直接就用139的服务器地址和端口就行
set [email protected]
set smtp-auth-password=xiaocui123 #邮箱的密码
保存后即可进行邮件发送测试:
[root@node2 alertscripts]# echo “zabbix test mail” |mail -s “zabbix” [email protected] ##这个是收件箱地址,测试用的话可以和你的个人邮箱一样的:
找到zabbix_server.conf 配置文件中的 AlertScriptsPath目录
[root@node2 alertscripts]# grep -i script /etc/zabbix_server.conf
### Option: AlertScriptsPath
# Full path to location of custom alert scripts.
# AlertScriptsPath=/usr/share/zabbix/alertscripts
AlertScriptsPath=/var/lib/zabbixsrv/alertscripts
到/var/lib/zabbixsrv/alertscripts下编写脚本,
cd /var/lib/zabbixsrv/alertscripts
[root@node2 alertscripts]# vi mail.sh
#!/bin/bash
echo “$3” | mail -s “$2” $1
管理----报警媒介类型:
选择脚本,并填写名称为刚才编辑的脚本名称,参数即对应 脚本中的第1、2、3个参数:
之后点击页面的右上角,编辑管理员:
这样邮件报警的前期准备工作完成了:
举例:添加一个nginx服务是否正常的告警:
监控内容如下,选择一个 tcp port 的键值监控,当服务能正常tcp连接时返回值1,否则返回值0:
到134 主机上启动nginx服务:
[root@node1 ~]# systemctl start nginx
[root@node1 ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13603/nginx: master
到135 zabbix-server 主机 执行zabbix_get 测试监控项是否能正常返回数值:
[root@node2 alertscripts]# zabbix_get -s 192.168.10.134 -p 10050 -k 'net.tcp.port[192.168.10.134,80]'
1
当134上停止nginx服务时,上述命令的结果就是0:
[root@node2 alertscripts]# zabbix_get -s 192.168.10.134 -p 10050 -k 'net.tcp.port[192.168.10.134,80]'
0
到web页面上查看该监控项生成的数据图形,应该是值为1的图形:
主机---->触发器—>创建触发器
监控项与上述添加的nginx 监控项进行关联,结果不为1 就触发告警:
表示当nginx的监控项监控到nginx服务不正常,即zabbix_get -s 192.168.10.134 -p 10050 -k 'net.tcp.port[192.168.10.134,80]'的返回值不为1时,即触发到触发器,由触发器执行哪些动作,以及该触发器恢复后又进行哪些动作:
这里为了测试,选择 当触发器的示警程度大于等于 信息 即告警:
或者,也可以只针对某个特定的触发器执行某些动作,那么触发条件这里就写触发器,选择那里填刚才添加的触发器名称,进行关联:
操作是指,当告警触发了该触发器时,执行哪些操作,这里配置成发邮件给管理员:
恢复操作,是指当nginx监控项的返回值正常,或手动处理关闭该告警值应执行什么动作,这里还是配置成发邮件给管理员:
更新操作,可不改
134 主机上将启动着的nginx服务停止,测试告警能否通过邮件发送:
[root@node1 ~]# systemctl stop nginx
web页面上 监测—>问题
可以看到已经执行了第一步,发送邮件:
恢复nginx服务测试邮件是否通知:
[root@node1 ~]# systemctl start nginx
已经执行了第2个动作,查看邮箱: