同福

Zabbix学习笔记

安装部署

下载

下载安装包

wget https://cdn.zabbix.com/stable/3.0.30/zabbix-3.0.30.tar.gz

安装

安装依赖库

yum install -y mysql-devel net-snmp-devel

如果系统有安装 mysql 且 my.cnf 不在 /etc/my.cnf 路径下,务必要删除掉 /etc/my.cnf

rm -f /etc/my.cnf

安装zabbix

tar -xzvf zabbix-3.0.30.tar.gz
cd zabbix-3.0.30
./configure --prefix=/tongfu.net/env/zabbix-3.0.30/ \
--enable-expires \
--enable-headers \
--enable-modules=most \
--enable-so \
--enable-server \
--enable-agent \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libevent
make
make install

将 zabbix_get 链接到 /usr/bin/ 下

ln -s /tongfu.net/env/zabbix-3.0.30/bin/zabbix_get /usr/bin/zabbix_get

创建zabbix用户

useradd zabbix

复制 zabbix_server 和 zabbix_agentd 的启动脚本到 /etc/init.d/

将 zabbix_server 和 zabbix_agentd 脚本里面的 BASEDIR 的路径改成 /tongfu.net/env/zabbix-3.0.30

cp misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd

复制 frontends/php/* 到 /tongfu.net/web/zabbix/

mkdir /tongfu.net/web/zabbix
cp -r frontends/php/* /tongfu.net/web/zabbix/

配置 httpd 的虚拟主机(虚拟目录也可以)

<VirtualHost *:8080>
    DocumentRoot "/tongfu.net/web/zabbix"
    ServerName zabbix.tongfu.com
    ErrorLog "logs/zabbix.tongfu.com-error_log"
    CustomLog "logs/zabbix.tongfu.com-access_log" common
</VirtualHost>

部署服务

数据库

建立数据库 zabbix 并授权 zabbix 全部权限

create database zabbix default charset utf8;
grant all privileges on zabbix.* to zabbix@127.0.0.1 identified by 'abcdef';

导入数据

数据库文件在 database/mysql 下面

mysql -uzabbix -pabcdef -h127.0.0.1 zabbix < database/mysql/schema.sql
mysql -uzabbix -pabcdef -h127.0.0.1 zabbix < database/mysql/images.sql
mysql -uzabbix -pabcdef -h127.0.0.1 zabbix < database/mysql/data.sql

服务器配置

编辑服务器配置文件 /tongfu.net/env/zabbix-3.0.30/etc/zabbix_server.conf

 主要是数据库连接的几个参数,根据自己的情况进行修改即可

DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=abcdef
DBSocket=
DBPort=

启动服务

这里的 httpd 服务需要各位自己安装了,用 yum 也可以,用源码安装也可以

启动服务

首次启动需要通过如下方式

/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start

以后就可以通过 systemctl 启动了

systemctl start zabbix_server zabbix_agentd httpd

设置自动启动

systemctl enable zabbix_server zabbix_agentd httpd

初始化zabbix系统

打开浏览器,输入 zabbix 网址 http://zabbix.tongfu.com:8080/(根据你的 httpd 环境而定)

看到如下界面表示签名的安装部署工作成功了~~

9dbcfe346732b000.jpg

点击下一步,检查环境,根据提示调整系统环境参数

e4bc67db33c23ff4.jpg

点击下一步输入数据库信息

115fe3ad74d019b2.jpg

点击下一步输入服务器参数,这里不要改

103ebc5bc1e15dd5.jpg

点击下一步确认信息

d8527277fd19c197.jpg

这里报错了

d9d77a2d5e135528.jpg

原因是我们没有配置文件,解决方法

cd /tongfu.net/web/zabbix/conf
mv zabbix.conf.php.example zabbix.conf.php

我们还需要手动配置一下数据库参数

<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']                             = 'MYSQL';
$DB['SERVER']                   = '127.0.0.1';
$DB['PORT']                             = '0';
$DB['DATABASE']                 = 'zabbix';
$DB['USER']                             = 'zabbix';
$DB['PASSWORD']                 = 'abcdef';
// 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;

这下终于安装成功了!

a444a0c11c10d924.jpg

登录zabbix系统

默认的登录用户名是 admin,密码是 zabbix,进入后记得修改密码哦~~

1d63f3be8dbce5bc.jpg

配置zabbix客户端

修改客户端授权IP地址

打开配置文件

vi /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf

修改 Server=

Server=[Zabbix服务器IP地址,多个IP地址用逗号分开]

修改 Hostname=

Hostname=[Zabbix客户端主机头,用来在服务器端显示]

设置引用用户模板

打开配置文件

vi /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf

增加包含语句

Include=/tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf.d/*.conf

重启客户端

重新启动zabbix客户端使设置生效

systemctl restart zabbix_agentd

验证

开始验证

语法

zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all]"

正确情况

[root@zabbix /]# zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all]"
0.690000

错误情况1:

这是因为参数 -s 后面指定的IP错误,这个IP是客户端的对外IP地址(可以是公网IP,也可能是局域网IP,但不能是127.0.0.1)

[root@zabbix /]# zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all]"
zabbix_get [694]: Get value error: cannot connect to [[192.168.1.168]:10050]: [111] Connection refused

错误情况2:

这是因为在zabbix_agent上配置的Server=的IP地址不对,这个IP地址是zabbix服务器的对外IP地址

[root@zabbix /]# zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[all]"
zabbix_get [695]: Check access restrictions in Zabbix agent configuration

注意:当问题修复后,记得要使用验证工具验证一下,否则看到zabbix上依然是警告状态,需要等一会儿才会变正常

模板

模板制作

准备

现在我们来学习如何创建一个zabbix模板

建立监控脚本

这是一个示例,统计最大磁盘使用量

[root@zabbix /]# cat > /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf.d/diskusage.sh <<EOF
#!/bin/sh

df -lh|awk '{print \$5}'|sed 's/\%//'|sort -n -r|head -n 1
EOF

授权监控脚本

chmod +x /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf.d/diskusage.sh

建立监控配置文件

路径是 /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.d/userparameter_xxx.conf

配置文件格式 UserParameter=<key>,<shell command>

这是一个示例,统计最大磁盘使用量

[root@zabbix /]# cat > /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf.d/userparameter_test.conf <<EOF
UserParameter=diskusage,/tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf.d/diskusage.sh
EOF

重启agent服务

systemctl restart zabbix_agentd

测试配置文件

zabbix_get -s 127.0.0.1 -p 10050 -k "diskusage"

模板添加

添加模板

7f163abda1fc8481.jpg

添加应用

添加项目

2bd585c0bbd8e398.jpga5879ee2a33c89c6.jpg

添加触发器

54b1d6f203ab0ff9.jpg

添加视图

fa24ae3589ce538b.jpg

1dfd250554f8c751.jpg模板使用

现在就可以通过主机关联模板使用新模板进行监控了

带参数的模板制作

建立监控脚本

这是一个实例检查进程是否存在

[root@zabbix /]# cat > /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf.d/processAlive.sh <<EOF
#!/bin/sh

function processAlive
{
    procName=\$1
    procLine=`ps -ef | grep \$procName | grep -v grep | grep -v 'processAlive.sh' | grep -v zabbix_get`

    if [ ! "" = "\$procLine" ] ; then
        echo 1
    else
        echo 0
    fi
}

if [ ! "" = "\$1" ] ; then
    processAlive \$1
else
    echo 0
fi

授权监控脚本

chmod +x /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.conf.d/processAlive.sh

建立监控配置文件

路径是 /tongfu.net/env/zabbix-3.0.30/etc/zabbix_agentd.d/userparameter_xxx.conf

配置文件格式 UserParameter=<key>,<shell command>

这里是个变量,我们可以统计多个进程的状态

UserParameter=process.alive[*],/etc/zabbix/zabbix_agentd.d/processAlive.sh $1

重启agent服务

systemctl restart zabbix_agentd

测试配置文件

zabbix_get -s 127.0.0.1 -p 10050 -k "process.alive[zabbix_server]"

带参数的模板添加

带参数的模板的添加方法和普通模板是基本一样的,唯一的区别就是在添加项目的时候的 Key 和普通模板有所区别

只要按照 zabbix_gent 测试时候的参数 -k 的格式写就可以了

忘记密码

找回密码

如果忘记zabbix用户密码可以登录zabbix的数据库进行修改。

以mysql数据库举例:

Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| zabbix             |
+--------------------+
5 rows in set (0.18 sec)

MySQL [(none)]> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [zabbix]> select * from users;
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+-----------------+---------------+---------------+
| userid | alias | name   | surname       | passwd                           | url | autologin | autologout | lang  | refresh | type | theme   | attempt_failed | attempt_ip      | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+-----------------+---------------+---------------+
|      1 | Admin | Zabbix | Administrator | d41d8cd98f00b204e9800998ecf8427e |     |         1 | 0          | en_GB | 30s     |    3 | default |              0 | 114.248.153.101 |    1532052188 |            50 |
|      2 | guest |        |               | d41d8cd98f00b204e9800998ecf8427e |     |         0 | 15m        | en_GB | 30s     |    1 | default |              0 |                 |             0 |            50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+-----------------+---------------+---------------+
2 rows in set (0.00 sec)

MySQL [zabbix]> update users set passwd = md5('123456') where name = 'Zabbix';
Query OK, 1 row affected (0.44 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MySQL [zabbix]>