在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一样
因为之前在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
但是由于自带的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
最后点击更新
注意
这时候,点击触发器,需要禁用一个触发器
往下寻找,如下图,点击已启用,变为不启用
完成之后,进到tmp之下,自动生成了前面删掉的文件,而且用文件所属权是zabbix
可以看图形的监控如下:
如果没有数据,可以等待一会再看
我们在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
然后更新
在server5上操作,
vim /etc/zabbix/zabbix_agentd.conf
StartAgents=3
systemctl restart zabbix-agent.service
选择全克隆
在后面加 -Active后选择添加
点击 新添加的模版 殿监控项后全选
选择批量更新
监控项内的 类型选择主动式后 更新
添加模板
准备一台虚拟机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
输入代理名称,代理地址,点添加
看一下日志: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
server7端查看日志显示不能找到
若是遇到报错,怎么办?
刷新zabbix-server 数据修改缓存
server7:
zabbix_server -R config_cache_reload
可以把server6也重启一下服务agent
server6通过server4的proxy成功连接到zabbix-server端,并且所有服务恢复启用。
最后等待一会,web界面两个都亮了就OK
需要用到三台虚拟机 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上查看问题端口状态显示 已解决
官方文档: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
删除主机
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
创建主机
需要把动作里的,自动注册禁用,不然执行脚本报错也会成功创建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
在之前的数据库所在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
./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的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访问查看结果就可以