文章目录
目前使用的监控程序种类有很多,zabbix、negios、cacti,我们这里使用zabbix来介绍配置监控的方法。
zabbix下载
访问官网:https://www.zabbix.com/cn/,zabbix是有中文官网的,所以可以直接去中文文档
需要下载的软件包:https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/,这里有zabbix配置安装需要的各个组件
安装
安装zabbix时,我们除了它本身的组件以外,还需要安装php对它的支持插件
[root@server1 4.4]# yum -y install zabbix-server-mysql-4.4.1-1.el7.x86_64.rpm \
> zabbix-web-4.4.1-1.el7.noarch.rpm\
> zabbix-web-mysql-4.4.1-1.el7.noarch.rpm\
> zabbix-agent-4.4.1-1.el7.x86_64.rpm\
> fping-3.10-1.el7.x86_64.rpm\
> php-5.4.16-46.el7.x86_64.rpm\
> php-bcmath-5.4.16-46.el7.x86_64.rpm\
> php-cli-5.4.16-46.el7.x86_64.rpm\
> php-common-5.4.16-46.el7.x86_64.rpm\
> php-gd-5.4.16-46.el7.x86_64.rpm\
> php-ldap-5.4.16-46.el7.x86_64.rpm\
> php-mbstring-5.4.16-46.el7.x86_64.rpm\
> php-mysql-5.4.16-46.el7.x86_64.rpm\
> php-pdo-5.4.16-46.el7.x86_64.rpm\
> php-xml-5.4.16-46.el7.x86_64.rpm\
#需要安装数据库配合测试
[root@server1 4.4]# yum -y install mariadb-server
#安装后进行安全初始化
配置启用zbbix
安装zabbix组件和数据库之后
我们按照官网的方式配置数据库
第一步
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #创建库使用utf8
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user zabbix@localhost identified by 'redhat'; #建立用户
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost; #授权用户对zabbix库的特权
Query OK, 0 rows affected (0.00 sec)
第二步
[root@server1 4.4]# zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:
第三步
编辑配置文件 /etc/zabbix/zabbix_server.conf ,写入密码
第四步
配置时区
编辑配置文件 /etc/httpd/conf.d/zabbix.conf,
启动服务
[root@server1 4.4]# systemctl start zabbix-server zabbix-agent httpd
第五步
使用浏览器访问zabbix 配置
在Configure DB connection 这里只需要把之前设置的zabbix密码输入即可点下一步
下来到这里输入一个name,自己设置
后面直接下一步然后点完成,就完成配置了
接下来登录zabbix
可以点击右上角小人里设置为中文
可以看到配置里是有一台显示的主机,就是本机,因为我们安装了agent程序所以才会加入到集群里来
zabbix添加监控主机
使用另一台主机server2,只安装agent,需要在server1里配置地址解析
[root@server2 ~]# yum install -y zabbix-agent-4.4.1-1.el7.x86_64.rpm
编辑配置文件 /
配置服务端,就是上面安装zabbix 的主机ip
更改主机名,改为自己主机的主机名
保存退出,启动zabbix-agent
在server1里添加监控主机,右上角点击创建主机
这样就完成了添加主机的监控配置
注意: 在zabbix-server主机上要关闭火墙,并且将selinux设为警告模式,否则server的启动会出错
zabbix里的监控模板有很多可以去下载其他人写的来使用,如果自己可以写也可以自己去写模板
zabbix 自动发现添加监控主机
对于少量的几台主机,我们可以去手动添加到监控里,但是对于几十上百台主机这样的操作就显得十分消耗时间了。
可以使用自动发现功能去批量添加符合规则的主机群
先去删除我们之前添加的server2主机监控,然后再去配置自动发现
第一步首先我们需要配置动作
第二步 点击名称Auto discovery. Linux servers进入配置
第三步 配置自动发现
完成配置后可以重启zabbix-server,等待一段时间刷新页面就可以看到server2被添加进来了
zabbix自动注册
自动注册是agent主机主动发起请求去添加到zabbix监控里。
关闭自动发现,和动作里的自动发现
我们使用另一台server3测试,在server3上安装agent,需要在server1里配置地址解析
同样去修改配置,开启agent服务
在zabbix页面上动作里选择自动注册,然后创建动作
设置名称,添加条件,因为我的测试agent都是server几名称,所以添加筛选名称为server的
在操作里我们需要添加操作细节,添加主机,添加到主机群组:Linux servers,链接到模板: Template OS Linux by Zabbix agent,这些选择都是和server2的操作配置是一样的,然后选择下面的添加
然后重启server1的zabbix-server和server3上的zabbix-agent,
刷新页面过一会就可以看到server3也添加进来了,并且可用性zabbix也是可用的
API
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
- 创建新的应用程序以使用Zabbix;
- 将Zabbix与第三方软件集成;
- 自动执行常规任务。
测试方式,根据官万文档来操作
在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。编写一个脚本来获取身份令牌
[root@server1 4.4]# cat zabbix-api
curl -s -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.254.1/zabbix/api_jsonrpc.php | python -m json.tool #后面使用json格式显示,注意要有python
[root@server1 4.4]# chmod +x zabbix-api #添加可执行权限
[root@server1 4.4]# ./zabbix-api
{
"id": 1,
"jsonrpc": "2.0",
"result": "9608d4c61c747f58dade26804373ea05" #身份令牌
}
身份令牌每次执行脚本去获取都是会改变的
获取到之后检索主机
编写脚本
[root@server1 4.4]# cat zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "00b61d9f92c70e3be34150e3fe28c375" #这里的id号是刚才获取到的身份令牌
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
然后执行脚本,既可以看到我们配置zabbxi的主机信息
使用API配置删除主机
配置脚本
[root@server1 4.4]# cat zabbix-api
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": [
"10306" #这里是需要删除的主机的id号
],
"id": 2,
"auth": "00b61d9f92c70e3be34150e3fe28c375" #身份令牌不变
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
主机的id号怎么看呢?在监控页面点击主机名,在地址里就可以看到hostid=10306,这是我server3的id
执行之后server3就删除消失了
使用API配置创建主机
curl -s -XPOST -H "Content-Type: application/json-rpc" -d'
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "server3", #添加的主机名
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "172.25.254.3", #需要添加的主机ip
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2" #群组id
}
],
"templates": [
{
"templateid": "10001" #模板id
}
]
},
"id": 2,
"auth": "00b61d9f92c70e3be34150e3fe28c375"
}' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
groupid可以在主机群组里点击组名去查看,在地址栏最后显示
templateid同样方法在模板里找模板名称点进去在地址栏中查看
写完脚本去执行
[root@server1 4.4]# ./zabbix-api
{
"id": 2,
"jsonrpc": "2.0",
"result": {
"hostids": [
"10309"
]
}
}
刷新页面就可以看到server3添加进来了
配置zabbix监控
自定义监控nginx
给server3添加监控项,添加nginx监控
首先在server3中安装nginx
[root@server3 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
#编译时需要添加这个模块支持状态查询
安装好后,在 /usr/local/nginx/conf/nginx.conf 里写入status的location
location /status {
stub_status on; #开启功能
access_log off; #关闭它的日志
allow 127.0.0.1; #只允许本机访问
deny all; #拒绝其他所有
}
写完配置启动nginx,测试访问正常
[root@server3 nginx]# curl http://127.0.0.1/status
Active connections: 1
server accepts handled requests
2 2 2
Reading: 0 Writing: 1 Waiting: 0
/etc/zabbix/zabbix_agentd.d/ 目录下,复制userparameter_mysql.conf 为userparameter_nginx.conf
[root@server3 nginx]# cd /etc/zabbix/zabbix_agentd.d/
[root@server3 zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@server3 zabbix_agentd.d]# cp userparameter_mysql.conf userparameter_nginx.conf
通过这个配置文件,我们可以自行进行为nginx监控的更改,只写入下面这一条配置
保存,重启zabbix-agent
在server1主机上则需要安装: zabbix-get-4.4.1-1.el7.x86_64.rpm
安装完成后就可以使用zabbix_get 命令
[root@server1 4.4]# zabbix_get -s 172.25.254.3 -p 10050 -k "nginx.active"
1
#获得的1这个值就是在server3上curl http://127.0.0.1/status看到的Active connections: 1
测试没有问题,我们就可以去页面上配置监控,
在主机里点击server3,进入选择监控项,然后点击右上角的创建监控项
在创建监控项里,名称自定义,键值这里的写的就是在server3刚才写的配置 UserParameter= 后面写的键值,更新间隔改为20s
然后配置图形,在图形里右上角点击创建图形
编写名称,在下面的监控项里添加刚才配置的键值,最后选择添加
在图形的预览里可以看到数值的变化,但是下方的显示并不正常,需要去更改字体,因为我们显示的是中文,如果英文的话就不会有问题了
在网上下载 simkai.ttf 字体可以支持中文,将它放入 /usr/share/zabbix/assets/fonts/
然后去编辑配置,执行新的字体
[root@server1 rpms]# cd /usr/share/zabbix/include/
[root@server1 include]# vim defines.inc.php
67 define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
111 define('ZBX_FONT_NAME', 'simkai');
再去页面更新,就可以看到中文信息了
这样我们就完成了自定义监控项配置
像这样我们还可以去获取server3上nginx状态的其他信息,获取状态信息里的第三个91是requests,请求是一个不断变化的数字
[root@server3 zabbix_agentd.d]# curl 127.0.0.1/status
Active connections: 1
server accepts handled requests
91 91 91
Reading: 0 Writing: 1 Waiting: 0
去server3里编辑配置文件
[root@server3 nginx]# vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
添加一条键值配置
UserParameter=nginx.requests,curl -s http://127.0.0.1/status | awk NR==3 | awk '{print $3}'
重启zabbix-agent,然后和上面的配置一样,创建监控项和图形
图形设置里我们可以把在刚才的nginx_acctive_status 再里添加一个监控项 ,这样我们就制作里一个复合性监控,并且下面有标识什么颜色的线是什么监控项
模板监控
监控server1里的mysql
先去编写配置文件
[root@server1 rpms]# cat /usr/lib/zabbix/.my.cnf
[mysql]
host=loaclhost
user=root
password=redhat
socket=/var/lob/mysql/mysql.sock
[mysqladmin]
host=loaclhost
user=root
password=redhat
socket=/var/lob/mysql/mysql.sock
[root@server1 rpms]# systemctl restart zabbix-agent.service
重启zabbix-agent
这样去添加mysql的监控模板就可以了,但是zabbix里自带的mysql监控它的项比较少,不适合我们企业工作中的监控需求。所以我们需要使用 percona 来优化监控。可以去下载 percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@server1 rpms]# yum install -y percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@server1 rpms]# cat /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf | wc -l
190 #可以看到它一共用190个监控项
[root@server1 rpms]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
它的执行脚本在:/var/lib/zabbix/percona/scripts/
我们需要去给ss_get_mysql_stats.php 编辑配置文件
[root@server1 rpms]# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
<?php
$mysql_user='root';
$mysql_pass='redhat';
[root@server1 rpms]# systemctl restart zabbix-agent.service
这里我在网上下载了一个模板来使用zbx_percona_mysql_template.xml
在页面里模板选项右上角导入
给Zabbix server 添加Percona模板
可以去图形里查看Percona监控项的预览图形
这就是使用第三方模板去实行监控的方式