设为首页 收藏本站
查看: 1046|回复: 0

[经验分享] Linux监控系统之Zabbix

[复制链接]

尚未签到

发表于 2019-1-18 08:15:32 | 显示全部楼层 |阅读模式
Linux监控系统之Zabbix

Zabbix介绍
  Zabbix是由  Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。整合了Catic和Nagios的特性。
  使用各种 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各种协定做监视。
  在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。

Zabbix原理
  一个监控系统运行的大概的流程是这样的:
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。

Zabbix组件
  zabbix由以下几个组件部分构成:
1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
  2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
  3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;
  4、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
  5、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;

Zabbix原理图


试验环境


角色
IP地址




zabbix-server
192.168.58.149


zabbix-client
192.168.58.157

Zabbix安装
  首先搭建LAMP环境,我这里选择的是使用YUM仓库安装。

[root@promote ~]# yum install -y \
> httpd \
> mariadb-server mariadb \
> php \
> php-mysql \
> php-gd \
> libjpeg* \
> php-ldap \
> php-odbc \
> php-pear \
> php-xml \
> php-xmlrpc \
> php-mhash
  安装好lamp架构后,修改httpd.conf配置文件。

[root@promote ~]# vim /etc/httpd/conf/httpd.conf

DirectoryIndex index.html index.php

  修改php的配置文件php.ini修改时区,否则会报错。

[root@promote ~]# vim /etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = PRC  #修改为中国时区、
  关闭防火墙和SELinux功能。

[root@promote ~]# systemctl stop firewalld.service
[root@promote ~]# setenforce 0
  开启httpd和mariadb服务,进行配置。

[root@promote ~]# systemctl start httpd.service
[root@promote ~]# systemctl start mariadb.service
[root@promote ~]# netstat -ntap | egrep '(80|3306)'
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      68787/mysqld        
tcp6       0      0 :::80                   :::*                    LISTEN      67276/httpd
#可以看到80和3306端口已经开启
  下面可以对mariadb进行一些安全设置。

[root@promote ~]# mysql_secure_installation
#可以根据自己情况选择对应的设置
  编写php测试页面,进行测试。

[root@promote ~]# vim /var/www/html/index.php

  访问http://192.168.58.149/index.php,容易过访问到下面界面说明LAMP搭建成功。

进入数据库创建给zabbix储存数据的数据库,已经赋予相关权限。

[root@promote ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.60-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)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
#创建一个叫zabbix的数据库,默认字符集为utf-8
MariaDB [(none)]> GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected (0.00 sec)
#赋予权限
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#刷新权限
  下面编写数据库测试登录页面。

[root@promote ~]# vim /var/www/html/index.php

  再来访问http://192.168.58.149/index.php,可以看到fail,这里原因是在数据库中有空用户的存在。


[root@promote ~]# mysql -u root -p
Enter password:
MariaDB [(none)]> select user,host from mysql.user;
+--------+-------------------------+
| user   | host                    |
+--------+-------------------------+
| zabbix | %                       |
| root   | 127.0.0.1               |
| root   | ::1                     |
|        | localhost               |
| root   | localhost               |
|        | promote.cache-dns.local |
| root   | promote.cache-dns.local |
+--------+-------------------------+
7 rows in set (0.00 sec)
#可以看到有两个空用户,我们将这两个空用户删除。
MariaDB [(none)]> drop user ''@localhost;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> drop user ''@'promote.cache-dns.local';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select user,host from mysql.user;
+--------+-------------------------+
| user   | host                    |
+--------+-------------------------+
| zabbix | %                       |
| root   | 127.0.0.1               |
| root   | ::1                     |
| root   | localhost               |
| root   | promote.cache-dns.local |
+--------+-------------------------+
5 rows in set (0.00 sec)
  然后我们再来访问http://192.168.58.149/index.php,可以看到访问成功。

下面安装Zabbix Server,首先安装相关依赖包。

[root@promote ~]# yum install php-bcmath php-mbstring -y
  下载zabbix的yum源。

[root@promote ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
[root@promote ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  zabbix.repo
#可以看到自动生成了zabbix.repo文件。
  安装zabbix-server相关软件包。

[root@promote ~]# yum install zabbix-server-mysql zabbix-web-mysql -y
  在数据库中生成zabbix的数据库文件。

[root@promote ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz | mysql -uzabbix -p  zabbix
Enter password:
#注意这里是使用zabbix用户和密码登录的。
  我们查看zabbix-server的配置文件并使用正则表达式进行过滤。

[root@promote ~]# grep -n '^[a-Z]' /etc/zabbix/zabbix_server.conf
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix
117:DBUser=zabbix
356:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
474:Timeout=4
517:AlertScriptsPath=/usr/lib/zabbix/alertscripts
528:ExternalScripts=/usr/lib/zabbix/externalscripts
564:LogSlowQueries=3000
  这里我们只要插入一行DBPassword=admin123.

[root@promote ~]# sed -i '127aDBPassword=admin123' /etc/zabbix/zabbix_server.conf
[root@promote ~]# grep -n '^[a-Z]' /etc/zabbix/zabbix_server.conf
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix
117:DBUser=zabbix
128:DBPassword=admin123
357:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
475:Timeout=4
518:AlertScriptsPath=/usr/lib/zabbix/alertscripts
529:ExternalScripts=/usr/lib/zabbix/externalscripts
565:LogSlowQueries=3000
  将httpd服务中zabbix用户的zabbix.conf中的时区改为Asia/Shanghai。

[root@promote ~]# vim /etc/httpd/conf.d/zabbix.conf

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 always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai

  下面主要是解决安装好zabbix后,网页显示会用乱码的问题,首先将配置文件中的字体都改为kaiti。

vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_FONT_NAME', 'graphfont');
#这是默认字体
[root@promote ~]# sed -i 's/graphfont/kaiti/g' /usr/share/zabbix/include/defines.inc.php
[root@promote ~]# sed -n '/graphfont/p' /usr/share/zabbix/include/defines.inc.php
#可以看到所有的都替换为了kaiti
[root@promote ~]# cp STKAITI.TTF /usr/share/zabbix/fonts/
#将字体文件复制到zabbix的字体目录中
  启动zabbix-server服务。

[root@promote ~]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@promote ~]# systemctl start zabbix-server
[root@promote ~]# netstat -anpt | grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      93906/zabbi_server
tcp6       0      0 :::10051                :::*                    LISTEN      93906/zabbi
#可以看到zabbix服务已经开启,相对应的端口已经打开
  重启httpd服务。

[root@promote ~]# systemctl restart httpd.service
  访问http://192.168.58.149/zabbix/






配置完服务端后,下面配置客户端,也就是需要被监控的客户机端。首先,配置zabbix的yum源。

[root@www1 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
[root@www1 ~]# yum install -y zabbix-agent
  下面修改zabbix_agentd.conf配置文件

[root@www1 ~]# grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=127.0.0.1
139:ServerActive=127.0.0.1
150:Hostname=Zabbix server
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
  主要修改下面几行

Server=192.168.58.149
ServerActive=192.168.58.149
Hostname=Zabbix1    #这个随意更改
  关闭防火墙和SELinux功能

[root@www1 ~]# systemctl stop firewalld.service
[root@www1 ~]# setenforce 0
  启用zabbix-agent功能。

[root@www1 ~]# systemctl enable zabbix-agent.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@www1 ~]# systemctl restart zabbix-agent.service
[root@www1 ~]# netstat -anpt | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      4936/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      4936/zabbix_agentd
#可以看到监听端口10050已经开启
  下面需要在zabbix检测网页上添加被监控主机。




最后我们测试,关闭被监控主机的ssh服务,查看是否会有报警。

[root@www1 ~]# systemctl stop sshd.service





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-664584-1-1.html 上篇帖子: zabbix学习(十一)zabbix_SNMP监控相关 下篇帖子: Linux监控系统之Zabbix
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表