基于lnmp部署zabbix监控平台

一、环境说明:

  • LNMP 说明:
    linux centos7系统
    nginx 实现前端服务器
    mysql 实现数据库fuwu
    php 实现页面

  • Zabbix监控系统具体监控系统流程:
    基于lnmp部署zabbix监控平台_第1张图片

  • 主机部署
    基于lnmp部署zabbix监控平台_第2张图片
    版本要求:
    Zabbix3.2+ PHP版本需要使用PHP5.4.0版本

二、zabbix-server 安装:

1、安装软件包:

安装nginx php php-mysql mariadb mariadb-server zabbix-server zabbix-web zabbix-mysql

  • yum install nginx mariadb mariadb-server mariadb-devel php php-mysql php-devel php-fpm -y
  • yum install zabbix40-web zabbix40-web-mysql zabbix40-server -y

2、 创建zabbix 数据库:

2.1 启动mariadb,创建zabbix数据库,授权zabbix 用户访问权限

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;

2.2 安装zabbix需要的数据库文件:

yum install zabbix40-dbfiles-mysql -y
导入zabbix需要的sql:
mysql -uzabbix -pcui0116 zabbix mysql -uzabbix -pcui0116 zabbix mysql -uzabbix -pcui0116 zabbix

2.3 修改zabbix-server 配置文件中的用户名 密码、socket文件

vi /etc/zabbix/zabbix_server.conf
SocketDir=/var/lib/mysql
DBPassword=cui0116
启动服务:
systemctl start zabbix-server

3、修改nginx 配置文件,指向php,并修改主页文件

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

4、前台访问zabbix

4.1 浏览器中输入主机地址:192.168.10.135

基于lnmp部署zabbix监控平台_第3张图片

4.2 按照提示修改php的配置文件内容:

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
浏览器中原先的错误已消失:
基于lnmp部署zabbix监控平台_第4张图片

4.3 之后输入mysql中grant语句中的授权的用户名、密码:

基于lnmp部署zabbix监控平台_第5张图片
发现一直提示错误,应该是msyql创建zabbix数据库是,字符编码出现了问题,
基于lnmp部署zabbix监控平台_第6张图片

4.4 按照以下方法重建:
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

再次访问就可以连接了,并自动安装zabbix-web:
基于lnmp部署zabbix监控平台_第7张图片

基于lnmp部署zabbix监控平台_第8张图片

4.5 安装完成后,在本机的 /etc/zabbix/web 目录下会自动生成配置文件,里面的用户名、密码、db等数据库相关的信息会按照你前几步填的内容生成好:
[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
基于lnmp部署zabbix监控平台_第9张图片

4.6 自此安装zabbix server端已完成:

基于lnmp部署zabbix监控平台_第10张图片
语言可选择中文:
点击页面右上角—> 选择语言复选框,选择中文:
基于lnmp部署zabbix监控平台_第11张图片

三、zabbix-server 安装:

1、客户端安装:

134、136 主机上执行:
[root@node3 ~]# yum install zabbix40-agent -y
修改配置文件:
vi /etc/zabbix_agent.conf

Server=192.168.10.135

启动 agent
systemctl start zabbix-agent

2、web 页面添加规则,添加agent

  • Zabbix监控客户端分为主动监控与被动监控,主被动模式以客户端为参照,Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加。可以关闭被动模式的方法:在配置文件中加入 StartAgents=0,即为关闭被动模式。主被动监控模式区别如下:
     Zabbix主动模式:Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,Zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active items数据值server或者proxy;
     Zabbix被动模式:Server向agent请求获取监控项的数据,agent返回数据,Server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并且响应,Server处理接收到的数据。
2.1 基于自动发现方式添加agent主机

1、添加自动发现的规则,IP地址选择对应虚拟机的IP范围;
检查类型选择zabbix客户端,这样就是只有客户端启动了zabbix-agent就可以发现它:
基于lnmp部署zabbix监控平台_第12张图片
2、创建动作,基于刚才创建的规则去执行动作:

基于lnmp部署zabbix监控平台_第13张图片
点击创建动作:
选择自动发现规则,选择刚刚创建的规则的名字:
基于lnmp部署zabbix监控平台_第14张图片
动作包括:添加主机、添加主机到群组、链接到模板:
基于lnmp部署zabbix监控平台_第15张图片
添加后,到主机页面查看主机添加成功:
基于lnmp部署zabbix监控平台_第16张图片

2.2 基于主动注册方式添加agent主机

1、为保证操作的准确性,将刚才自动发现规则的动作禁用掉,并删除刚刚添加成功的主机:
基于lnmp部署zabbix监控平台_第17张图片
基于lnmp部署zabbix监控平台_第18张图片
现在监控主机列表是初始状态了,是空的:
基于lnmp部署zabbix监控平台_第19张图片
开始添加主机了:

1、修改134、135、136 主机的agent 配置文件:
  • 将Server、ServerActive 都修改为zabbix-server对应的IP地址;
  • HostMetadata 修改为统一的内容,方便下一步添加主动注册的规则

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

2、web页面添加主动注册规则

配置—>发现 选择自动注册,点击创建:
基于lnmp部署zabbix监控平台_第20张图片
主机元数据,选择刚才添加的HostMetadata键对应的值zabbix-linux
基于lnmp部署zabbix监控平台_第21张图片
动作跟刚才自动发现方式的保持一致:
基于lnmp部署zabbix监控平台_第22张图片
保存后,到主机页面,查看主机添加成功:

基于lnmp部署zabbix监控平台_第23张图片

可以看到,三台主机的名称跟刚才自动发现方式添加的主机名称不一致,原因我主动注册这种方式添加主机时,是会默认先读取hostname的值,如果hostname注释了,则读取 HostnameItem的值,HostnameItem的值其实就是 主机 uname 的值

四、实现邮件告警

1、安装邮件插件

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] ##这个是收件箱地址,测试用的话可以和你的个人邮箱一样的:

基于lnmp部署zabbix监控平台_第24张图片

2 、收到邮件就成功了,接下来编写一个邮件发送用的脚本,为下一步实现邮箱告警做准备:

找到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

3、到web页面配置邮箱告警媒介:

管理----报警媒介类型:
基于lnmp部署zabbix监控平台_第25张图片
选择脚本,并填写名称为刚才编辑的脚本名称,参数即对应 脚本中的第1、2、3个参数:
基于lnmp部署zabbix监控平台_第26张图片
之后点击页面的右上角,编辑管理员:
基于lnmp部署zabbix监控平台_第27张图片
这样邮件报警的前期准备工作完成了:

4、添加告警

4.1、到 主机—>监控项 下添加一个新的监控项:

举例:添加一个nginx服务是否正常的告警:
基于lnmp部署zabbix监控平台_第28张图片
监控内容如下,选择一个 tcp port 的键值监控,当服务能正常tcp连接时返回值1,否则返回值0:
基于lnmp部署zabbix监控平台_第29张图片
到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的图形:
在这里插入图片描述
基于lnmp部署zabbix监控平台_第30张图片

4.2 添加一个关联该监控项的触发器:

主机---->触发器—>创建触发器
基于lnmp部署zabbix监控平台_第31张图片
监控项与上述添加的nginx 监控项进行关联,结果不为1 就触发告警:
基于lnmp部署zabbix监控平台_第32张图片

基于lnmp部署zabbix监控平台_第33张图片

4.3 添加触发器执行的动作

表示当nginx的监控项监控到nginx服务不正常,即zabbix_get -s 192.168.10.134 -p 10050 -k 'net.tcp.port[192.168.10.134,80]'的返回值不为1时,即触发到触发器,由触发器执行哪些动作,以及该触发器恢复后又进行哪些动作:

基于lnmp部署zabbix监控平台_第34张图片
这里为了测试,选择 当触发器的示警程度大于等于 信息 即告警:

基于lnmp部署zabbix监控平台_第35张图片
或者,也可以只针对某个特定的触发器执行某些动作,那么触发条件这里就写触发器,选择那里填刚才添加的触发器名称,进行关联:
基于lnmp部署zabbix监控平台_第36张图片

操作是指,当告警触发了该触发器时,执行哪些操作,这里配置成发邮件给管理员:
基于lnmp部署zabbix监控平台_第37张图片
恢复操作,是指当nginx监控项的返回值正常,或手动处理关闭该告警值应执行什么动作,这里还是配置成发邮件给管理员:
基于lnmp部署zabbix监控平台_第38张图片
更新操作,可不改

4.4 测试:

134 主机上将启动着的nginx服务停止,测试告警能否通过邮件发送:
[root@node1 ~]# systemctl stop nginx
web页面上 监测—>问题
基于lnmp部署zabbix监控平台_第39张图片
可以看到已经执行了第一步,发送邮件:
基于lnmp部署zabbix监控平台_第40张图片
恢复nginx服务测试邮件是否通知:
[root@node1 ~]# systemctl start nginx
在这里插入图片描述
已经执行了第2个动作,查看邮箱:
基于lnmp部署zabbix监控平台_第41张图片

你可能感兴趣的:(运维监控,zabbix)