如何通过命令行来监控zabbix

zabbix不用说都知道,监控利器,像我司用的就是zabbix来监控各种指标,但是有个问题就是,我们需要时刻盯着zabbix的界面(当然,zabbix可以配置短信报警,邮箱报警,甚至可以指定特殊事件调用的脚本,我们其实不用时刻盯着board)

有时候就想我们如果可以通过命令行来查看各种报警,是不是会非常好? 刚开始一直在想自己写一个,因为zabbix提供了丰富的api,完全可以自己写一个,直到发现了这个:

https://github.com/usit-gd/zabbix-cli.git

我大git真的是个好地方啊:

步骤:

yum install -y install python-devel python-setuptools git make python-docutils python-requests
git clone https://github.com/usit-gd/zabbix-cli.git
cd zabbix-cli
sudo ./setup.py install

然后就是初始化我们的zabbix地址:

zabbix-cli-init --zabbix-url https://zabbix.abc.com/zabbix/api_jsonrpc.php

这个运行之后,我们会得到这个文件:

~/.zabbix-cli/zabbix-cli.conf

然后我们要设置我们的帐号和密码:

vi ~/.zabbix-cli_auth

然后,我们就可以开始通过命令行进行监控了:

编写脚本:

#!/usr/bin/env bash
zabbix-cli -C "show_alarms * "'priority': '4'" prod true"

或者我们直接运行:

zabbix-cli -C "show_alarms * "'priority': '4'" prod true"

这个时候我们就得到了我们的报警列表了。

Zabbix Ubuntu 环境下配置

我的 ubuntu 16.04版本 部署zabbix要安装apache、mysql和php 都是以默认安装

切换root用户 sudo -i

一、环境准备安装

sudo apt-get install apache2 
sudo apt-get install mysql-server               #需要设密码  但是我直接按Tab键没输入密码
sudo apt-get install php7.0 php7.0-gd libapache2-mod-php7.0 php7.0-mysql php7.0-bcmath php7.0-mbstring php7.0-xml

二、修改Php配置

sudo vim /etc/php/7.0/apache2/php.ini  #编辑配置文件修改里面的时区配置文件
date.timezone = Asia/Shanghai  # 时区改为亚洲上海
max_input_time = 300           # 每个PHP页面接收数据所需的最大时间
max_execution_time= 300        # 超时设置
post_max_size = 16M            # 设定 POST 数据所允许的最大大小
sudo /etc/init.d/apache2 restart   #重启服务

三、下载zabbix的安装包,安装

wget
http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb 
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb 
sudo apt-get update     #更新

四、安装zabbix服务端

sudo apt-get install zabbix-server-mysql

五、配置zabbix的数据库,创建zabbix数据库、zabbix用户,并对zabbix用户进行授权

#进入mysql
# 创建zabbix表,创建的表必须是utf8格式,否则会产生乱码
mysql> create database zabbix character set utf8;
# 创建mysql帐号:zabbix,密码:zabbix 
mysql> grant all on zabbix.* to  ‘zabbix’@’localhost’  identified by  ‘zabbix’;
mysql> q;
#退出mysql;
service mysql restart    #重启mysql     

# 拷贝zabbix的数据表到MySQL 
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
提示输入密码  zabbix

六、修改zabbix_server.conf配置文件,并重启zabbix-server服务

sudo vim /etc/zabbix/zabbix_server.conf

# 配置如下,这里的配置就是连接mysql的配置,按照当时mysql的设置进行修改即可 
DBHost=localhost 
DBName=zabbix 
DBUser=zabbix 
DBPassword=zabbix        
退出界面 zabbix_server.conf ;

sudo /etc/init.d/zabbix-server restart       #重启服务

七、安装zabbix的web界面

# 下载安装 
sudo apt-get install zabbix-frontend-php
# 拷贝zabbix到apache2的前端文件夹里 
sudo cp -r /usr/share/zabbix /var/www/html/zabbix

八、访问http://localhost/zabbix界面

看到界面下一步,下一步
到第三步
输入用户名 zabbix
输入密码 zabbix
到第四步按照 第 九 做

九、在需要监控的服务器或终端装客户端

sudo apt-get install zabbix-agent
sudo vim  /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1 
?6?7ListenPort = 10050 
ServerActive=127.0.0.1
sudo /etc/init.d/zabbix-agent restart       #重启服务

之后点完成

登录输入默认的用户名密码
用户名Admin
密码 zabbix

十、页面操作是英文版的 改成中文 版

页面的右上角有个 用户标志 点击
进入第二行

Language

到三角 选择Chinese(zh_CN)

Centos7.0 搭建Zabbix环境

1、实验环境:Centos7.0
IP:192.168.47.140
未分类
2、关闭iptables及setenforce
未分类
3、导入源 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
未分类
4、安装zabbix包
未分类
5、安装完成
未分类
6、安装mysql源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm

未分类

yum install -y mysql-community-server

未分类
7、安装完成
未分类
8、启动mysql服务
未分类
9、设置mysql

mysql_secure_installation

未分类
10、登陆mysql

mysql -uroot -p

未分类
11、创建相关数据库

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

未分类
12、切换目录 复制文件

cd /usr/share/doc/zabbix-server-mysql-3.0.13
zcat create.sql.gz | mysql -uroot -p zabbix

未分类
13、修改配置文件

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
vim /etc/zabbix/zabbix_server.conf

未分类
未分类
14、启动zabbix-server
未分类
15、修改zabbix配置

vim /etc/httpd/conf.d/zabbix.con
php_value date.timezone Asia/Shanghai

未分类
16、启动http服务

systemctl start httpd

未分类
17、访问测试
未分类
未分类
未分类
未分类

zabbix分布式监控多网段的部署与实现

集群架构:

未分类

构建思路:

本监控系统由一个zabbix master和两个zabbix proxy组成,各自位于不同的网段,且有独立的MySQL服务器;其中192.168.1.0网段作为三个路由互联的网段,10.0.0.0网段为zabbix master所处的网段,172.16.0.0和172.26.0.0网段为zabbix proxy1和zabbix proxy2所处的网段。

两个zabbix proxy负责收集各自网段内主机的数据,每2秒向zabbix master发送监控各自网段内主机的数据。为节约资源,所有zabbix GUI服务均与zabbix server服务配置在同一台主机。

部署步骤:

一、准备阶段:

1、准备三台最小化安装的centos7,修改hostname,关闭selinux和防火墙,打开ipv4核心转发并重启:

# vi /etc/hostname

修改:

router1

保存退出

# vi /etc/selinux/config

修改:

SELINUX=disabled

保存退出

# systemctl disable firewalld

# vi /usr/lib/sysctl.d/50-default.conf

添加:

net.ipv4.ip_forward = 1

保存退出

# sync
# reboot

2、在各router上写入静态路由
1)在router1上写入静态路由:

# vi /etc/sysconfig/network-scripts/route-ens33

添加:

172.16.0.0/24 via 192.168.1.182 dev ens33
172.26.0.0/24 via 192.168.1.183 dev ens33

保存退出

# sync
# reboot

2)在router2上写入静态路由:

# vi /etc/sysconfig/network-scripts/route-ens33

添加:

10.0.0.0/24 via 192.168.1.181 dev ens33
172.26.0.0/24 via 192.168.1.183 dev ens33

保存退出

# sync
# reboot

3)在router3上写入静态路由:

# vi /etc/sysconfig/network-scripts/route-ens33

添加:

10.0.0.0/24 via 192.168.1.181 dev ens33
172.16.0.0/24 via 192.168.1.182 dev ens33

保存退出

# sync
# reboot

3、在route1-3上测试静态路由的连通情况:
1)route1:
未分类
2)route2:
未分类
3)route3:
未分类
4、准备三台安装好MySQL的主机,配置好IP备用;
5、准备一台zabbix master主机和两台zabbix ,配置好IP备用;
6、准备六台被监控主机,安装好相应的服务、配置好IP备用;
7、各主机使用相同的hosts文件:

10.0.0.11          zbx-master
10.0.0.12          mysql1
10.0.0.21          tomcat1
10.0.0.22          tomcat2
172.16.0.11     zbx-proxy1
172.16.0.12     mysql2
172.16.0.21     nginx1
172.16.0.22     nginx2
172.26.0.11     zbx-proxy2
172.26.0.12     mysql3
172.26.0.21     redis1
172.26.0.22     redis2

8、各主机均使用NTP服务器校准时间;

二、部署阶段:

对zabbix master的部署:
1、在zabbix master上安装zabbix相关程序包:

# yum install zabbix22 zabbix22-server zabbix22-server-mysql zabbix22-web zabbix22-web-mysql zabbix22-agent zabbix22-dbfiles-mysql

2、在MySQL1上为zabbix创建用户和数据库:

# yum install mariadb-server mariadb
# mysql
MariaDB> CREATE DATABASE zabbix CHARACTER SET utf8;
MariaDB> GRANT ALL on zabbix.* TO ‘zbxuser’@’10.0.0.%’ IDENTIFIED BY ‘zbxpass’;
MariaDB> GRANT ALL on zabbix.* TO ‘zbxuser’@’zbx-master’ IDENTIFIED BY ‘zbxpass’;
MariaDB> FLUSH PRIVILEGES;

3、复制zabbix master安装的的数据库模板至MySQL1:

# cd /usr/share/zabbix-mysql/
# scp *.sql root@mysql1:/root/

4、在MySQL1上导入数据库模板:

# cd
# mysql zabbix < schema.sql
# mysql zabbix < images.sql
# mysql zabbix < data.sql

5、在zabbix master上动httpd:

# systemctl start httpd.service

6、在zabbix master上编辑zabbix配置文件:

# vim /etc/zabbix/zabbix_server.conf

修改:

DBHost=10.0.0.12
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass

保存退出
7、启动zabbix-server

# systemctl start zabbix-server.service

8、查看10051端口是否监听:

# ss –tnl

9、修改php的时区:

# vim /etc/php.ini

启用:

date.timezone = Asia/Shanghai

保存退出
10、重启httpd:

# systemctl restart httpd.service

11、在浏览器中启动zabbix的配置界面:

http://10.0.0.11/zabbix

未分类
12、按提示配置zabbix
填入数据库服务器地址、用户、密码等,填完之后还可以测试一下,看到“OK”说明数据库连接正常:
未分类
标记zabbix服务器本身:

Host 10.0.0.11
Port 10051
Name zbx-master

确认后完成zabbix的配置
13、登陆时,默认账号密码:
用户:admin
密码:zabbix
登陆成功后即可进入zabbix的dashboard:
未分类
14、加入zabbix-server本身为监控对象:
配置agent的配置文件(注意:zabbix_agent.conf 和 zabbix_agentd.conf不一样,要配置的是zabbix_agentd.conf,不能错!)

# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=127.0.0.1,10.0.0.11

保存退出
启动zabbix-agent

# systemctl start zabbix-agent

15、在zabbix GUI配置界面上启用对本机的监控
点击Status中的Not monitored,选择OK:
未分类
当绿色的“Z”标志亮起,说明服务器已被正常监控:
未分类
16、配置并启动两台tomcat服务器的zabbix-agent:
在tomcat1上安装、配置并启动zabbix-agent:

# yum install zabbix22-agent
# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=10.0.0.11
ServerActive=10.0.0.11
Hostname=tomcat1

保存退出

# systemctl start zabbix-agent.service

在tomcat2上安装、配置并启动zabbix-agent:

# yum install zabbix22-agent
# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=10.0.0.11
ServerActive=10.0.0.11
Hostname=tomcat2

保存退出

# systemctl start zabbix-agent.service

17、将两台tomcat服务器加入主机列表:
未分类
18、至此,zabbix master已部署完毕。

对zabbix proxy1的部署:
1、在zabbix proxy1上安装程序包:

# yum install zabbix22 zabbix22-proxy zabbix22-proxy-mysql zabbix22-agent zabbix22-dbfiles-mysql

2、在MySQL2上为proxy1创建一个数据库:

# mysql
MariaDB> CREATE DATABASE zabbix_proxy CHARACTER SET utf8;
MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’172.16.0.%’IDENTIFIED BY ‘zbxpass’;
MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’zbx-proxy1’IDENTIFIED BY ‘zbxpass’;
MariaDB> FLUSH PRIVILEGES;
MariaDB> quit

3、在zabbix proxy1上复制数据库文件到MySQL2上:

# cd /usr/share/zabbix-mysql/
# scp *.sql root@mysql2:/root/

4、在MySQL2上导入数据库文件:

# cd
# mysql zabbix_proxy < schema.sql      注意:proxy只需要schema.sql

5、在MySQL2上验证导入数据库是否成功:

# mysql
MariaDB> USE zabbix_proxy
MariaDB> SHOW TABLES;

6、在zabbix proxy1上配置zabbix-proxy的配置文件:

# cd /etc/zabbix
# vim zabbix_proxy.conf

修改:

Server=10.0.0.11                                 ##填写Master的地址
Hostname=zbx-proxy1                       ##填写本机hostname
DBhost=172.16.0.12                          ##填写数据库地址
DBname=zabbix_proxy
DBuser=zbxuser
DBpassword=zbxpass
DataSenderFrequency=2                   ##每隔2秒向Master送一次数据

保存退出
7、在zabbix proxy1上启动zabbix-proxy服务:

# systemctl start zabbix-proxy

9、在zabbix proxy1上查看服务监听端口:

# ss –tnl

未分类
10、在Maser的GUI界面上添加proxy
找到选项卡:Administration è DM
选择“Create proxy”

Proxy name               zbx-proxy1
Proxy mode               Passive                       ##由Master推送配置
Proxy hosts

未分类
这里选择需要加入的主机(目前还没有主机加入)
点击save完成添加
未分类
11、在zabbix proxy1上配置agent文件:

# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=10.0.0.11
ServerActive=10.0.0.11
Hostname=zbx-proxy1

保存退出

# systemctl start zabbix-agent.service

12、在zabbix的GUI界面上添加对proxy1的监控:
未分类
13、配置并启动两台nginx服务器的zabbix-agent:
在nginx1上安装、配置并启动zabbix-agent:

# yum install zabbix22-agent
# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=172.16.0.11
ServerActive=172.16.0.11
Hostname=nginx1

保存退出

# systemctl start zabbix-agent.service

在nginx2上安装、配置并启动zabbix-agent:

# yum install zabbix22-agent
# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=172.16.0.11
ServerActive=172.16.0.11
Hostname=nginx2

保存退出

# systemctl start zabbix-agent.service

14、将两台nginx服务器以proxy的模式加入主机列表:
未分类
未分类
15、至此,zabbix proxy1已部署完毕。

对zabbix proxy2的部署:

1、在zabbix proxy2上安装程序包:

# yum install zabbix22 zabbix22-proxy zabbix22-proxy-mysql zabbix22-agent zabbix22-dbfiles-mysql

2、在MySQL3上为proxy2创建一个数据库:

# mysql
MariaDB> CREATE DATABASE zabbix_proxy CHARACTER SET utf8;
MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’172.26.0.%’IDENTIFIED BY ‘zbxpass’;
MariaDB> GRANT ALL ON zabbix_proxy.* TO zbxuser@’zbx-proxy2’IDENTIFIED BY ‘zbxpass’;
MariaDB> FLUSH PRIVILEGES;
MariaDB> quit

3、在zabbix proxy2上复制数据库文件到MySQL3上:

# cd /usr/share/zabbix-mysql/
# scp *.sql root@mysql3:/root/

4、在MySQL3上导入数据库文件:

# cd
# mysql zabbix_proxy < schema.sql

5、在MySQL3上验证导入数据库是否成功:

# mysql
MariaDB> USE zabbix_proxy
MariaDB> SHOW TABLES;

6、在zabbix proxy2上配置zabbix-proxy的配置文件:

# cd /etc/zabbix
# vim zabbix_proxy.conf

修改:

Server=10.0.0.11
Hostname=zbx-proxy2
DBhost=172.26.0.12
DBname=zabbix_proxy
DBuser=zbxuser
DBpassword=zbxpass
DataSenderFrequency=2

保存退出
7、在zabbix proxy2上启动zabbix-proxy服务:

# systemctl start zabbix-proxy

8、在zabbix proxy2上查看服务监听端口:

# ss –tnl

未分类
9、在Maser的GUI界面上添加proxy
找到选项卡:Administration è DM
选择“Create proxy”

Proxy name               zbx-proxy2
Proxy mode               Passive                       ##由Master推送配置
Proxy hosts

未分类
这里选择需要加入的主机(目前还没有主机加入)
点击save完成添加
未分类
10、在zabbix proxy2上配置agent文件:

# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=10.0.0.11
ServerActive=10.0.0.11
Hostname=zbx-proxy2

保存退出

# systemctl start zabbix-agent.service

11、在zabbix的GUI界面上添加对proxy2的监控:
未分类
12、配置并启动两台redis服务器的zabbix-agent:
在redis1上安装、配置并启动zabbix-agent:

# yum install zabbix22-agent
# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=172.26.0.11
ServerActive=172.26.0.11
Hostname=redis1

保存退出

# systemctl start zabbix-agent.service

在redis2上安装、配置并启动zabbix-agent:

# yum install zabbix22-agent
# vim /etc/zabbix/zabbix_agentd.conf

修改:

Server=172.26.0.11
ServerActive=172.26.0.11
Hostname=redis2

保存退出

# systemctl start zabbix-agent.service

13、将两台redis服务器以proxy的模式加入主机列表:
未分类

未分类
14、至此,zabbix proxy2已部署完毕。

监控主机全家福:
未分类
发现问题:
2个proxy后的主机均不能正常监控,Dashboard报错:

Zabbix agent on nx1 unreachable for 5 minutes.

未分类
解决问题:
查询zabbix master的日志,发现如下信息:

“172.26.0.11”failed: proxy “zbx-proxy2” is configured in passive mode.

未分类
说明此时proxy的工作模式和server的不一致,默认情况下,proxy是运行在active模式中的,故应该修改2个proxy的配置文件,使其运行在passive模式中:
在zbx-proxy1上修改:

# cd /etc/zabbix
# vi zabbix_proxy.conf

修改:

ProxyMode=1

保存退出

# systemctl restart zabbix-proxy

在zbx-proxy2上修改:

# cd /etc/zabbix
# vi zabbix_proxy.conf

修改:

ProxyMode=1

保存退出

# systemctl restart zabbix-proxy

问题解决:
未分类
经测试,passive模式工作的proxy的延迟要远高于active模式,正确配置passive模式后如果proxy后的hosts无法显示被监控,请耐心等待master向proxy推送新配置信息。

至此,整个zabbix分布式监控的部署完成。

CentOS 7安装Zabbix 3.4

Zabbix 3.4 支持Centos 7。貌似不支持6.9.

更多详细内容请参考官方说明文档,详细的安装要求不贴出来了。

https://www.zabbix.com/documentation/3.4/zh/manual/installation/requirements

虚拟机配置 双核 8G内存

01、最小化安装操作系统

02、升级系统组件到最新版本

sudo yum -y update

03、关闭 SELinux

sudo sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

04、关闭防火墙

sudo systemctl stop firewalld.service && systemctl disable firewalld.service

完成3、4两步,重启一下。

05、获取SQL源

sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

可以从https://dev.mysql.com/downloads/file/?id=470281下载

未分类

未分类

06、安装 Zabbix 所需软件支持包

未分类

先装mysql

sudo yum install mysql-* --skip-broken 有冲突的软件跳过

未分类

安装Apache

sudo yum -y install httpd

systemctl start httpd.service #启动

systemctl stop httpd.service #停止

systemctl restart httpd.service #重启

systemctl enable httpd.service #开机启动

systemctl disable httpd.service #开机不启动

安装php

sudo yum install php

安装php扩展

sudo yum install php-mysqlnd php-gd libjpeg* php-snmp php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash php-common php-ctype php-xml php-xmlreader php-xmlwriter php-session php-mbstring php-gettext php-ldap php-mysqli --skip-broken

sudo yum install wget telnet net-tools python-paramiko gcc gcc-c++ dejavu-sans-fonts python-setuptools python-devel sendmail mailx net-snmp net-snmp-devel net-snmp-utils freetype-devel libpng-devel perl unbound libtasn1-devel p11-kit-devel OpenIPMI unixODBC

未分类

07、设置 MySQL 参数(8GB 内存为例)

sudo vim /etc/my.cnf  不然没权限保存

在文件最后添加以下内容:

innodb_file_per_table = 1
innodb_status_file = 1
innodb_buffer_pool_size = 6G
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 64M
innodb_support_xa = 0
default-storage-engine = innodb
bulk_insert_buffer_size = 8M
join_buffer_size = 16M
max_heap_table_size = 32M
tmp_table_size = 32M
max_tmp_tables = 48
read_buffer_size = 32M
read_rnd_buffer_size = 16M
key_buffer_size = 32M
thread_cache_size = 32
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_rollback_on_timeout = 1
query_cache_size = 16M
query_cache_limit = 16M
collation_server = utf8_bin
character_set_server = utf8

未分类

注:原则上 innodb_buffer_pool_size 需要设置为主机内存的 80%,如果主机内存不是 8GB,以上参数可依据相应比例进行调整,例如主机内存为 16GB,则 innodb_buffer_pool_size 建议设置为 12GB,innodb_log_buffer_size 建议设置为 32M,innodb_log_file_size 建议设置为 128M,以此类推。请注意innodb_buffer_pool_size的值必须是整数,例如主机内存是4G,那么innodb_buffer_pool_size可以设置为3G,而不能设置为3.2G

08、启动 MySQL

sudo systemctl enable mysqld && systemctl start mysqld

09、获取 MySQL 的 root 初始密码

grep 'temporary password' /var/log/mysqld.log

未分类

JtZizq!Rl6E+

10、进行 MySQL 安全配置

配置开始时会用到第 09获取的初始密码,建议修改为自定义密码,其它选项选择 y 即可

mysql_secure_installation

未分类

密码改为:Aa123456,.

11、重启 MySQL

sudo systemctl restart mysqld

12、配置 MySQL 中 zabbix要的库和账号权限

mysql -u root -p(需要输入第 10步中设置的自定义密码)

mysql>create database zabbix character set utf8; #创建数据库

mysql>create user zabbix@'%' identified by 'Qingdao@2017'; #创建用户和密码

mysql>grant all privileges on zabbix.* to zabbix@'%'; #赋权

mysql>flush privileges;

mysql>exit;

13、安装 Zabbix源

sudo rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/

14、安装zabbix

sudo yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-java-gateway zabbix-web

15、导入 zabbix 所需信息

cd /usr/share/doc/zabbix-server-mysql-3.4.3

zcat create.sql.gz | mysql -uroot zabbix -p(需要输入第 10 步中设置的自定义密码)

16、配置 zabbix 参数

sudo vim /etc/zabbix/zabbix_server.conf 这个配置要一遍过

主要是以下几个选项参数需要设置(8GB 内存为例):

DBPassword 配置为第 12 步第 3 行中设置的自定义密码

未分类

CacheSize=512M

(CacheSize在371行)

HistoryCacheSize=128M

(HistoryCacheSize在397行)

HistoryIndexCacheSize=128M

(HistoryIndexCacheSize在405行)

TrendCacheSize=128M

(TrendCacheSize在414行)

ValueCacheSize=256M

(ValueCacheSize在425行)

Timeout=30

(Timeout在432

其它参数保持默认值即可

如果需要监控VMware虚拟机,则还需要设置以下选项参数:

StartVMwareCollectors=2

(StartVMwareCollectors在272行

VMwareCacheSize=256M

(VMwareCacheSize 在298行)

VMwareTimeout=300

(VMwareTimeout在306行)

17、配置 Apache 中的 PHP 参数(8GB 内存为例)

sudo vim /etc/httpd/conf.d/zabbix.conf

php_value max_execution_time 600

php_value memory_limit 256M

php_value post_max_size 32M

php_value upload_max_filesize 32M

php_value max_input_time 600

php_value always_populate_raw_post_data -1

date.timezone 去掉注释符号#,并将值修改为 Asia/Shanghai

18、重启系统

systemctl stop mysqld && reboot

19、启动 zbx

sudo systemctl start httpd && systemctl start zabbix-server

20、在浏览器中输入 http://zbx监控服务器的IP地址/zabbix,进行 zabbix 的页面初始化配置

未分类

未分类

这个页面PHP设置要求全部OK

未分类

如果密码输错,是跳转不到下一步的。密码是前面设置的 Qingdao@2017

未分类

未分类

未分类

注:第4步的”Zabbix server detail”页面中,”Name”处可填写对此监控系统的描述性文字,支持中文,有点像网站的名称。

未分类

未分类

21、第一次登录zbx监控系统,默认用户名 admin,默认密码 zabbix,确认可正常登录系统。

未分类

22、登录进入系统后,确认 Zabbix server is running 的值是 Yes。

然后选择 Administrator –> Users –> Admin

未分类

未分类

23、回到”监测中” –> “仪表板”,就可以看到监控系统已设置为中文界面了。

未分类

实用的升级安装方法php,Nginx,mysql,zabbix等

升级版本编译安装当然Ok,依赖问题处理起来非常之繁琐,现在直接通过apt源来升级版本非常简便,下面我们来拿php做个升级实验

1. 添加下面两行到/etc/apt/sources.list,并将jessie替换为自己所使用的版本名称:

deb http://mirrors.ustc.edu.cn/dotdeb jessie all
deb-src http://mirrors.ustc.edu.cn/dotdeb jessie all

2. 可选项:

如果你想在Debian Squeeze上安装PHP5.4的话,再添加下面这两行:

deb http://mirrors.ustc.edu.cn/dotdeb squeeze-php54 all
deb-src http://mirrors.ustc.edu.cn/dotdeb squeeze-php54 all

如果你想在Debian Wheezy上安装未启用Zend Thread Safety的PHP5.6的话,再添加下面这两行:

deb http://mirrors.ustc.edu.cn/dotdeb wheezy-php56 all
deb-src http://mirrors.ustc.edu.cn/dotdeb wheezy-php56 all

如果你想在Debian Wheezy上安装启用Zend Thread Safety的PHP5.6的话,再添加下面这两行:

deb http://mirrors.ustc.edu.cn/dotdeb wheezy-php56-zts all
deb-src http://mirrors.ustc.edu.cn/dotdeb wheezy-php56-zts all

如果你想在Debian Wheezy上安装PHP5.5的话,再添加下面这两行:

deb http://mirrors.ustc.edu.cn/dotdeb wheezy-php55 all
deb-src http://mirrors.ustc.edu.cn/dotdeb wheezy-php55 all

3. 然后导入合适的GnuPG key

wget https://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -

4. 运行

apt-get update

升级php例子:

升级前

一系列操作

401 2017-10-21 09:25:26 echo “deb http://packages.dotdeb.org wheezy-php56 all” >> /etc/apt/sources.list.d/dotdeb.list
402 2017-10-21 09:25:32 echo “deb-src http://packages.dotdeb.org wheezy-php56 all” >> /etc/apt/sources.list.d/dotdeb.list
403 2017-10-21 09:25:39 wget http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add –
405 2017-10-21 09:26:17 dpkg -l |grep php
413 2017-10-21 09:28:30 for pkg in `dpkg -l |grep php |awk ‘{print $2}’`;do dpkg -P $pkg; done
425 2017-10-21 09:29:28 aptitude update
426 2017-10-21 09:29:46 aptitude install php5-fpm php5-cgi php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-memcache php5-xmlrpc php5-dev libapache2-mod-php5

然后看看升级后的版本

未分类

ok升级完成,类似nginx等都可以参考这个方法。

zabbix 创建自定义监控项

1、打开zabbix_agentd.conf中自定义监控项

[root@abcopenstack script]# tailf -10 /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
Include=/usr/local/etc/zabbix_agentd.userparams.conf #链接自定义监控项的路径

2、创建自定义监控项文件(监控项的名称要有zabbix web界面一致)

未分类

[root@abcopenstack script]# vim /usr/local/etc/zabbix_agentd.userparams.conf
UserParameter=check_link,/bin/bash /usr/local/etc/script/check_link.sh

3、所定义的脚本需要定义为可执行权限

[root@abcopenstack script]# chmod 755 check_link.sh
[root@abcopenstack script]# ll
total 4
-rwxr-xr-x 1 root root 95 Oct 13 14:33 check_link.sh

4、重启zabbix_agentd

5、使用zabbix_get测试自定义的监控项是否能获取数据

[root@abcopenstack script]# zabbix_get -s 127.0.0.1 -p 10050 -k check_link

6、zabbix web 界面添加监控项

6.1 点击监控项

未分类

6.2 创建监控项

未分类

7、定义监控项图像

未分类

8、查看图像

未分类

Zabbix图形中文字体显示方块处理

原因很简单,图形显示用的字体是dejavu,不支持中文。

怎么办?先理清逻辑。

zabbix配置文件(/usr/share/zabbix/include/defines.inc.php)里,定义的字体叫做graphfont.ttf,然后一路软链接到DejaVuSans.ttf,如下:

/usr/share/zabbix/graphfont.ttf -> /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf

那么,修改掉最后一层软连接的目标字体就可以了。执行类似下面的命令就可以了。

yum install google-noto-sans-simplified-chinese-fonts.noarch -y
mv /etc/alternatives/zabbix-web-font /etc/alternatives/zabbix-web-font_bak 
ln -s /usr/share/fonts/google-noto/NotoSansSC-Regular.otf /etc/alternatives/zabbix-web-font

我的环境是Zabbix 3.4和CentOS7,其他版本的,就按照这个思路,修改字体包或者路径即可。

zabbix自动截图留档_python版

一、背景

每个DB Server都有zabbix监控,除了异常情况的报警信息外,也会在日检、周检、月检等工作中用到zabbix的监控数据,对zabbix监控数据会做两种处理:1 数据分析(环比分析、最大值、最小值及平均值分析);2 主要检测项目折线图留档(为啥需要留档呢,因为zabbix监控过多服务器,监控数据仅保留半年到1年间)。

关于 数据分析类的,已嵌入 日检邮件报告跟 月度报告 中,而 zabbix 监控图留档 一直没实现自动化,每个月都是人工取截图。刚好最近遇到 国庆db报告跟9月数据库报告,需要各种截图留档,然后触发了写个小脚本来自动下载 zabbix的监控图。

二、写个小脚本

2.1 获取图片url

首先打开日常的zabbix监控图页面,点击 F12,然后点击,这个时候选中页面中的折线图,就可以看到 对应的HTML代码,最后点击对应的html代码右键 copy下图片的链接地址,即可知道 zabbix的监控图 的url。

未分类

根据获取的url如下:

http://company.moniter.com/chart.php?period=2592000&stime=20170901000000&itemids%5B0%5D=32571&type=0&updateProfile=1&profileIdx=web.item.graph&profileIdx2=32571&width=1778&sid=341eb79599119b85&screenid=&curtime=1508809467171

这里边有几个参数说明下

  • stime 是监控的开始时间按照 ‘%Y%m%d%H%M%S’ 的时间格式

  • period 是监控图的时长,从 stime开始要展示 多少秒 的监控数据

  • itemid[0] 是 监控项目在zabbix 数据库的 itemid 号

    • 这个如何查呢?首先根据 host表格,找到监控服务器的hostid,然后根据 items表格找到对应的监控id

    • select i.hostid,itemid,i.name,key_,i.description from items i join hosts h on i.hostid=h.hostid where h.name = ‘hostname’;

  • curtime这里可以不填写,但是注意 stime 加上 period秒数后,不要超过当前查询时间即可

  • width 为图片的长度

根据需要,仅保留4个参数,这里注意 stime 加上 period秒数后,不要超过当前查询时间 ,简化后的url如下(把zabbix部署的域名或者网址IP替换掉 company.moniter.com):

http://company.moniter.com/chart.php?period=2592000&stime=20170901000000&itemids[0]=32571&width=1778

2.2 脚步及测试

小脚本实现的功能是:根据批量的itemid,自动下载图片到本地目录,并且重命名图片名称。

代码实现如下:

# -*- coding: utf-8 -*-
__author__ = 'xinysu'
__date__ = '2017/10/12 14:38'
import sys
import datetime
import http.cookiejar, urllib.request, urllib
from lxml import etree
import requests
class ZabbixChart(object):
    def __init__(self, name, password):
        url="http://company.monitor.com/index.php";
        self.url = url
        self.name = name
        self.password = password
        cookiejar = http.cookiejar.CookieJar()
        urlOpener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))
        values = {"name": self.name, 'password': self.password, 'autologin': 1, "enter": 'Sign in'}
        data = urllib.parse.urlencode(values).encode(encoding='UTF8')
        request = urllib.request.Request(url, data)
        try:
            urlOpener.open(request, timeout=10)
            self.urlOpener = urlOpener
        except urllib.request.HTTPError as e:
            print(e)
    def download_chart(self, image_dir,itemids,stime,etime):
        # 此url是获取图片是的,请注意饼图的URL 和此URL不一样,请仔细观察!
        url="http://company.monitor.com/chart.php";
        # 折线图的大小
        url_par={}
        url_par={"width":1778, "height":300,"itemids":itemids}
        # 开始日期、结束日期从str转换为datetime
        stime = datetime.datetime.strptime(stime, "%Y-%m-%d")
        etime=datetime.datetime.strptime(etime, "%Y-%m-%d")
        # 计算period
        diff_sec = etime - stime
        period = diff_sec.days*24*3600 + diff_sec.seconds
        url_par["period"] = period
        # stime转换str
        stime = stime.strftime('%Y%m%d%H%M%S')
        url_par["stime"] = stime
        key = url_par.keys()
        data = urllib.parse.urlencode(url_par).encode(encoding='UTF8')
        request = urllib.request.Request(url, data)
        url = self.urlOpener.open(request)
        image = url.read()
        html = requests.get('http://company.monitor.com/history.php?action=showgraph&itemids[]={}'.format(itemids)).text
        page = etree.HTML(html)
        hostname_itemname = page.xpath('//div[@class="header-title"]/h1/text()')[0].split(':')
        hostname = hostname_itemname[0]
        hostname_itemname.pop(0)
        itemname = '_'.join(hostname_itemname).replace('/','_')
        imagename = "{}{}_{}_{}_({}).png".format(image_dir,hostname,stime,etime.strftime('%Y%m%d%H%M%S'),itemname)
        f = open(imagename, 'wb')
        f.write(image)

根据写好的类,输入zabbix的登录帐号、监控图的起始跟结束时间、本地存放图片目录、itemid的list,运行后如下:

# 登陆URL
username = "xinysu"
password = "passwd"

# 图片的参数,该字典至少传入graphid
stime = "2017-09-01"
etime = "2017-10-01"

# 用于图片存放的目录
image_dir = "E:\03 WORK\03 work_sql\201709"

#运行
b = ZabbixChart(username, password)
item_list =(35295,35328,38080,37992,38102,38014,35059,35022,42765,35024,35028,35035,35036,35044,35045,35046,35047,38248,36369,36370,36371,36372)
for i in item_list:
    itemids = i
    b.download_chart(image_dir,itemids,stime,etime)

随便输入的itemid 测试下载,实际需要根据监控需要过滤itemid,下载后在文件夹中显示如下:

未分类

未分类

Zabbix 3.2.6 自定义端口监控(Oracle)

一、背景

在现实的环境中,我们多多少少有些服务需要监控,但是zabbix自带的监控模板不存在,就需要我们自己进行配置,我们的主要方法也是监控这些服务的端口状态来确定服务是否正常运行。

我们今天主要通过判断Oracle的端口状态来监控服务是否正常,它的端口是1521。

二、配置

1、模板创建

为了简化操作,我们这里直接创建模板,不必每台机器单独去创建item以及trigger。

未分类

2、创建item

未分类

3、创建trigger

未分类

4、图标制作

有兴趣的可以制作一下图表,因为我没有兴趣,我这里就不写了。

5、给主机添加模板

这一步我也不再展示了,添加模板大家都会了。

三、验证

因为我的Action是默认的,只要出问题就会报警,这里不再展示,可以查看我其他的博文,我们停掉或者恢复数据库的监听端口,查看报警信息。

我这里是微信报警,关于微信报警的设置可以去查看我相关的博文。

未分类