Zabbix监控(二)应用

(1)客户端

说明:实验是监控当前Server的状态(都在一台主机上),监控的是本机!

中文:点击右上角小人来进行Language的转换,细节后续(字体问题)!

为了实验效果:暂时本机没有安装zabbix-agent,所以主机显示错误信息!

补充

tcp6       0      0 :::10051                :::*                    LISTEN      997        31590      3120/zabbix_server  
tcp6       0      0 ::1:10051               ::1:55056               TIME_WAIT   0          0          -                   
tcp6       0      0 ::1:10051               ::1:55060               TIME_WAIT   0          0          -                   
tcp6       0      0 ::1:10051               ::1:55048               TIME_WAIT   0          0          -                   
tcp6       0      0 ::1:10051               ::1:55054               TIME_WAIT   0          0          -                   
tcp6       0      0 ::1:10051               ::1:55050               TIME_WAIT   0          0          - 

# 说明:zabbix-server服务器启动四个进程!

下一步:安装agent客户端

yum install zabbix-agent -y

systemctl start zabbix-agent

systemctl enable zabbix-agent

# 刷新页面:观察是否还有错误!

实验现象

端口

tcp    0  0 0.0.0.0:10050       0.0.0.0:*           LISTEN  997    45289  13680/zabbix_agent

监控CPU负载的一个展示

(2)开启一台被监控服务器

yum install zabbix-agent -y # 收集信息

vim /etc/zabbix/zabbix_agentd.conf

# Server=172.25.2.1       # 被动连接

# ServerActive=172.25.2.1 # 主动连接的zabbix_server的IP

# Hostname=server2 #前提要做好本地解析了!

 systemctl start zabbix-agent

 netstat -antlupe # 查看端口(10050)

 systemctl enable zabbix-agent

第一步:将被监控的主机加入监控的范围内

配置--->主机--->创建主机(右上侧)

细节:主机名称必须是英文,可见名称在UI端展示的!

DNS:如果ip写的是域名的话!

第二步添加模版

模版:监控哪些服务相应的选项数据,创建哪些对应的模版或者说图片,页面!

OS linux:操作系统的模版

公司比较大会采用资产清单

监控项:具体的监控项目(item)

触发器:CPU超过80%,就会发出严重警告,到达某个阀值,去做某个动作!

图形:根据图标的形式把监控数据展示出来

自动发现:根据自动发现的规则做哪些事情(例如:某太服务器上线后,自动添加监控队列)!

Web检测:模拟客户端的访问!

现象(监控其它服务器,非自身)

修复:字符集缺失(后续)!

默认自动发现规则

核心:添加监控主机和自动发现的规则

(1)自动发现

手动添加监控主机的缺点:需要手动一台一台的添加,如果上千台,特别麻烦!

配置一个自动发现规则,实现批量的添加

例如:某台服务器IP是在这个网段的时候,自动添加的监控集群中,并配置相应的监控项目!

##################

配置步骤

(1)配置的自动发现的选项中,添加自动发现的规则:定时扫描某个网段的机器是否在线

(2)一旦扫描在线,在自动发现的动作里,告诉它,发现了就添加到主机监控中!

时间源--->自动发现--->创建动作-->

实验前提:把原来手动添加的删除,让其自动发现!

动作

自动发现-->创建发现规则(修改网段)-->等一会才会出现实验现象

实验的目的:添加一个监控节点和批量添加监控节点!

自动发现:由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP服务器、设备。

具体配置如下:

1、创建自动发现规则

“配置”->“自动发现”->“创建发现规则”
填入名称、需发现服务器、设备的IP范围、更新间隔、检查项(ssh和zabbix客户端)、设备唯一性准则
最后勾选已启用、点击添加。

2、创建自动发现动作

“配置”->“动作”->事件源“自动发现”->“创建动作”

点击操作配置,选择具体的操作类型:添加主机、添加到主机群组、与模板关联

3、在“检测中”->“自动发现”可以查看 已发现的设备

(2)自动注册

自动注册:由客户端主动发起,客户端必须安装并启动Agentd,否则无法被自动注册添加至主机列表

实验前提:把原来的自动添加的删除被监控的服务器删除!

步骤

1、创建自动注册动作

“配置”->事件源“自动注册”->“创建动作”

说明:自动注册发现之后,干的事情(上面完成三件事情)

补充:可以个性设置,对应不同的条件给予不同的链接模版!

说明:有一个时间过程

说明:把自动发现的禁止掉

细节:自动发现和自动注册的区别

(3)API调用

说明:企业里面比较流行

API:Application Programming Interface,应用程序编程接口

特点:Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问!

大多数API至少包含四种方法getcreateupdatedelete ,分别是检索,创建,更新和删除数据!

说明:使用远程HTTP请求来调用API

(1)验证

说明:在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌(token-->相当于一个密钥)

说明本质是shell命令,可以写到一个文件中,并给予执行权限

vim zabbix.api
###############

curl -XPOST -H 'Content-Type:application/json-rpc' -d ' {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}' http://172.25.2.1/zabbix/api_jsonrpc.php | python -m json.tool

###############
chmod +x zabbix.api
./zabbix.api 

(2)检索主机

说明:通过有效的用户身份验证令牌,可以用来访问Zabbix中的数据。

例如,让我们使用 host.get法检索所有已配置主机的ID,主机名和接口 !

配置信息

curl -XPOST -H 'Content-Type:application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": "cb9e47cf069e8067ae1732f69c84a54d"
}' http://172.25.2.1/zabbix/api_jsonrpc.php | python -m json.tool

# 细节:花括号要匹配!

说明:写入一个文件中

(3)删除一个监控的节点服务器

curl -XPOST -H 'Content-Type:application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10265"
    ],
    "auth": "cb9e47cf069e8067ae1732f69c84a54d",
    "id": 1
}' http://172.25.2.1/zabbix/api_jsonrpc.php | python -m json.tool

()

注意:一定要测试(前端页面看),由于采用的是自动注则的方式所以等一会又会扫描到,进行添加!

(4)添加节点(省略

(1)把原来的改成自动监听,并且删除,然后添加(API),最后测试(脚本),看是否添加进来!

PRC:远程过程调用协议

三  实验

Zabbix_server 添加Apach的模版(监控Apach服务)

Templates -->Apach-->点进去

##########################################

下一步:server2安装nginx

目的:让zabbix服务器监控agent节点主机的nginx的并发访问和流量等情况!

原因:发现其监控项(iteam)太少!

核心步骤

 yum install gcc pcre-devel zlib-devel -y
 tar zxf nginx-1.15.9.tar.gz 
 cd nginx-1.15.9
 vim auto/cc/gcc 
 ./configure --help|grep stub
 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module #模块(监控连接模块)
 make && make install
 vim /usr/local/nginx/conf/nginx.conf
 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 nginx -t
 nginx
location /status {
                stub_status on; # 其用模块
                access_log  off;# 此访问请求,不添加日志
        }

测试

进一步需求:网站正常的状况,不想外界来访问,只能本地主机可以(loclahost)?

说明:可以通过修改配置文件的auth认证或者ACL权限(对IP进行管控)

 location /status {
                stub_status on;
                access_log  off;
                allow 127.0.0.1;
                deny  all;
        }

vim /usr/local/nginx/conf/nginx.conf
nginx -s reload

测试:本地(curl localhost/status)和外界(403)

进一步:server2端收集nginx的并发量等数据

命令行测试(类似脚本的形式):

 curl -s http://localhost/status|grep Active|awk '{print $3}'

 # 1   s(slient)-->静默的方式!

进一步:想让其自动收集怎么办?

需求写入agent相应的配置文件,让其自动收集!

cd /etc/zabbix/zabbix_agentd.d/

vim userparameter_mysql.conf

cp userparameter_mysql.conf userparameter_nginx.conf

vim userparameter_nginx.conf # 说明:必须是conf结尾,并且放到特定的目录中!

# UserParameter=nginx.active,curl -s http://localhost/status|grep Active|awk '{print 
$3}'

# 特点:就是键值对的形式,以逗号分割(脚本突显的地方)!

systemctl restart zabbix-agent # 加载新的配置文件

server1端:安装一个测试工具zabbix-get

测试

zabbix_get -s 172.25.2.2 -p 10050 -k 'nginx.active'

# 1 -->通过触发键-->调用相应的动作-->然后返还!

监控页面

(1)添加一个nginx_active的监控项(名字随便起)

对应主机--->监控项--->添加监控项(键)

(2)添加nginx_active图形,与监控项(iteam)联系起来!

说明:可以展示不同的格式展示!

(3)字体的解决

问题:展示页面的时候出现好多小框!

cd /usr/share/zabbix/fonts    # 把simkai.tff字体复制到该字体目录

cd /usr/share/zabbix/include  # 引用该字体的文件

vim defines.inc.php           

:%s/graphfont/simkai/g        # vim的全局替换

# 刷新页面!

(4)监控多个项

vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

## 熟悉awk相关指令

UserParameter=nginx.active,curl -s http://localhost/status|grep Active|awk '{print $3}'
UserParameter=nginx.accept,curl -s http://localhost/status |awk NR==3|awk '{print $1}'
UserParameter=nginx.request,curl -s http://localhost/status |awk NR==3|awk '{print $3}'

###命令行测试###

[root@server1 include]# zabbix_get -s 172.25.2.2 -p 10050 -k 'nginx.request'
29
[root@server1 include]# zabbix_get -s 172.25.2.2 -p 10050 -k 'nginx.accept'
30
[root@server1 include]# zabbix_get -s 172.25.2.2 -p 10050 -k 'nginx.request'
31
[root@server1 include]# zabbix_get -s 172.25.2.2 -p 10050 -k 'nginx.accept'
32

添加监控项(item)

主机--->监控项--->添加监控项--->

主机--->图形--->在nginx_active图形展示的监控项中添加监控项目

(4)使用默认的mysql模版!

模板是可以方便地应用于多个主机的一组实体

实体包括:items(监控项)、triggers(触发器),graphs(图形)、applications(应用)、screens (聚合图形(自Zabbix 2.0起))、low-level discovery rules (自动发现规则 (自Zabbix 2.0起))、web scenarios (web场景 (自Zabbix 2.0起))。

默认导入的mysql模版

 MySQL bandwidth900200正常
 MySQL operations900200正常
     
  
    应用集 1   监控项 14(太少)  触发器 1  图形 2  聚合图形 1
agent端(server2)   /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

说明:官方不可能把所有的监控项都监控上,所以需要第三方的模版

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

# UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive

# HOME家目录默认是没有的

所以

# 说明:下列的目的是agent采集mysql的数据

mkdir /var/lib/zabbix
cd /var/lib/zabbix/
vim .my.cnf   # 必须是隐藏文件

[mysql]
user = zabbix
password = redhat
socket = /var/lib/mysql/mysql.sock

[mysqladmin]
user = zabbix
password = redhat
socket = /var/lib/mysql/mysql.sock # 你的sock在哪就写哪!


systemctl restart zabbix-agent.service  #一定要重启服务!
zabbix_get -s 127.0.0.1 -p 10050 -k 'mysql.ping' # 测试(zabbix-agent-->server1测试)

# 结果:1

zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version  # 测试

# 结果:mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

进一步:给Zabbix_server这台主机添加mysql模版(16个了)!

关于模版:在遇到比较好的,可以保存下来!

(5)导入第三方mysql模版

原因:mysql比较重要,对官方提供的监控项太少(收集的数据不满意),使用第三方的模版

实验前提删除上面创建的mysql的模版

下载percona

rpm -ivh ~/percona-zabbix-templates-1.1.8-1.noarch.rpm

# Scripts are installed to /var/lib/zabbix/percona/scripts(脚本的名字)

# Templates are installed to /var/lib/zabbix/percona/templates(模版的位置)

下一步

cd /var/lib/zabbix/percona/templates
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ # 采集数据(agent指定目录)
cat userparameter_percona_mysql.conf |wc -l # 190个监控项
cd /var/lib/zabbix/percona/scripts/
## 内容说明
# get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php

原理:php-mysql去调用mysql,获取数据,临时存放在/tmp/下,然后shell进行分析!

systemctl restart zabbix-agent.service # 添加了配置文件

ss_get_mysql_stats.php脚本的说明

$mysql_user = 'cactiuser';
$mysql_pass = 'cactiuser';

# 说明:默认与我们的不匹配,可以直接修改,但是官方给我们提供了其它方式的解决方案!
vim  /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf

# 覆盖原来的字段信息!

<?php
$mysql_user = 'root';
$mysql_pass = 'redhat';
vim get_mysql_stats_wrapper.sh

# CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt"

实验目的:看是否生成此临时文件

测试:zabbix-get测试

[root@server1 scripts]# ./get_mysql_stats_wrapper.sh gg

ll /tmp 

-rw-r--r-- 1 root root 1354 Jul  8 22:48 localhost-mysql_cacti_stats.txt

# root的原因是:我们是以root用户主动启动的

# 必须删除,自动启动的时候,默认是zabbix用户写入,如果不删除,则没有写权限或者修改此文件权限是777

# 说明:必须删除,否则后续添加模版,zabbix不能将数据写入,前端页面看不到任何数据!

说明:最好测试一下端口是否开启

导入模版

说明:percona默认提供了了一份模版,但是不能用

zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

这里找了另外一个:zbx_percona_mysql_template.xml

配置-->模版--->导入模版(注意是在真机导入)

注意事项:聚合图形对应两个必须选上!

下一步:给对应的监控主机添加模版

特点:向agent注册,通过脚本的方式进行数据的收集!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值