第一章 Zabbix基础概念及安装

Zabbix基础概念

1.1 何谓自动化运维

(1)硬件标准化——包括服务器、内存、系统版本等。
(2)软件标准化——应用版本等。
(3)运维自动化——包括监控、发布、CMDB。
笔者的理解,运维自动化,就是把运维中大量日常重复性工作使用工具让其自动运行,减少人的参与。首先它要包括以下几部分:
(1)监控报警——系统数据,应用指标的监控,和出错时及时报警。
(2)发布系统——代码发布,发布后的检查,代码的回滚,灰度发布。
(3)服务器标准化——Cobbler装机加上Puppet,可以做到硬件、软件的标准化。每台机器对于运维来说都是一样的。
(4)CMDB——配置管理数据库,存储了所有运维相关数据,包括服务器硬件信息、域名

1.2 监控系统在运维自动化中的角色

监控系统,是运维工程师和研发工程师的眼睛,它帮助工程师在第一时间发现网站的问题。
服务器的整个生命周期,都要和监控系统打交道。服务器上架,需要加入基础监控,比如CPU负载、内存等;当服务器上开始跑应用时,需要加入对应的应用监控,比如Resin、MySQL等;当服务器维护时,又要暂停这些报警,否则你明明在维护MySQL,监控系统还给你报警说MySQL挂了。这些操作,手动去做非常麻烦,需要跟运维的其他系统共同协作,比如CMDB中一台机器上架了,那么监控系统自动加入监控。
监控系统在运维自动化里的角色,可以用下面三点来概括。
(1)监控数据收集及可视化。
(2)异常数据报警。
(3)和其他系统协同工作。

1.3 选择zabbix的理由

1、监控系统能够自定义监控的内容,可以自己写脚本来收集需要的数据——Zabbix支持任何自定义的监控脚本,只要输出需要的值就可以。
2、数据要保存在数据库中,这样在需要的时候可以对这些数据进行分析计算——Zabbix在数据库中的表结构虽然有些复杂,但逻辑很清晰。
3、能够方便、快速地将监控加入到服务器上,不需要烦琐的操作——Zabbix有模板这一概念,可以方便地将一组Item进行统一操作。
4、数据可视化不要很花哨,但要好用——Zabbix每一个Item都可以看到其历史,Web界面可拖动,界面友好。
5、可以定义复杂的报警逻辑,做到Item之间的关联报警,而不是只能针对一个——Zabbix强大的Trigger定义,几乎可以满足所有规则组合。
6、报警需要被确认,让运维人员知道多少报警已经有人认领并开始处理了——Zabbix对于报警,有ACK机制。
7、报警方式要能够自定义,可以发邮件、发短信,如果能够在IM上通知别人就更好了——Zabbix支持邮件、Jabber。
8、报警内容要自己可设置,在报警邮件中加入一些简单的分析,而不是让运维人员上服务器敲命令来获取基本的信息——Zabbix自定义了一套宏可以在报警邮件中引用,如果要更复杂的功能,可以通过远程调用命令实现。
9、报警后可以自动跑一些命令。这些命令可以是获取运维人员需要的信息,也可以是自动修复,比如重启服务等——在触发报警后,Zabbix可以远程执行命令。
10、监控数据是开放的,数据库中的数据结构不要太复杂,让人无从下手——监控数据就在Zabbix数据库中,可以方便地进行分析。
11、监控可视化的图可以方便的引用,而不是要用一大串JavaScript——Zabbix使用PHP原生的绘图模块,如果要引用Zabbix的图表,只需要引用图表的URL即可,非常方便。

1.4 Zabbix部分名词约定

Zabbix server:zabbix的控制中心,收集数据、写入数据库都是它的工作。
Zabbix Agent:部署在被监控服务器上的一个进程,负责和zabbix server交互,执行命令。
Host:广义上的服务器,大多数情况指代的是刀片机这类,在少部分时间会指代包括交换机在内的,被zabbix监控的实体。
Item:对于某一个指标的监控,对应的是Items,英文原意是“物品”。比如某台服务器的CPU负载就是一个Item。
Trigger:一些逻辑规则的组合,它有三个值:正常、异常、未知。
Action:当Trigger符合某个值的时候,Zabbix会进行的操作,比如最常见的发邮件。

Zabbix4.0快速搭建

2.1 Zabbix组件概述

  • Zabbix server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行
  • Database storage:专用于存储所有配置信息,以及由zabbix收集的数据
  • Web interface:zabbix的GUI接口,通常与server运行在同一主机上。
  • Proxy:可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往server端。
  • Agent:部署在被监控主机上,负责收集本地数据并发往server端或proxy端
  • Zabbix_get:命令行工具,手动测试向agent发起数据采集请求
  • Zabbix_sender:,命令行工具,运行于agent端,手动向server端发送数据

2.2 Zabbix安装

1、安装zabbix-release包
[root@ntp ~]# cd /home/iflytek/
[root@ntp iflytek]# wget -q
https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@ntp iflytek]# ls
zabbix-release-4.0-1.el7.noarch.rpm
[root@ntp iflytek]# rpm -ivh zabbix-release-4.0-1.el7.noarch.rpm

2、开始安装zabbix(采用yum安装的方式)
1)yum安装zabbix组件
yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb zabbix-agent -y
注释:
yum -y install zabbix zabbix-server zabbix-server-mysql #<==ZABBIX SERVER相关
yum -y install zabbix-web zabbix-web-mysql #<==Apache、Php Web界面环境
yum -y install zabbix-agent #<== ZABBIX客户端
yum -y install mysql-server mysql #<==MySQL客户端与服务端
yum -y install zabbix-get #<==zabbix命令行工具

2)初始化apache服务的zabbix配置
[root@ntp ~]# cat  /etc/httpd/conf.d/zabbix.conf
#
# Zabbix monitoring system php web frontend
#
Alias /zabbix /usr/share/zabbix
<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted

    <IfModule mod_php5.c>
        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  #修改时区
</IfModule>

3)启动httpd以及mysql
[root@ntp xujun]# systemctl start httpd
[root@ntp xujun]# systemctl start mariadb

4)初始化zabbix存储数据的数据库MySQL
[root@ntp ~]# mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
[root@ntp]# cd /usr/share/doc/zabbix-server-mysql-4.0.0/
[root@ntp zabbix-server-mysql-4.0.0]# zcat create.sql.gz |mysql -uzabbix -pzabbix zabbix #导入数据库

5)修改zabbix配置
[root@ntp ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost  #数据库所在主机
DBName=zabbix     #数据库名
DBUser=zabbix     #数据库用户
DBPassword=zabbix  #数据库密码

6)启动zabbix及http
systemctl start zabbix-server
systemctl restart httpd

3、web界面安装zabbix
访问http://192.168.89.12/zabbix/setup.php





至此安装完成!!!

安装zabbix遇到的错误

1、zabbix到安装界面报错" Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock"

mysql和zabbix正常安装后在,zabbix安装页面(连接数据库的界面)时,提示“”Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)“”
原因是通过这个目录下的mysql.sock不能连接到数据库,到这个目录下发现没有这个文件,而/etc/my.cnf下正确的mysql.sock目录是/tmp/mysql.sock。
尝试的操作:
(1)将my.cnf下的sock路径改成/var/lib/mysql/mysql.sock  不能正常
(2)将zabbix_server.conf里面的DBsock路径也改成和my.cnf里面的路径,也是不行

最终的解决办法是: my.cnf里面socket路径改成/tmp/mysql.sock,并做了一个软链接:ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock 后才正常

2、安装zabbix碰到Unable to select configuration的解决方法


重新导入zabbix sql文件

3、中文乱码的问题

解决乱码:
1、从windows服务器找到相应的字体负债到zabbix server服务器上
控制面板-->外观和个性化-->字体-->选择一种中文字体如“楷体”(simkai.ttf)

2、将我们选择的字体文件上传到zabbix web服务,/usr/share/zabbix/fonts目录下

[root@Node3 fonts]# cd /usr/share/zabbix/fonts
[root@Node3 fonts]# ls
graphfont.ttf  simkai.ttf

3、修改此/usr/share/zabbix/include/defines.inc.php文件中字体的配置,将里面关于字体设置从graphfont替换成simkai

4、再次打开界面,发现乱码已经解决了,如下图所示:

猜你喜欢

转载自www.cnblogs.com/xujun1270/p/10907304.html