监控及zabbix

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

目录:

1       监控分类... 1

1.1        硬件监控... 1

1.2        系统监控... 2

1.3        网络监控... 3

1.4        应用(业务)监控... 3

2       安装zabbix. 3

2.1        安装zabbix服务端... 3

2.2        安装zibbix客户端... 9

2.3        添加zabbix主机组和主机... 9

2.4        创建用户和组... 11

2.5        添加项目及触发器... 13

2.6        设置报警... 16

2.7        自定义模板... 19

2.8        web监控... 20

2.9        分布式监控、客户端主动模式... 21

2.9.1         客户端被动模式... 21

2.9.2         客户端主动模式... 21

2.9.3         zabbix分布式... 22

2.10          自动化监控... 23

2.10.1       zabbix-agent自动注册(使用proxy)... 23

2.10.2       主机探索(不使用proxy,被动模式)... 24

2.10.3       使用zabbix-api 25

2.11      更改中文字体防止乱码... 28

 

1         监控分类

1.1    硬件监控

1、机房巡检。检查服务器各种状态。

2、通过远程控制卡监控。ipmi是一种标注。

ipmi获取不到硬盘状态,比如硬盘坏了,硬盘可以用MegaCli工具。

ipmi简介:http://www.ibm.com/developerworks/cn/linux/l-ipmi/

yum install OpenIPMI ipmitool -y
[root@centos67 ~]# /etc/init.d/ipmi start

1.2    系统监控

1、了解监控对象

2、知道性能的基准线。

cpu监控

cpu调度器

上下文切换

运行队列

cpu使用率

zabbix监控超详细搭建过程(转) 随笔 第1张
[root@c67-7 ~]# cat /proc/cpuinfo 

[root@c67-7 ~]# lscpu

[root@c67-7 ~]# uptime  #一般情况小于等于3就是正常

[root@c67-7 ~]# rpm -qa |grep sysstat

sysstat-9.0.4-27.el6.x86_64

[root@c67-7 ~]# vmstat 1

[root@c67-7 ~]# mpstat 1

Linux 2.6.32-573.el6.x86_64 (c67-7)     2015年10月24日  _x86_64_        (1 CPU)

11时24分37秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle

11时24分38秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

11时24分39秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

用户态(程序运行) 内核态(系统调用,如vi打开文件) 正常比例是70%:30%
zabbix监控超详细搭建过程(转) 随笔 第2张

计算类的服务吃cpu,数据库占IO

zabbix监控超详细搭建过程(转) 随笔 第3张   

                                     

内存

zabbix监控超详细搭建过程(转) 随笔 第4张
[root@c67-7 ~]# free -m

             total       used       free     shared    buffers     cached

Mem:           992        580        411          0         46        441

-/+ buffers/cache:         92        900

Swap:         1023          0       1023

buffer:写入缓冲区

cache:读出缓存区
zabbix监控超详细搭建过程(转) 随笔 第5张

硬盘

[root@c67-7 ~]# yum install iotop  -y

iotop

网络io

[root@c67-7 ~]# yum install iftop -y

iftop

nmon可以监控以上所有东西。

 

1.3    网络监控

第三方监控宝等。

使用smokeping监控网络状态,如下图:

zabbix监控超详细搭建过程(转) 随笔 第6张

 

1.4    应用(业务)监控

使用pwiki监控业务状态

apache监控:通过mod_status模块

http://www.t086.com/code/apache2.2/mod/mod_status.html

nginx监控:类似于apache

memcached监控 使用nc获取状态

redis监控

2 安装zabbix

2.1    安装zabbix服务端

官方文档参考

https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages

1、安装zabbix-release

zabbix监控超详细搭建过程(转) 随笔 第7张 zabbix监控超详细搭建过程(转) 随笔 第8张
[root@linux-node1 ~]# mkdir -p /home/lxy/tools

[root@linux-node1 ~]# cd /home/lxy/tools/

[root@linux-node1 tools]# wget -q http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

 [root@linux-node1 tools]# rpm -ivh zabbix-release-2.4-1.el6.noarch.rpm

warning: zabbix-release-2.4-1.el6.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY

Preparing...                ########################################### [100%]

   1:zabbix-release         ########################################### [100%]

[root@linux-node1 tools]# rpm -ql zabbix-release

/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

/etc/yum.repos.d/zabbix.repo

/usr/share/doc/zabbix-release-2.4

/usr/share/doc/zabbix-release-2.4/GPL

[root@linux-node1 tools]# ll /etc/yum.repos.d/zabbix.repo

-rw-r--r-- 1 root root 401 9月  11 2014 /etc/yum.repos.d/zabbix.repo
zabbix监控超详细搭建过程(转) 随笔 第9张

2.开始安装zabbix

zabbix监控超详细搭建过程(转) 随笔 第10张 zabbix监控超详细搭建过程(转) 随笔 第11张
1)保留yum安装的rpm包

[root@linux-node1 tools]# sed -i 's#keepcache=1#keepcache=0#g' /etc/yum.conf

[root@linux-node1 tools]# grep keepcache /etc/yum.conf

keepcache=0

2)开始安装zabbix

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客户端与服务端
zabbix监控超详细搭建过程(转) 随笔 第12张

 

3、配置zabbix服务相关

zabbix监控超详细搭建过程(转) 随笔 第13张
1)配置mysql

[root@linux-node1 tools]# \cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

[root@linux-node1 tools]# vim /etc/my.cnf

在[mysqld](第26行)标签下增加如下三行后保存

[mysqld]

character-set-server = utf8
init-connect = 'SET NAMES utf8'
collation-server = utf8_general_ci

[root@linux-node1 tools]# /etc/init.d/mysqld start

2)初始化数据库环境

创建数据库

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)

mysql> flush privileges;

导入表结构

[root@linux-node1 tools]# cd /usr/share/doc/zabbix-server-mysql-2.4.6/create/

[root@linux-node1 create]#  mysql -u root -p zabbix < schema.sql

[root@linux-node1 create]# mysql -u root -p zabbix < images.sql

[root@linux-node1 create]#  mysql -u root -p zabbix < data.sql

[root@linux-node1 create]# mysqladmin -uroot password 123456

3)设置apache时区

sed -i 's#\# php_value date.timezone Europe/Riga#php_value date.timezone Asia/Shanghai#g' /etc/httpd/conf.d/zabbix.conf

grep Shanghai /etc/httpd/conf.d/zabbix.conf

    php_value date.timezone Asia/Shanghai

4)更改zabbix server配置

[root@linux-node1 ~]# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak

[root@linux-node1 ~]# sed -i 's@# DBPassword=@DBPassword=zabbix@g' /etc/zabbix/zabbix_server.conf

[root@linux-node1 ~]# sed -i 's@# DBHost=localhost@DBHost=localhost@g' /etc/zabbix/zabbix_server.conf

-------------------------------------------------

vim /etc/zabbix/zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

5)启动相关服务

[root@linux-node1 ~]# /etc/init.d/zabbix-server start

Starting Zabbix server:                                    [确定]

[root@linux-node1 ~]# /etc/init.d/httpd start

正在启动 httpd:                                           [确定]

[root@linux-node1 ~]# lsof -i:10051|wc -l

55

[root@linux-node1 ~]# lsof -i:80|wc -l    

1
zabbix监控超详细搭建过程(转) 随笔 第14张

 

0

 

4、web界面安装

 zabbix监控超详细搭建过程(转) 随笔 第15张

zabbix监控超详细搭建过程(转) 随笔 第16张

 

zabbix监控超详细搭建过程(转) 随笔 第17张

 zabbix监控超详细搭建过程(转) 随笔 第18张

zabbix监控超详细搭建过程(转) 随笔 第19张

上面的图形操作就是创建了一个配置文件,然后如果写错就可以去配置文件改

登录Admin/zabbix

进入后改密码

zabbix监控超详细搭建过程(转) 随笔 第20张 

 

zabbix监控超详细搭建过程(转) 随笔 第21张

2.2    安装zibbix客户端

服务端也安装

rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm yum install zabbix-agent -y

vim /etc/zabbix/zabbix_agentd.conf

81 Server= 10.0.0.7 (服务端ip)

 

grep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf   

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Server= 10.0.0.7  (服务端ip)

ServerActive=127.0.0.1  (服务端ip)

Hostname=Zabbix server

 

/etc/init.d/zabbix-agentd start

2.3    添加zabbix主机组和主机

添加组

 zabbix监控超详细搭建过程(转) 随笔 第22张

 

添加主机

 zabbix监控超详细搭建过程(转) 随笔 第23张

 

zabbix监控超详细搭建过程(转) 随笔 第24张

2.4    创建用户和组

zabbix报警是针对用户和用户组的。

创建用户(不要急着存档)

 zabbix监控超详细搭建过程(转) 随笔 第25张

 

报警媒介先不填,因为默认的媒介不好用,需要手动添加,一会添加。

 zabbix监控超详细搭建过程(转) 随笔 第26张

 

zabbix监控超详细搭建过程(转) 随笔 第27张

添加完,可以使用新用户登录

2.5    添加项目及触发器

1、客户端添加一个检查用户的key,格式为key,命令

grep UserParameter /etc/zabbix/zabbix_agentd.conf

UserParameter=login-user,uptime | awk -F ' ' '{print $4}'

/etc/init.d/zabbix-agent restart

2、主机通过zabbix-get检查

 yum install zabbix-get -y

zabbix-get  -s 客户主机  -k  命令

[root@linux-node1 ~]# zabbix_get -s 10.0.0.8 -k login-user

login-user  获取登录用户的列表

3、web界面添加

主机界面选定主机,然后点击项目,点创建项目

 zabbix监控超详细搭建过程(转) 随笔 第28张

 

4、添加触发器

 

 zabbix监控超详细搭建过程(转) 随笔 第29张

此处点添加,然后选择主机

 zabbix监控超详细搭建过程(转) 随笔 第30张

 zabbix监控超详细搭建过程(转) 随笔 第31张

zabbix监控超详细搭建过程(转) 随笔 第32张

 

5、创建图形

 zabbix监控超详细搭建过程(转) 随笔 第33张

2.6    设置报警

1、设置动作

 zabbix监控超详细搭建过程(转) 随笔 第34张

zabbix监控超详细搭建过程(转) 随笔 第35张

zabbix监控超详细搭建过程(转) 随笔 第36张

 

 

自定义报警类型

[root@linux-node1 ~]# vim /etc/zabbix/zabbix_server.conf

435 AlertScriptsPath=/usr/lib/zabbix/alertscripts   ##<<设置自定义脚本的路径

[root@linux-node1 alertscripts]# /etc/init.d/zabbix-server restart

之后写相应脚本

脚本要支持三个参数

$1:用户的介质,如邮箱,手机号等

$2:标题

$3:内容

[root@linux-node1 alertscripts]# cat login.sh        

#!/bin/bash

MAIL_TITEL=$2

MAIL_CON=$3

echo "$MAIL_CON"|/bin/mail -s "$MAIL_TITEL" $1

echo "$1 $2 $3">>/tmp/login_zabbix.txt

添加媒介类型

zabbix监控超详细搭建过程(转) 随笔 第37张

在动作中设置

 zabbix监控超详细搭建过程(转) 随笔 第38张

为用户配置示警媒介

 zabbix监控超详细搭建过程(转) 随笔 第39张

2.7    自定义模板

创建模板----模板中创建应用集----创建监控项-创建触发器-画图等都搞进模板。

最后主机添加模板

注意点,使用老师的模板脚本,另外添加多个类似模板点克隆再改

[root@lb-node2 zabbix]# cat zabbix_agentd.conf.d/zabbix-linux-plugin.conf 
UserParameter=linux_status[*],/etc/zabbix/zabbix_linux_plugin.sh "$1" "$2" "$3"  #写在/etc/zabbix/zabbix_agentd.conf中

 zabbix监控超详细搭建过程(转) 随笔 第40张

 zabbix监控超详细搭建过程(转) 随笔 第41张

2.8    web监控

web监控是针对主机的,别忘了触发器

 zabbix监控超详细搭建过程(转) 随笔 第42张

zabbix监控超详细搭建过程(转) 随笔 第43张

 

 zabbix监控超详细搭建过程(转) 随笔 第44张

 

2.9    分布式监控、客户端主动模式

2.9.1            客户端被动模式

grep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf   

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

StartAgents=3

Server= 10.0.0.7

ServerActive=127.0.0.1

Hostname=Zabbix server

2.9.2            客户端主动模式

[root@linux-node2 ~]# grep  '^[a-Z]' /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=10.0.0.7
Hostname=linux-node2.example.com
Include=/etc/zabbix/zabbix_agentd.d/

[root@linux-node2 ~]# /etc/init.d/zabbix-agent restart

服务端克隆模板,把模板里项目全选,批量更新,项目类型改为主动方式

 zabbix监控超详细搭建过程(转) 随笔 第45张

然后主机添加项目即可。

#克隆linux OS模板,注意更改连接,连接也是克隆的。

 

2.9.3            zabbix分布式

使用内网yum源

echo '192.168.0.200 mirrors.aliyun.com repo.zabbix.com' >>/etc/hosts

客户端安装zabbix-proxy

[root@linux-node2 ~]# yum install -y zabbix-proxy zabbix-proxy-mysql mysql-server

配置分布式

[root@linux-node2 ~]# rpm -ql zabbix-agent

/etc/init.d/zabbix-agent

/etc/logrotate.d/zabbix-agent

/etc/zabbix/zabbix_agentd.conf

/etc/zabbix/zabbix_agentd.d

/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

/usr/sbin/zabbix_agent

/usr/sbin/zabbix_agentd

/usr/share/doc/zabbix-agent-2.4.6

/usr/share/doc/zabbix-agent-2.4.6/userparameter_examples.conf

/usr/share/doc/zabbix-agent-2.4.6/zabbix_agent.conf

/usr/share/man/man8/zabbix_agentd.8.gz

[root@linux-node2 ~]# rpm -ql zabbix-proxy-mysql

/usr/sbin/zabbix_proxy_mysql

/usr/share/doc/zabbix-proxy-mysql-2.4.6

/usr/share/doc/zabbix-proxy-mysql-2.4.6/create

/usr/share/doc/zabbix-proxy-mysql-2.4.6/create/schema.sql

数据库配置

[root@linux-node2 ~]# /etc/init.d/mysql start

mysql> create database zabbix_proxy character set utf8;

Query OK, 1 row affected (0.00 sec)

 

mysql> grant all on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';

Query OK, 0 rows affected (0.00 sec)

 

mysql> use zabbix_proxy

Database changed

mysql> source /usr/share/doc/zabbix-proxy-mysql-2.4.6/create/schema.sql;

Query OK, 0 rows affected (0.02 sec)

配置文件配置

[root@linux-node2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf

ProxyMode=0   #0主动,1被动

Server=10.0.0.7   #主动模式设置

Hostname=proxy-node1  #必须改

LogFile=/var/log/zabbix/zabbix_proxy.log

LogFileSize=0

PidFile=/var/run/zabbix/zabbix_proxy.pid

DBName=zabbix_proxy

DBUser=zabbix

DBPassword=zabbix

DBSocket=/var/lib/mysql/mysql.sock

ExternalScripts=/usr/lib/zabbix/externalscripts

[root@linux-node2 ~]# /etc/init.d/zabbix-proxy start

Starting Zabbix proxy:                                     [确定]

[root@linux-node2 ~]# lsof -i:10051

配置界面,管理-分布式(代理)-创建代理-

之后添加主机(选上代理即可),要监控的机器agent配置文件ip改成代理的ip

服务多重启几次,先stop再start

 

2.10              自动化监控

2.10.1        zabbix-agent自动注册(使用proxy)

HostMetadataItem=system.uname

[root@linux-node2 ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

StartAgents=0

ServerActive=10.0.0.8  #这里用了代理的ip

Hostname=linux-node2.example.com

HostMetadataItem=system.uname

Include=/etc/zabbix/zabbix_agentd.d/

配置-动作-事件源选择自动注册-创建动作

 zabbix监控超详细搭建过程(转) 随笔 第46张

zabbix监控超详细搭建过程(转) 随笔 第47张

 

2.10.2        主机探索(不使用proxy,被动模式)

 zabbix监控超详细搭建过程(转) 随笔 第48张

组态-探索--使用默认的就行,如下,

 zabbix监控超详细搭建过程(转) 随笔 第49张

之后创建动作,事件源选探索,上面那个是自动注册

然后剩下同上了

 

2.10.3        使用zabbix-api

https://www.zabbix.com/documentation/2.4/manual/api/reference

[root@linux-node1 ~]# /usr/share/zabbix/api_jsonrpc.php

获取验证

[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '

{

    "jsonrpc": "2.0",

    "method": "user.login",

    "params": {

        "user": "Admin",

        "password": "123456"

    },

    "id": 1

}' http://10.0.0.7/zabbix/api_jsonrpc.php | python -mjson.tool

---------上面为输入--下面为输出-----

{

    "id": 1,

    "jsonrpc": "2.0",

    "result": "6981d2f7663ac35b553ce7e4477f7f29"

}

-------

请求api,获取监控主机,带上SessionID

[root@linux-node1 ~]# curl -s -X POST -H 'Content-Type:application/json' -d '

{

    "jsonrpc": "2.0",

    "method": "host.get",

    "params": {

        "output": ["hostid"]

    },

    "auth": "6981d2f7663ac35b553ce7e4477f7f29",

    "id": 2

}' http://10.0.0.7/zabbix/api_jsonrpc.php | python -mjson.tool

------上面为输入,下面为输出----------

{

    "id": 2,

    "jsonrpc": "2.0",

    "result": [

        {

            "hostid": "10084"

        },

        {

            "hostid": "10115"

        }

    ]

}

 zabbix监控超详细搭建过程(转) 随笔 第50张

剩下看官网吧,官网提供各种方法。

https://www.zabbix.com/documentation/2.4/manual/api/reference/host/get

 

例子:创建主机,执行下面直接添加。

curl -s -X POST -H 'Content-Type:application/json' -d '

{

    "jsonrpc": "2.0",

    "method": "host.create",

    "params": {

        "host": "Linux server",

        "interfaces": [

            {

                "type": 1,

                "main": 1,

                "useip": 1,

                "ip": "10.0.0.8",

                "dns": "",

                "port": "10050"

            }

        ],

        "groups": [

            {

                "groupid": "2"

            }

        ],

        "templates": [

            {

                "templateid": "10001"

            }

        ],

    },

    "auth": "9d670026e562405100a1a073231e7658",

    "id": 1

}' http://10.0.0.7/zabbix/api_jsonrpc.php | python -mjson.tool

 

2.11              更改中文字体防止乱码

讲自己电脑的字体微软雅黑上传到linix上

[root@lvs1 fonts]# pwd   ##2.2版本

/var/www/html/fonts

[root@lvs1 fonts]# mv DejaVuSans.ttf DejaVuSans1.ttf

[root@lvs1 fonts]# mv  msyh.ttf DejaVuSans.ttf

[root@lvs1 fonts]# ll

总用量 21988

-rw-r--r-- 1 apache apache   741536 4月  22 15:56 DejaVuSans1.ttf

-rw-r--r-- 1 root   root   21767952 6月  11 2009 DejaVuSans.ttf

[root@lvs1 fonts]# chown apache.apache DejaVuSans.ttf

或者直接更改系统的

/usr/share/fonts/dejavu/DejaVuSans.ttf

另外不同版本zabbix字体位置不一样,名字也不一样,下面是本文档的版本

[root@linux-node1 dejavu]# find / -type d -name "fonts"

/var/www/html/fonts

/etc/fonts

/usr/share/zabbix/fonts

/usr/share/fonts

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄