企业运维实战--Zabbix监控之结合nginx、mysql、java应用、proxy分布式、睿象云报警、API批量操作、替换mysql为tidb数据库

一.zabbix server的nginx监控

nginx部署

在server5上进行:

tar zxf nginx-1.20.1.tar.gz
cd nginx-1.20.1 
yum install gcc pcre-devel opensll-devel -y
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
make
make install

完成之后,修改配置文件

cd /usr/local/nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin
vim /usr/local/nginx/conf/nginx.conf

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

在这里插入图片描述

启动服务

nginx或nginx -s reload
curl http://127.0.0.1/status

因为配置文件写了,只允许本机,其他机子被拒绝 如下:
在这里插入图片描述在这里插入图片描述

获取信息

我们先在shell中测试一次,抓取是否成果!

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

    1

接下来,编写一个nginx脚本,通过agent获取信息!

cd /etc/zabbix/zabbix_agentd.d/
cp userparameter_mysql.conf userparameter_nginx.conf

把刚才在shell测试的抓取指令写进去:
vim userparameter_nginx.conf

在这里插入图片描述

完成之后,重启agent

systemctl restart zabbix-agent.service 

接下来在server7上操作 防止出现乱码而找到相应的字体:
我们需要一个模板simkai.ttf

cd /usr/share/zabbix/fonts/
get simkai.ttf
rm -fr graphfont.ttf
ln -s simkai.ttf graphfont.ttf

ll graphfont.ttf

在这里插入图片描述

安装zabbix-get 并测试

yum install -y zabbix-get
zabbix_get -s 172.25.76.5 -p 10050 -k "nginx.active"

在这里插入图片描述

接下来需要图形化添加监控
网页访问172.25.76.7/zabbix
先点击server5
在这里插入图片描述

点击右上角的创建监控:

在这里插入图片描述

注意键值必须和刚才指令get到的保持一致!

解析来创建图形:
在这里插入图片描述

可以选择图形类别
在这里插入图片描述

在这里插入图片描述

创建完成,点击更新,查看图形结果
当出现数值时表明图形添加成功。
在这里插入图片描述

添加更多nginx监控项:

curl -s http://localhost/status | awk NR==3 | awk '{print $1}'
curl -s http://localhost/status | awk NR==3 | awk '{print $2}'
curl -s http://localhost/status | awk NR==3 | awk '{print $3}'

在这里插入图片描述

添加到之前的配置文件里面

vim userparameter_nginx.conf
	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.handle,curl -s http://localhost/status | awk NR==3 | awk '{print $2}'
UserParameter=nginx.request,curl -s http://localhost/status | awk NR==3 | awk '{print $3}'

重启agent端服务读取脚本

systemctl restart zabbix-agent.service

我们在server7验证一下配置是否成功 能输出数字,不报错即可

zabbix_get -s 172.25.76.5 -p 10050 -k "nginx.accept"
37
zabbix_get -s 172.25.76.5 -p 10050 -k "nginx.handle"
38
zabbix_get -s 172.25.76.5 -p 10050 -k "nginx.request"
39

web界面手动添加监控项,然后添加到图形中。
将刚才的生成的三个键置名称添加进去
分别添加三个监控项nginx_accept,nginx_handle,nginx_request
方法和刚才的active一样

然后图形nginx_status添加监控项点击添加:
在这里插入图片描述

选中
完成之后,预览一下图形
在这里插入图片描述

二.Zabbix监控添加mysql

因为之前在server7搭建了mysql,为了节省资源,我们直接使用server7
agent可以通过mysql的密码认证,在zabbix下建立隐藏文件,说明具体命令执行的用户、密码、socket

mkdir  /var/lib/zabbix
cd /var/lib/zabbix/
vim .my.cnf
[mysql]
user=root
password=westos
socket=/var/lib/mysql/mysql.sock

[mysqladmin]
user=root
password=westos
socket=/var/lib/mysql/mysql.sock

mysqladmin password 	westos
systemctl restart zabbix-agent.service

添加模板

在网页进行操作:
在这里插入图片描述

手动测试
只有有返回值说明就OK了
在这里插入图片描述

但是由于自带的mysq模板监控项太少了,所以我们需要手动添加模板

倒入外部模板

删掉刚才添加的mysql模板
回到主机执行以下命令

rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
cd /var/lib/zabbix/percona/templates/
cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
systemctl restart zabbix-agent.service
cd ..
cd scripts/
vim ss_get_mysql_stats.php 
	$mysql_user = 'root';
	$mysql_pass = 'westos';
	$mysql_port = 3306;
	$mysql_socket = NULL;
	$mysql_flags = 0;
	$mysql_ssl  = FALSE;   # Whether to use SSL to connect to MySQL.
	$mysql_ssl_key  = '/etc/pki/tls/certs/mysql/client-key.pem';
	$mysql_ssl_cert = '/etc/pki/tls/certs/mysql/client-cert.pem';
	$mysql_ssl_ca   = '/etc/pki/tls/certs/mysql/ca-cert.pem';
	$mysql_connection_timeout = 5;

ln -s /opt/rh/rh-php72/root/usr/bin/php /usr/bin/php #创建软链接 


在这里插入图片描述注意:
大家可以通过 which php 查看是否输出 /usr/bin/php 如果是这个 则忽略此步骤
因为/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
这里的脚本会读取这个php路径但 我们的主机后来下载的php链接可能不指向这个路径 所以需要手动创建软链接

重启服务:

systemctl restart zabbix-agent

手动测试如下:

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
zabbix_get -s 127.0.0.1 -p 10050 -k "MySQL.Key-read-requests"

在这里插入图片描述

注意:
手动测试之后会生成一个txt文件,这个文件生成的默认权限是root,因为访问的时候是用zabbix用户访问的所以需要权限是zabbix的,所以需要删除调手动测试生成的文件

cd /tmp/
ls
cat localhost-mysql_cacti_stats.txt
rm -fr localhost-mysql_cacti_stats.txt

在这里插入图片描述

现在导入外部模板。模板是我在网上下载好的,所以直接导入
把之前的模板取消链接并清理掉

点击导入:
在这里插入图片描述

在这里插入图片描述

导入文件,然后把复合图形打钩
把模板下载到真机上即可,直接选择
然后点击导入

接着选择zabbix server导入模板
选择zabbix server
在这里插入图片描述

最后点击更新

完成之后,发现zabbix server的监控项变多了
在这里插入图片描述

注意
这时候,点击触发器,需要禁用一个触发器
往下寻找,如下图,点击已启用,变为不启用
在这里插入图片描述

完成之后,进到tmp之下,自动生成了前面删掉的文件,而且用文件所属权是zabbix
在这里插入图片描述

可以看图形的监控如下:
如果没有数据,可以等待一会再看

在这里插入图片描述

三.zabbix server 的tomcat+jave 监控

我们在server7上搭建tomcat java 服务

yum install java-1.8.0-openjdk.x86_64 -y  
systemctl enable --now zabbix-java-gateway
cd /etc/zabbix
vim zabbix_server.conf

	JavaGateway=172.25.76.7 #设定java监听网关指向zabbix-server主机
	StartJavaPollers=5 # Java轮询器

systemctl restart zabbix-server.service 
netstat -antlp| grep :10052

在这里插入图片描述

在server6操作如下:

tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-8.5.24/ tomcat
ls
cd tomcat/bin
vim catalina.sh     ##创建8888端口

CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888
  -Dcom.sun.management.jmxremote.ssl=false
  -Dcom.sun.management.jmxremote.authenticate=false'

yum install -y java
./startup.sh #开启脚本
netstat -antlp|grep 8888

点击server6,选择模板
将java加入模板
在这里插入图片描述

将JMX端口写入:
在这里插入图片描述

然后更新

查看监控图形,出现数据
在这里插入图片描述

四.Zabbix-agent主动模式 (全克隆) (5.0已可以直接添加active模板)

在server5上操作,

vim /etc/zabbix/zabbix_agentd.conf 
 StartAgents=3

systemctl restart zabbix-agent.service

选择全克隆
在这里插入图片描述在后面加 -Active后选择添加
在这里插入图片描述
点击 新添加的模版 殿监控项后全选
在这里插入图片描述选择批量更新
在这里插入图片描述监控项内的 类型选择主动式后 更新
在这里插入图片描述添加模板
在这里插入图片描述

五.Zabbix + proxy分布式

准备一台虚拟机server4,安装zabbix+proxy安装包,配置zabbix+proxy分布式!

yum list zabbix-*
yum install -y zabbix-proxy-mysql.x86_64

修改配置文件

vim /etc/zabbix/zabbix_proxy.conf
Server=172.25.76.7 #分布式服务位于zabbix-server端
ServerPort=10051 #默认端口为10051
Hostname=proxy #主机名为proxy,需要与添加的proxy名保持一致,并且所有zabbix的服务机都需要做解析
DBHost=172.25.76.7 #数据库位置
DBName=zabbix_proxy #数据库中的库名称
DBUser=zabbix #访问数据库的身份
DBPassword=westos #访问数据库的密码
JavaGateway=172.25.76.7 #java服务监听端口指向zabbix-server端
StartJavaPollers=5 #Java轮询器为5,实际设置根据需求

将生成的数据库信息传给数据库位置server7中

cd /usr/share/doc/zabbix-proxy-mysql-4.0.36/
scp schema.sql.gz server7:

接着将server4的主机名改为proxy

hostnamectl set-hostname proxy

在server4567的本地解析都把server4解析proxy如下图:
在这里插入图片描述

接着在server7上打开数据库
创建mysql数据库zabbix_proxy,并将库的所有权利给zabbix用户,授权后刷新

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

将schema.sql.gz 文件解压后导入 zabbix_proxy 库中

zcat schema.sql.gz | mysql -pwestos zabbix_proxy

开启server4的服务

systemctl start zabbix-proxy.service

查看服务进程是否开启

ps ax

在这里插入图片描述

测试web创建agent代理程序
在这里插入图片描述

输入代理名称,代理地址,点添加

看一下日志:server7,server4

cat /var/log/zabbix/zabbix_proxy.log

在这里插入图片描述

看到server4日志显示:成功接受server1的信息

然后再网页上点击主机server6
往下拖,选择proxy代理
在这里插入图片描述

点击更新
在这里插入图片描述

将server6的服务指向proxy
原理:
通过proxy连接server,agent(6)----> proxy(4) ----> server(7)

server6:

vim /etc/zabbix/zabbix_agentd.conf
Server=172.25.76.4
ServerActive=172.25.76.4

systemctl restart zabbix-agent.service

接着来到服务器端查看一下日志
server4显示

cat /var/log/zabbix/zabbix_proxy.log 

设定server6中的java导入proxy后日志变化
在这里插入图片描述

server7端查看日志显示不能找到
在这里插入图片描述

若是遇到报错,怎么办?
刷新zabbix-server 数据修改缓存

server7:

zabbix_server -R config_cache_reload

可以把server6也重启一下服务agent
server6通过server4的proxy成功连接到zabbix-server端,并且所有服务恢复启用。
最后等待一会,web界面两个都亮了就OK
在这里插入图片描述

六.Zabbix+睿象云报警

需要用到三台虚拟机 server7为zabbix-server主机,server67为zabbix-agent主机。且已经连接完成。那么需要把刚才的代理去掉

首先需要server1能够上网
在真机开启路由策略

iptables -t nat -I POSTROUTING -s 172.25.0.0/24 -j MASQUERADE

打开浏览器,进入睿象云,先注册账号,绑定邮箱(一定要绑定)CA - >添加集成---->监控工具
在这里插入图片描述
生成了Appkey

接下来需要我们在server7上操作:

注:一定要解压在这个目录下
进入报警文件读取目录,解压云报警插件,进入解压目录

cd /usr/lib/zabbix/alertscripts
tar zxf ca_zabbix_release-4.0.0.tar.gz

cd cloudalert/bin/
./install.sh ****************(自己生成的key)

填入您新建应用时生成的appkey
在安装过程中根据安装提示,输入zabbix管理/监控/web登陆地址、管理员用户名、密码。
当显示安装成功,就说明已经配置完成
在这里插入图片描述

然后到web上的zabbix把之前的报警媒介禁用
在这里插入图片描述

然后把动作打开:选择触发器
在这里插入图片描述

到睿象云新建通知策略

选择如下,通知人选择自己,若是没有,邮箱没有绑定
在这里插入图片描述设置后出现:
在这里插入图片描述
在这里禁用一个触发器
在这里插入图片描述

接着在server5开始测试:

systemctl stop zabbix-agent.service

发现出现了报警而且发送到了睿象云和短信
在这里插入图片描述在这里插入图片描述

当认领了告警之后,会在睿象云提示处理中
在这里插入图片描述

重启服务server2 agent

systemctl restart zabbix-agent.service

在zabbix上查看问题端口状态显示 已解决

睿象云也显示解决
在这里插入图片描述

七.使用API

官方文档:https://www.zabbix.com/documentation/4.0/zh/manual/api
介绍

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
创建新的应用程序以使用Zabbix;
将Zabbix与第三方软件集成;
自动执行常规任务。

大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

获取身份验证

在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。让我们假设你想要以标准Zabbix Admin用户身份登录。然后,你的JSON请求将如下所示:

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

参数的意义

jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现的JSON-RPC版本是2.0;
method - 被调用的API方法名;
params - 将被传递给API方法的参数;
id - 请求的任意标识符;
auth -用户认证令牌; 因为我们还没有一个,它的设置null。
如果你正确提供了凭据,API返回的响应将包含用户身份验证令牌:

检索主机

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

一定要使用刚才获得的身份验证
在这里插入图片描述

sh zabbix.api执行脚本
在这里插入图片描述

删除主机

object host.delete(array hosts)
(array) 要删除的主机的ID.

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

hostid 和前面查出来的保持一致
在这里插入图片描述

执行脚本
在这里插入图片描述

然后观察结果,删除成功
在这里插入图片描述

创建主机

需要把动作里的,自动注册禁用,不然执行脚本报错也会成功创建server3
对象 host.create(对象/数组 hosts)

curl -s -XPOST http://172.25.76.7/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server6",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.76.6",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"
            }
        ],
        "templates": [
            {
                "templateid": "10001"
            }
        ]
    },
    "auth": "a18ea5b5518b5b13bff6bbd7ae39b3a8",
    "id": 1
}' | python -m json.tool

组和templateid查询方法:
在上面的url里
在这里插入图片描述

八、Tidb+Zabbix的部署

在之前的数据库所在server7上进行替换

tar zxf tidb-latest-linux-amd64.tar.gz
 cd tidb-latest-linux-amd64
/bin/pd-server --name=pd1 --data-dir=pd1 --client-urls="http://172.25.76.7:2379" --peer-urls="http://172.25.76.7:2380" --initial-cluster="pd1=http://172.25.76.7:2380"

   netstat -antlp | grep 2379 #查看端口
   netstat -antlp | grep 2380

部署agent

 ./bin/tikv-server --pd="172.25.76.7:2379" --addr="172.25.76.7:20160" --data-dir=tikv1
 #开启zabbix及tidb
./bin/tidb-server 
ps ax | grep tidb 
netstat -antlp | grep 4000

因为在运行所以用ctrl+z打入后台

数据库连接tidb

从tidb的4000端口连接:

mysql -p 4000 -uroot -pwestos

MySQL [(none)]> create database zabbix character set utf8 collate utf8_bin;  ##创建数据库
MySQL [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'westos';
Query OK, 1 row affected (0.29 sec)

MySQL [(none)]> grant all privileges on *.* to 'zabbix'@'%';  ##用户授权
Query OK, 0 rows affected (0.00 sec)
vim /etc/zabbix/zabbix_server.conf
DBPort=4000

cd /etc/zabbix/web/
vim zabbix.conf.php
	$DB['TYPE']		='MYSQL';
	$DB['SERVER']	='LOCALHOST';
	$DB['PORT']		='4000';
	$DB['DATABASE']	='zabbix';
	$DB['USER']		='zabbix';
	$DB['PASSWORD']	='westos';
 systemctl restart zabbix-server
 systemctl restart zabbix-agent

web访问查看结果就可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lll_cf

喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值