(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至少包含四种方法: get
, create
, update
和 delete
,分别是检索,创建,更新和删除数据!
说明:使用远程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 bandwidth | 900 | 200 | 正常 | |
MySQL operations | 900 | 200 | 正常 |
应用集 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的模版
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注册,通过脚本的方式进行数据的收集!