Zabbix
1. 监控介绍
- 监控存在的原因
- 站点出了问题,没有人知道,等用户发现了,才提醒供应商;对公司影响很大,监控可以提前发现潜在故障隐患,第一时间解决掉,把影响降低。
- 常见开源监控软件
- cacti、nagios、zabbix、smokeping、open-falcon等等,其中nagios、zabbix流行度非常高。
- cacti、smokeping偏向于基础监控,成图非常漂亮,适合监控网络设备 cacti监控网络的设备。
- cacti、nagios、zabbix服务端监控中心,需要php环境支持(用Apache的php,用nginx的php都可以),其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图。
- 目前业界都流行用 zabbix
- zabbix配置简单,优势明显,早起使用nagios的企业,慢慢的转向使用zabbix。
- nagios,需要更改配置文件,并不支持web界面一键执行,nagios和zabbix相比,nagios 更注重的是某一个监控的状态,不关注历史。
- zabbix,则是把每一次监控的数值反馈出来,数值存到数据库里面,方便后期数据图去分析监控整个状态。
- nagios不需要mysql的支持,不能成图,若需要画图,得安装插件以后才支持web界面。
- ccti 也需要mysql的支持,也可以成图,可以记录历史数据。
- zabbix 在web界面下管理得非常彻底,可以增加监控节点,报警预知等等。
- open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究open-falcon软件适合大企业使用,小企业可以去研究它的思想。
- 监控软件比较新的: prometheus grafana
zabbix监控介绍
- zabbix简介
- C/S架构,有一个服务端,去客户端抓数据。在客户端必须要有一个服务启动运行才可以抓取数据;数据可以主动的上报服务端,也可以让服务端去连接客户端获取(通过抓取数据方式,数据获取分两个模式,一个主动模式,一个被动模式),
- zabbix软件基于C++开发,监控中心需要一个PHP的web环境,因为要开启一个web界面配置和管理 单台server节点(即一台server),理论上 可以支持上万台客户端
- zabbix瓶颈
- 在于采集数据的量,虽然支持上万台,但监控的项目过多,还是会导致zabbix效率降低;所以,当服务器大到一定规模的时候,就需要对zabbix进行优化;
- 解决方法:可以增加一些代理点,这些代理点充当server,替代server去采集数据,最终得到分析结果再汇报给主服务端server;
- zabbix架构里,包括了5个组件
- zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
- 数据存储 存放数据,比如mysql
- web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因(如果没有web界面,就无法在浏览器上配置它)
- zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力(当机器量很多的时候,可以使用zabbix-proxy)
有时候,服务器分布在多个机房里,每个机房的服务器之间都是一个单独的内网,这时候就可以在某一个局域网里搭建一个 zabbix-proxy ,用这台 proxy 去监控局域网里的机器- zabbix-agent 客户端软件(每一台客户端都需要安装agent),负责采集各个监控服务或项目的数据,并上报。
2. 安装zabbix4.0搭建服务端
- 下载官方提供的 repo 源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
举例:
[root@test01 ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.S9e9Cj: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-4.0-1.el7 ################################# [100%]
- 用 yum 安装 zabbix 相关的包
[root@test01 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
安装包释义:
1. zabbix-agent //客户端软件
2. zabbix-get //服务端用的一个工具,这个工具可以通过命令行的形式,获得客户端某些监控项目的数据
3. zabbix-server-mysql //这个是服务端跟mysql打交道相关的组件
4. zabbix-web //webUI ,web界面
5. zabbix-web-mysql //web和mysql相关组件
- 数据库设置
zabbix 是基于php环境的,也就是说用的是php 的代码编写的web界面,也就说这个zabbix相当于一个站点 需要安装mysql;
[root@test01 ~]# mysql -uroot -p123
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.43-log MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zabbix;
Query OK, 1 row affected (0.30 sec)
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123' ;
Query OK, 0 rows affected (0.07 sec)
mysql> ^DBye
zabbix-server
- 编辑 zabbix_server.conf 配置文件
1. [root@test01 ~]# vi /etc/zabbix/zabbix_server.conf
2. DBHost=127.0.0.1
3. DBName=zabbix
4. DBUser=zabbix
5. DBPassword=123
- 编辑完就可以启动了,显示没有启动,查看 zabbix_server.log 日志
[root@test01 ~]# systemctl start zabbix-server
[root@test01 ~]# ps aux |grep zabbix
root 7167 0.0 0.0 9088 672 pts/0 R+ 00:22 0:00 grep --color=auto zabbix
但是显示没有启动,这时候要查看zabbix的日志了
[root@test01 ~]# cat /var/log/zabbix/zabbix_server.log #查看日志
7243:20190611:002414.914 using configuration file: /etc/zabbix/zabbix_server.conf
7243:20190611:002414.918 [Z3005] query failed: [1146] Table 'zabbix.users' doesn't exist [select userid from users limit 1]
7243:20190611:002414.918 cannot use database "zabbix": database is not a Zabbix database
显示还没有在zabbix的数据库导入表
- 导入数据
[root@test01 ~]# ls /usr/share/doc/zabbix-server-mysql-4.0.9/
AUTHORS COPYING ChangeLog NEWS README create.sql.gz
[root@test01 ~]# gzip -d /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz
[root@test01 ~]# ls /usr/share/doc/zabbix-server-mysql-4.0.9/
AUTHORS COPYING ChangeLog NEWS README create.sql
[root@test01 ~]# mysql -uroot -p123 zabbix < /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql
Warning: Using a password on the command line interface can be insecure.
- 启动 zabbix-server
[root@test01 ~]# systemctl start zabbix-server
[root@test01 ~]# systemctl enable zabbix-server #开机自启动
zabbix-agent
- 编辑 zabbix_agentd.conf
1. [root@test01 ~]# vi /etc/zabbix/zabbix_agentd.conf
2. Server=127.0.0.1 主动模式
3. ServerActive=127.0.0.1 被动模式
- 启动 zabbix-agent
[root@test01 ~]# systemctl start zabbix-agent
[root@test01 ~]# systemctl enable zabbix-agent #开机自启动
httpd
- 如果已经启动了 nginx,需要先把 nginx 关闭,然后启动 httpd
[root@test01 ~]# systemctl stop nginx
[root@test01 ~]# systemctl start httpd
web测试
- 在浏览器输入:192.168.85.130/zabbix/,出现 zabbix 监控主页
- 进入下一步,发现页面有,php 的 timezone 时区,状态为 fail
- 进入 php 的配置文件,给它定义时区
[root@test01 ~]# vim /etc/php.ini #如果是 yum 安装的 httpd 在 /etc/php.ini里设置
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai #把前面分号去掉,定义时区为上海
[root@test01 ~]# systemctl restart httpd #重启httpd
- 点击下一步,进入简单设置,按下图设置
- 点击下一步,填写端口10051,name自定义
- 下一步,你设置的信息会全部显示出来
- 点击下一步,出现设置成功页面
- 进入到zabbix界面,默认账户:admin,密码:zabbix
- 修改默认密码
- 退出登录,此时显示为中文
3. 监控客户机-添加主机
- 下载官方提供的 repo 源
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
[root@test01 ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.S9e9Cj: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-4.0-1.el7 ################################# [100%]
- 安装 zabbix-agent
[root@test02 ~]# yum install -y zabbix-agent
- 编辑 zabbix_agentd.conf
1. [root@test01 ~]# vi /etc/zabbix/zabbix_agentd.conf
2. Server=192.168.85.130 #添加 server 服务机的 ip 主动模式
3. ServerActive=192.168.85.130 #添加 server 服务机的 ip 被动模式
- 启动 zabbix-agent
[root@test01 ~]# systemctl start zabbix-agent
[root@test01 ~]# systemctl enable zabbix-agent #开机自启动
- 如果有防火墙,需要加个白名单 ip
[root@test02 ~]# iptables -nvL
[root@test02 ~]# iptables -I INPUT -s 192.168.85.130 -j ACCEPT
web界面添加监控主机
- 这些操作都是在zabbix的web管理工具进行的
添加一个主机群组 (test-group01)
- 添加主机群组后,再添加主机
- 查看自带模板
常用模板如下:
Template App HTTP Service
Template App HTTPS Service
Template App SSH Service
Template DB MySQL
Template Module ICMP Ping
Template OS Linux
添加自定义模板
- 创建一个模板
- 为 test 模板添加监控选项
4. 监控客户机-管理模板
- 还有一种方法,找到你想要的目标的模板,从 Template OS Linux 点进去