监控服务zabbix部署
监控服务zabbix部署
1. zabbix介绍
zabbix
是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix
由2部分构成,zabbix server
与可选组件zabbix agent
。
zabbix server
可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Ubuntu,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
zabbix agent
需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
zabbix server
可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。
另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。
2. zabbix特点
zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
Zabbix主要功能:
- 系统基础监控
- 内存
- cpu
- 硬盘
- 网络设备
- 路由器
- 防火墙
- 交换机
- 硬件监控IPMI
- 电源
- CPU温度
- 硬盘温度
- 业务监控
- 进程
- 端口
- 日志
3. zabbix配置文件
zabbix配置文件有三种:
- 服务器端配置文件(/usr/local/etc/zabbix_server.conf)
- 客户端配置文件(/usr/local/etc/zabbix_agentd.conf)
- zabbix代理配置文件(/usr/local/etc/zabbix_proxy.conf)
服务器端配置文件zabbix_server.conf常用配置参数:
参数 | 作用 |
---|---|
LogFile | 设置服务端日志文件存放路径 |
ListenIP | 设置服务端监听IP |
ListenPort | 设置服务端监听的端口号 |
PidFile | 设置服务端进程号文件存放路径 |
DBHost | 指定zabbix的数据库服务器IP |
DBName | 指定zabbix使用的数据库库名 |
DBUser | 指定zabbix数据库登录用户 |
DBPassword | 指定zabbix数据库登录密码 |
DBPort | 指定zabbix数据库端口号 |
User | 设置zabbix以什么用户的身份运行 |
AlertScriptsPath | 设置告警脚本存放路径 |
ExternalScripts | 外部脚本存放路径 |
客户端配置文件zabbix_agentd.conf常用配置参数:
参数 | 作用 |
---|---|
Server | 指定zabbix服务器的IP或域名 |
ServerActive | 指定zabbix服务器的IP或域名 |
Hostname | 指定本机的主机名,此项必须与web界面配置项一致 |
UnsafeUserParameters | 是否启用自定义监控项,可选值为{1 |
UserParameter | 指定自定义监控脚本参数 |
LogFile | 设置客户端日志文件存放路径 |
4. 部署zabbix
环境说明:
环境 | IP | 要安装的应用 |
---|---|---|
服务器 | 192.168.112.166 | lamp架构 zabbix server zabbix agent |
客户端 | 192.168.112.167 | zabbix agent |
因为zabbix是用php语言开发的,所以必须先部署lamp架构,使其能够支持运行php网页
4.1 zabbix服务端安装
//安装依赖包
[root@localhost ~]# yum -y install net-snmp-devel libevent-devel
//下载zabbix
[root@localhost ~]# cd /usr/src/
[root@localhost src]# ls
debug kernels zabbix-4.0.3.tar.gz
//解压
[root@localhost src]# tar -xf zabbix-4.0.3.tar.gz
[root@localhost src]# ls
debug kernels zabbix-4.0.3 zabbix-4.0.3.tar.gz
//创建zabbix用户和组
[root@localhost src]# groupadd -r zabbix
[root@localhost src]# useradd -r -g zabbix -M -s /sbin/nologin zabbix
[root@localhost src]# id zabbix
uid=995(zabbix) gid=993(zabbix) 组=993(zabbix)
//配置zabbix数据库
[root@localhost src]# mysql -uroot -pcwh123!
mysql: [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 4
Server version: 5.7.22 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, 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 character set utf8 collate utf8_bin; //这里是使zabbix数据库支持中文
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix123!'; //这里是创建zabbix用户并赋予其对zabbix数据库的所有权限
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> flush privileges; //刷新权限表
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
//将zabbix解压包中的数据库模板复制到zabbix数据中去
[root@localhost src]# cd /usr/src/zabbix-4.0.3/database/mysql/
[root@localhost mysql]# ls
data.sql images.sql Makefile.am Makefile.in schema.sql
[root@localhost mysql]# mysql -uzabbix -pzabbix123! zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -uzabbix -pzabbix123! zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -uzabbix -pzabbix123! zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
//编译安装zabbix
root@localhost mysql]# cd /usr/src/zabbix-4.0.3
[root@localhost zabbix-4.0.3]# ./configure --enable-server \ //开启zabbix监控服务端
> --enable-agent \ //开启zabbix被监控端(客户)
> --with-mysql \ //使用也MySQL数据库
> --with-net-snmp \ //开启支持SNMP协议
> --with-libcurl \
> --with-libxml2
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
.
.
.
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
//zabbix编译安装直接make install,不需要先make
[root@localhost zabbix-4.0.3]# make install
4.2 zabbix服务端配置
[root@localhost ~]# ls /usr/local/etc/
zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d
//修改服务端配置文件
//设置数据库信息
[root@localhost ~]# vim /usr/local/etc/zabbix_server.conf
....
DBPassword=zabbix123! //设置zabbix数据库连接密码
//启动zabbix_server和zabbix_agentd
[root@localhost zabbix-4.0.3]# zabbix_server
zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
//此时发现会先报错:无法发现libmysqlclient.so.20的库文件。
//解决方法
[root@localhost zabbix-4.0.3]# ln -sv /usr/local/mysql/include/ /usr/local/include/mysql
"/usr/local/include/mysql" -> "/usr/local/mysql/include/"
[root@localhost zabbix-4.0.3]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@localhost zabbix-4.0.3]# ldconfig -v
ldconfig: 无法对 /libx32 进行 stat 操作: 没有那个文件或目录
ldconfig: 多次给出路径“/usr/lib”
ldconfig: 多次给出路径“/usr/lib64”
ldconfig: 无法对 /usr/libx32 进行 stat 操作: 没有那个文件或目录
/usr/lib64/mysql:
libmysqlclient.so.18 -> libmysqlclient_r.so
/usr/local/mysql/lib:
libmysqlclient.so.20 -> libmysqlclient.so.20.3.9
/lib:
/lib64:
libevent_pthreads-2.0.so.5 -> libevent_pthreads.so
libevent_openssl-2.0.so.5 -> libevent_openssl.so
libevent_extra-2.0.so.5 -> libevent_extra.so
libnetsnmptrapd.so.31 -> libnetsnmptrapd.so.31.0.2
libevent_core-2.0.so.5 -> libevent_core.so
libnetsnmpmibs.so.31 -> libnetsnmpmibs.so.31.0.2
libnetsnmphelpers.so.31 -> libnetsnmphelpers.so.31.0.2
libmcrypt.so.4 -> libmcrypt.so.4.4.8
.
.
.
/lib/sse2: (hwcap: 0x0000000004000000)
/lib64/sse2: (hwcap: 0x0000000004000000)
/lib64/tls: (hwcap: 0x8000000000000000)
//再次启动zabbix服务
[root@localhost zabbix-4.0.3]# zabbix_server
[root@localhost zabbix-4.0.3]# zabbix_agentd
[root@localhost zabbix-4.0.3]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
//10050和10051已经启动说明zabbix启动成功
//所以在编写lamp安装脚本时记得加入mysql的软连接库文件的配置
4.3 zabbix服务端web界面安装与配置
4.3.1 zabbix web界面安装前配置
//修改/etc/php.ini的配置并重启php-fpm
[root@localhost zabbix-4.0.3]# sed -ri 's/(post_max_size =).*/\1 16M/g' /etc/php.ini
[root@localhost zabbix-4.0.3]# sed -ri 's/(max_execution_time =).*/\1 300/g' /etc/php.ini
[root@localhost zabbix-4.0.3]# sed -ri 's/(max_input_time =).*/\1 300/g' /etc/php.ini
[root@localhost zabbix-4.0.3]# sed -i '/;date.timezone/a date.timezone = Asia/Shanghai' /etc/php.ini
[root@localhost zabbix-4.0.3]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done
//或者进入/etc/php.ini中查找修改这几个数据,如果不修改这款几个数据,网页web端将无法安装
//创建php网页存放目录zabbix
[root@localhost ~]# cd /usr/src/zabbix-4.0.3
[root@localhost zabbix-4.0.3]# ls
aclocal.m4 ChangeLog config.log configure.ac frontends m4 man README
AUTHORS compile config.status COPYING include Makefile misc sass
bin conf config.sub database INSTALL Makefile.am missing src
build config.guess configure depcomp install-sh Makefile.in NEWS upgrades
[root@localhost zabbix-4.0.3]# mkdir /usr/local/apache/htdocs/zabbix
[root@localhost zabbix-4.0.3]# cp -a frontends/php/* /usr/local/apache/htdocs/zabbix/
//frontends目录里存放的是网页前端文件
[root@localhost zabbix-4.0.3]# chown -R apache.apache /usr/local/apache/htdocs
//配置apache虚拟主机
[root@localhost zabbix-4.0.3]# vim /etc/httpd24/httpd.conf
<VirtualHost *:80>
DocumentRoot "/usr/local/apache/htdocs/zabbix"
ServerName zabbix.cwh.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/zabbix/$1
<Directory "/usr/local/apache/htdocs/zabbix">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
//设置/usr/local/apache/htdocs/zabbix/conf目录的权限,让zabbix有权限生成配置文件zabbix.conf.php
[root@localhost zabbix-4.0.3]# ll /usr/local/apache/htdocs/zabbix/conf -d
drwxr-xr-x 2 apache apache 81 12月 20 19:24 /usr/local/apache/htdocs/zabbix/conf
//可以看出这个目录的属主和属组是apache,所以此时zabbix是无法生成配置文件conf的
[root@localhost zabbix-4.0.3]# chmod 777 /usr/local/apache/htdocs/zabbix/conf
[root@localhost zabbix-4.0.3]# ll /usr/local/apache/htdocs/zabbix/conf -d
drwxrwxrwx 2 apache apache 81 12月 20 19:24 /usr/local/apache/htdocs/zabbix/conf
//重启apache服务
[root@localhost ~]# /usr/local/apache/bin/apachectl restart
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@localhost ~]# ls /usr/local/apache/htdocs/zabbix/conf/
.htaccess maintenance.inc.php zabbix.conf.php.example
//可以看出zabbix.conf已经生成了所以在web页面安装完成后要将权限改回755
4.3.2 安装zabbix web界面
- 修改/etc/hosts文件,添加域名与IP的映射
- 在浏览器上访问域名,本文设置的域名为zabbix.cwh.com
- 恢复zabbix/conf目录的权限为755
- zabbix默认登录用户名和密码:Admin zabbix
恢复zabbix/conf目录的权限为755:
root@localhost ~]# chmod 755 /usr/local/apache/htdocs/zabbix/conf
[root@localhost ~]# ll -d /usr/local/apache/htdocs/zabbix/conf
drwxr-xr-x 2 apache apache 104 Aug 17 13:05 /usr/local/apache/htdocs/zabbix/conf
4.4 zabbix客户端配置
//在客户端安装zabbix需要的环境
[root@localhost ~]# yum install -y gcc gcc-c++ wget vim
//解压和编译安装zabbix的安装包
[root@localhost ~]# cd /usr/src
[root@localhost src]# tar -xf zabbix-4.0.3.tar.gz
[root@localhost src]# cd zabbix-4.0.3
[root@localhost zabbix-4.0.3]#
[root@localhost zabbix-4.0.3]# ./configure --enable-agent
[root@localhost zabbix-4.0.3]# make install
//配置agented.conf文件
[root@localhost zabbix-4.0.3]# cd /usr/local/etc/
[root@localhost etc]# ls
zabbix_agentd.conf zabbix_agentd.conf.d
[root@localhost etc]# vim zabbix_agentd.conf
Server=192.168.112.166 //将这一条修改为服务端IP
ServerActive=192.168.112.166 //将这一条修改为服务端IP
Hostname=167 //不是真正的hostname,只是一个标识自己是谁的标识符
//创建zabbix用户
[root@localhost etc]# groupadd -r zabbix
[root@localhost etc]# useradd -r -M -s /sbin/nologin -g zabbix zabbix
//启动zabbix-agentd服务
[root@localhost etc]# zabbix_agentd
[root@localhost etc]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
4.5在web端添加对客户端的监控
1.将界面改成中文界面,进入后点击右上角admin,进入后language选择chinese
2.添加主机
3.成功添加主机,此时添加的主机还没有模板需要添加模板进去
4.往添加的主机中增加模板
5.模板更新成功
6.点击右上角编辑仪表盘,编辑界面
7.此时新添加的主机绿色的ZBX已经亮起来了,说明服务端已经开始监控
8.查看内存的使用情况,但会发现中文有乱码情况,下面给出解决方案
4.6 zabbix一解决web界面中文乱码问题
问题原因: Zabbix 网页目录中缺少字体
1.打开 Windows 的 C:\Windows\Fonts 字体存放目录,选一款你喜欢的字体
2.我选择的是 楷体常规,文件名为 simkai.ttf,把这个文件传到服务器的 Zabbix 网页目录中
//如果你不知道存放字体的目录位置请用find命令查找以fonts结尾的目录
[root@localhost ~]# find / -name fonts
/boot/grub2/fonts
/usr/local/apache/htdocs/zabbix/fonts
/usr/src/zabbix-4.0.3/frontends/php/fonts
//将simkai.ttf上传到/usr/local/apache/htdocs/zabbix/fonts下
[root@localhost ~]# cd /usr/local/apache/htdocs/zabbix/fonts/
[root@localhost fonts]# ls
DejaVuSans.ttf
[root@localhost fonts]# ls
DejaVuSans.ttf simkai.ttf
3.编辑/usr/local/apache/htdocs/zabbix/include/defines.inc.php文件,找到 define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); 行,将 DejaVuSans 修改为 simkai 即可。
[root@localhost fonts]# vim /usr/local/apache/htdocs/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
4.刷新页面就能看到效果