先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
在server2上我们安装angent
我们直接将yum源传给server2
[root@server1 yum.repos.d]# scp zabbix.repo server2:/etc/yum.repos.d/
[root@server2 ~]# yum install zabbix-agent.x86_64 -y
[root@server2 ~]# systemctl enable --now zabbix-agent.service
2.修改配置文件
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
[root@server2 ~]# systemctl restart zabbix-agent.service
共修改3个位置,如下图
查询以下端口
[root@server2 ~]# netstat -antlp
3.手动添加主机
当我们查看日志时显示not found,所以我们需要手动在zabbix web 页面添加
选择模板信息
当出现下图这种状态时,查看图形有数据信息说明添加成功,
4 自动添加主机
现在我们再配置一台Agent serve3 ,配置方法同server2相同
这里我们直接到添加环节
(一)自动发现
动作–>自动发现–>启动
然后我们去主机那查看,我们可以看到server3已经在主机群组中了
(二)自动注册
我们为了节省资源,就直接将刚才添加的server3删除掉,然后将自动发现的规则停用
现在测试自动注册
动作–>自动注册–>动作主机名–>操作–>与添加到主机群组添加与模块关联
我们去主机那查看是否添加成功,如果没有出现,重启以下服务即可
四、使用API
1.API介绍
Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
创建新的应用程序以使用Zabbix;
将Zabbix与第三方软件集成;
自动执行常规任务。
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
该API包含一组独立的方法;
客户端和API之间的请求和响应使用JSON格式进行编码。
2.结构
Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
3.执行请求
当完成了前端的安装配置后,你就可以使用远程HTTP请求来调用API。为此,需要向 api_jsonrpc.php 位于前端目录中的文件发送HTTP POST请求。例如,如果你的Zabbix前端安装在 http://company.com/zabbix, 那么用HTTP请求来调用 apiinfo.version 方法就如下面这样:
在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。让我们假设你想要以标准Zabbix Admin用户身份登录。然后,你的JSON请求将如下所示:
[root@server1 ~]# curl -XPOST http://172.25.1.1/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返回的响应将包含用户身份验证令牌:
4.检索主机
[root@server1 ~]# vim zabbix.api
curl -XPOST http://172.25.1.1/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":"09dc3830f5e6780328c9f4a6fc60c503"
}' | python -m json.tool
5. 删除主机
object host.delete(array hosts)
该方法允许删除主机
参数
(array) 要删除的主机的ID.
curl -XPOST http://172.25.1.1/zabbix/api_jsonrpc.php -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.delete",
"params": [
"10275"
],
"id": 1,
"auth":"09dc3830f5e6780328c9f4a6fc60c503"
}' | python -m json.tool
快速查询hostid ,直接点开主机,在网址中就可以找到
返回值,响应值
在WEB页面我们可以看到server3已经成功删除
6.创建主机
描述
对象 host.create(对象/数组 hosts)
这个方法可以用来创建主机.
curl -s -XPOST http://172.25.3.1/zabbix/api_jsonrpc.php -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.1.3",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"auth": "09dc3830f5e6780328c9f4a6fc60c503",
"id": 1
}' | python -m json.tool
groupid查询方法
templateid查询方法:
返回直
在web页面查看server3是否添加成功
五、zabbix server 的nginx监控
1.搭建nginx
链接: nginx包 提取码: vuck
[root@server3 ~]# tar nginx-1.18.0.tar.gz
[root@server3 ~]# tar zxf nginx-1.18.0.tar.gz
[root@server3 nginx-1.18.0]# yum install gcc pcre-devel opensll-devel -y
[root@server3 nginx-1.18.0]# vim auto/cc/gcc
将debug下面注释掉,最小安装,节省资源
[root@server3 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio
[root@server3 nginx-1.18.0]# make
[root@server3 nginx-1.18.0]# make install
[root@server3 sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
[root@server3 sbin]# vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
为了测试,加这个模块
[root@server3 nginx]# nginx
[root@server3 nginx]# nginx -s reload
测试:
[root@server3 nginx]# curl http://127.0.0.1/status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
也可以在其他主机进行压测
[root@Sun_s ~]# ab -c10 -n 1000 http://172.25.1.3/index.html
2.添加nginx的监控配置文件
[root@server3 nginx]# cd /etc/zabbix/zabbix_agentd.d
[root@server3 zabbix_agentd.d]# vim userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://127.0.0.1/status | grep Active | awk '{print $3}'
UserParameter=nginx.accept,curl -s http://127.0.0.1/status | awk 'NR==3{print $1}'
UserParameter=nginx.handled,curl -s http://127.0.0.1/status | awk 'NR==3{print $2}'
UserParameter=nginx.request,curl -s http://127.0.0.1/status | awk 'NR==3{print $3}'
[root@server3 zabbix_agentd.d]# systemctl restart zabbix-agent.service
在server1里手动测试以下
[root@server1 ~]# yum install zabbix-get.x86_64 -y
[root@server1 ~]# zabbix_get -s 172.25.1.3 -p 10050 -k "nginx.active"
1
[root@server1 ~]# zabbix_get -s 172.25.1.3 -p 10050 -k "nginx.accept"
1008
[root@server1 ~]# zabbix_get -s 172.25.1.3 -p 10050 -k "nginx.handled"
1009
[root@server1 ~]# zabbix_get -s 172.25.1.3 -p 10050 -k "nginx.request"
1010
3.添加监控项
加入刚才监控配置文件中写入的几个键值:nginx.active nginx.accept nginx.handled nginx.request
把刚才添加好的监控项添加到图形里
创建图形
添加监控项
查看图形,当显示出来数据就说明已经配置成功了,刚添加上可能需要等一会数据才能出来
六、zabbix server的mysql监控
1.配置mysql监控文件
由于之前server1有仓库,为了节省资源,我们直接使用server1
只要让agent可以通过mysql的密码认证,在zabbix下建立隐藏文件,说明具体命令执行的用户、密码、socket:
[root@server1 ~]# mkdir /var/lib/zabbix
[root@server1 ~]# cd /var/lib/zabbix/
注意这里是隐藏文件
[root@server1 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
[root@server1 zabbix]# mysqladmin password westos
[root@server1 zabbix]# systemctl restart zabbix-agent.service
2.添加模板
手动测试
只有有返回值说明就OK了
[root@server1 zabbix]# zabbix_get -s 127.0.01 -p 10050 -k "mysql.ping"
1
查看图形
由于自带的mysq模板监控项太少了,所以我们需要手动添加模板
3.从外部导入模板
- 下载需要的导入工具
- 链接:percona 提取码: bru2
[root@server1 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@server1 ~]# cd /var/lib/zabbix/percona/templates/
[root@server1 templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@server1 templates]# systemctl restart zabbix-agent.service
[root@server1 templates]# cd ..
[root@server1 percona]# cd scripts/
[root@server1 scripts]# vim ss_get_mysql_stats.php
手动测试
[root@server1 scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
1
[root@server1 scripts]# zabbix_get -s 127.0.01 -p 10050 -k "MySQL.Key-read-requests"
1
此处可以取到值就说明配置成功,导入模板即可
注意
此处,如果进行过手动测试,会生成一个txt文件,这个文件生成的默认权限是root,因为访问的时候是用zabbix用户访问的
所以要么把文件删除掉,要么修改其权限。操作如下:
[root@server1 scripts]# cd /tmp/
[root@server1 tmp]# ls
localhost-mysql_cacti_stats.txt
systemd-private-4e1607fdb08c4946b000e3456cedfd42-httpd.service-VKKp6Z
systemd-private-4e1607fdb08c4946b000e3456cedfd42-mariadb.service-dSsMvQ
[root@server1 tmp]# chown zabbix.zabbix localhost-mysql_cacti_stats.txt
localhost-mysql_cacti_stats.txt
将权限改为zabbix,不然数据不会变
- 现在在web页面导入模板
- 这个模板是我在网上下载好的,所以直接导入
- 链接: 模板提取码: wysw
- 如有需要自行提取
在这里我们把之前的模板取消链接并清理掉
我们可以看到添加新模板之后,监控项增加至279个
如果没有看到数据,清等待一会数据就会显示出来。
七、zabbix server 的tomcat+jave 监控
1.在server2上搭建tomcat java 服务
链接:tomcat包 提取码: jqj6
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server2 ~]# cd /usr/local/
[root@server2 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server2 local]# ls
[root@server2 local]# cd tomcat
[root@server2 tomcat]# cd bin/
[root@server2 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'
[root@server2 bin]# yum install java-1.8.0-openjdk.x86_64 -y
[root@server2 bin]# ./startup.sh
[root@server2 bin]# netstat -antlp|grep 8888
tcp6 0 0 :::8888 :::* LISTEN 5607/java
2.server1安装JAVA网关
仅当您要监视JMX应用程序时才需要安装Java网关。Java网关是轻量级的,不需要数据库。
yum install -y zabbix-java-gateway.x86_64 -y
cd /etc/zabbix/
[root@server1 zabbix]# vim /etc/zabbix/zabbix_java_gateway.conf
[root@server1 zabbix]# systemctl enable --now zabbix-java-gateway.service
[root@server1 zabbix]# netstat -antlp| grep :10052
tcp6 0 0 :::10052 :::* LISTEN 1913/java
端口ip
开启10个监控项
在server端开启java 网关相关的配置
[root@server1 zabbix]# vim zabbix_server.conf
[root@server1 zabbix]# systemctl restart zabbix-server.service
等待一会,看是否出现,如果没出现,请仔细核对配置文件信息
查看是否有数据,出现数据配置完成
八、Zabbix-agent主动模式 (全克隆)
在server3上操作这个全克隆
[root@server3 zabbix]# vim zabbix_agentd.conf
[root@server3 zabbix]# systemctl restart zabbix-agent.service
[root@server3 zabbix]# netstat -antlp | grep :10050
这个选项打开之后,是保留了原来被动复制的三个监控项,使得原来的监控项变少
全克隆
点击批量更新
把server3原来的模板删除,添加新克隆的模板
九、proxy安装配置
为了节省资源,我们将刚才的server3删掉,将server3作为proxy
1.proxy 安装
在server3上操作
先将主机名改成proxy,这样方便做实验,注意给其他主机的解析也要加上proxy
2.创建数据库
编辑zabbix_proxy.conf 文件以使用已创建的数据库。例如
[root@proxy ~]# systemctl disable --now zabbix-agent.service
[root@proxy ~]# yum install -y zabbix-proxy-mysql.x86_64
[root@proxy ~]# yum install mariadb-server.x86_64 -y
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
[root@proxy ~]# systemctl enable --now mariadb.service
[root@proxy ~]# mysql
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> create user 'zabbix'@'localhost' identified by 'westos';
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost';
[root@proxy ~]# vim zabbix_proxy.conf
[root@proxy ~]# systemctl restart zabbix-proxy.service
3.导入数据
[root@proxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-4.0.27/
[root@proxy zabbix-proxy-mysql-4.0.27]# zcat schema.sql.gz | mysql -uzabbix -pwestos zabbix_proxy
4. 创建代理
这时我们发现server2的监控都灰了,是因为最开始配置的时候server指向的是server1端,所以需要修改配置文件
[root@server2 bin]# vim /etc/zabbix/zabbix_agentd.conf
将server指向proxy的ip
[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
还有JAVA网关也得指向serve1的ip
server2
proxy
编辑完配置文件记得重启服务
建议使用重启,因为在生产环境中要保证服务的正常运行
[root@server1 zabbix]# zabbix_server -R config_cache_reload
[root@proxy ~]# zabbix_proxy -R config_cache_reload
我们再重新查看状态,已经重新起来了,这就说明已经配置成功
十、zabbix+睿象云
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)
十、zabbix+睿象云
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-BDIgAq0Q-1715901069415)]
[外链图片转存中…(img-ysXQhEBB-1715901069415)]
[外链图片转存中…(img-d1rxq6pi-1715901069415)]
[外链图片转存中…(img-XZfttQPd-1715901069415)]
[外链图片转存中…(img-wiVZ6LeP-1715901069416)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新