【python自动化运维】python调用运维API接口——Zabbix

一、zabbix server部署

1、监控的方式

  • 手工巡检
  • 专业的监控工具

zabbix
IT基础设施设备(网络设备、服务器、存储)

promethus
适用于容器化应用的监控

2、zabbix特性

  • 开源的、跨平台
  • 获取监控数据的方式

zabbix agent
适用于主机、服务器
主动模式、被动模式

SNMP协议 161/udp
适用于网络监控
SNMP v2

IPMI协议
适用于硬件信息(cpu温度、序列号)

JMX协议
适用于java应用

支持自动监控
支持多种报警方式 —— 邮件、微信、电话
支持分布式监控
提供API接口

3、zabbix server安装部署

以下操作仅以centos7系统为例说明

3.1、关闭防火墙、SELinux、时间同步

3.2、配置epel仓库、zabbix仓库

[root@zabbix_server ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@zabbix_server ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/
enabled=1
gpgcheck=0

3.3、安装zabbix 服务端软件

[root@zabbix_server ~]# yum install -y zabbix-server-mysql zabbix-web-mysql  

3.4、安装配置MySQL

[root@zabbix_server ~]# yum install -y mariadb-server 
[root@zabbix_server ~]# systemctl start mariadb
[root@zabbix_server ~]# systemctl enable mariadb
MariaDB [(none)]> create database zabbix charset utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on zabbix.* to 'zabbixuser'@'localhost' identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

3.5、导入zabbix需要的表

[root@zabbix_server zabbix-server-mysql-4.4.10]# pwd
/usr/share/doc/zabbix-server-mysql-4.4.10
[root@zabbix_server zabbix-server-mysql-4.4.10]# zcat create.sql.gz | mysql -uroot zabbix

3.6、编辑zabbix server配置文件,指定数据库连接信息

[root@zabbix_server ~]# vim /etc/zabbix/zabbix_server.conf 
DBHost=localhost
DBName=zabbix
DBUser=zabbixuser
DBPassword=redhat
DBSocket=/var/lib/mysql/mysql.sock
[root@zabbix_server ~]# systemctl start zabbix-server
[root@zabbix_server ~]# systemctl enable zabbix-server

[root@zabbix_server ~]# netstat -antp | grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      7544/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      7544/zabbix_server  

3.7、初始化web管理界面

[root@zabbix_server ~]# grep "date" /etc/httpd/conf.d/zabbix.conf
        php_value date.timezone Asia/Shanghai
[root@zabbix_server ~]# 
[root@zabbix_server ~]# systemctl start httpd
[root@zabbix_server ~]# systemctl enable httpd

访问地址:
http://zabbix服务器/zabbix
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改显示界面为中文
在这里插入图片描述
在这里插入图片描述

4、配置监控本机

4.1、安装zabbix agent

[root@zabbix_server ~]# yum install -y zabbix-agent 

备注:zabbix-agent yum安装成功后会在etc下生成zbbix目录,需要修改zabbix目录下的zabbix_agentd.conf文件,指定zabbix-server服务器的地址。

4.2、编辑zabbix agent配置文件

[root@zabbix_server ~]# vi /etc/zabbix/zabbix_agentd.conf 

Server=192.168.140.10			# 被动模式下,等待哪个server要数据
ServerActive=192.168.140.10	# 主动模式下,主动向哪个server汇报数据
Hostname=Zabbix server		# 被监控端名称,惟一 
[root@zabbix_server ~]# systemctl start zabbix-agent
[root@zabbix_server ~]# systemctl enable zabbix-agent
[root@zabbix_server ~]# netstat -antp | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      19071/zabbix_agentd 

4.3、在web界面修改本机监控接口地址

在这里插入图片描述
在这里插入图片描述

5、解决图形乱码问题

5.1、下载中文楷体simkai.ttf的文件

[root@zabbix_server ~]# wget http://y.downya.com/soft/simkai_downyi.com.zip
[root@zabbix_server ~]# unzip simkai_downyi.com.zip 

5.2、将simkai.ttf拷贝到zabbix存放字体文件的目录

[root@zabbix_server ~]# cp simkai.ttf /usr/share/zabbix/assets/fonts/
[root@zabbix_server ~]# ls /usr/share/zabbix/assets/fonts/
graphfont.ttf  simkai.ttf

5.3、 修改zabbix显示图形的配置文件

[root@zabbix_server ~]# vim /usr/share/zabbix/include/defines.inc.php 
define('ZBX_GRAPH_FONT_NAME',           'simkai'); // font file name
define('ZBX_FONT_NAME', 'simkai');

在这里插入图片描述

6、、服务器监控指标参考

cpu
1、CPU上下文切换/秒 Context Switch CS
2、CPU中断数/秒 Interruput
3、CPU平均负载
4、CPU使用率

  • user 用户进程CPU使用率
  • sys 系统进程CPU使用率
  • idle CPU空闲

内存

  • 剩余内存
  • free + shared + buffer/cache

硬盘

  • 剩余空间
  • 磁盘IO

网卡

  • 流入流量
  • 流出流量
  • 总流量
  • 流入错误流量
  • 流出错误流量

进程

  • 进程总数量
  • 正在运行进程
  • 僵尸进程

用户信息

  • 用户登录数

二、基于zabbix agent获取监控数据

1、监控远程主机

1.1、在被监控端安装zabbix agent

[root@node01 ~]# yum install -y zabbix-agent
[root@node01 ~]# vim /etc/zabbix/zabbix_agentd.conf 

Server=192.168.140.10
ServerActive=192.168.140.10
Hostname=node01.linux.com
[root@node01 ~]# systemctl start zabbix-agent
[root@node01 ~]# systemctl enable zabbix-agent

[root@node01 ~]# netstat -antp | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      6965/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      6965/zabbix_agentd  

1.2、在web界面添加被监控端

在这里插入图片描述
在这里插入图片描述

1.3、链接模板

在这里插入图片描述

1.4、创建图形

在这里插入图片描述
在这里插入图片描述

1.5、创建聚合图形

在这里插入图片描述
在这里插入图片描述

2、基于zabbix agent获取监控数据的三种方式

  • 链接模板

适用于系统自身(cpu、内存、硬盘、网卡)的监控

  • 利用zabbix agent自带的key进行监控
  • 自定义key进行监控

2.1、利用zabbix agent自带的key进行监控

示例1: 监控ens33网卡的流入流量
在这里插入图片描述
在这里插入图片描述

2.2、常用键值

  • 监控网卡流量

net.if.in[if,]

  • ⇒ net.if.in[eth0,errors]
  • ⇒ net.if.in[eth0]

net.if.total[if,]
net.if.out[if,]

  • 监控TCP服务状态

net.tcp.listen[port]

  • ⇒ net.tcp.listen[80]

net.tcp.port[,port]

  • ⇒net.tcp.port[,80]
  • 监控UDP服务状态

net.udp.listen[port]

  • => net.udp.listen[123]
  • 进程数量

proc.num[,,,]

  • ⇒ proc.num[]
  • ⇒ proc.num[redis_server,]
  • ⇒ proc.num[nginx,www]
  • => proc.num[,zomb]
  • 进程所消耗的内存

proc.mem[,,,,]

  • => proc.mem[httpd]
  • 进程所消耗的CPU使用率

proc.cpu.util[,,,,,]

  • => proc.cpu.util[httpd]
  • 磁盘空间

vfs.fs.size[fs,]

  • vfs.fs.size[/webdata, free]
  • vfs.fs.size[/var/lib/mysql, pfree]
  • 内存大小

vm.memory.size[]

  • vm.memory.size[free]
  • vm.memory.size[buffers]
  • vm.memory.size[cached]
  • 文件内容变化

vfs.file.cksum[file]

  • ⇒ vfs.file.cksum[/etc/passwd]

1、分别监控node01主机网卡的流入、流出、总流量及错误的数据包流量, 并创建图形
2、监控node01主机/etc/passwd文件数据变化, 并创建图形
3、在node01上分别安装ftp, httpd, mysql, ntp服务,监控所有服务的状态,并创建图形
4、在node01添加一块2G硬盘,创建200M分区,并挂载到/opt/data目录;监控该分区的剩余空间;
并创建图形
5、分别监控node01主机以apache用户、mysql用户启动的进程数, 并创建图形
6、分别监控node01主机httpd, mysql进程所占用的CPU使用率、及内存
7、监控物理内存剩余量、buffer/cache大小、并创建图形
8、部署MySQL主从复制,监控从服务器IO、SQL线程状态、复制延迟

三、自定义key

  • 在被监控端定义
  • 配置语法

UserParameter=,
UnsafeUserParameters=1

注意: 确保zabbix用户对命令拥有读取、执行权限

3.1、监控MySQL用户数

3.1.1、在被监控端定义key

[root@node01 ~]# vim /etc/zabbix/zabbix_agentd.conf 

UnsafeUserParameters=1
UserParameter=mysql.user.number,mysql -uroot -e "select count(*) from mysql.user" | sed '1d'

[root@node01 ~]# systemctl restart zabbix-agent

3.1.2、在zabbix server测试获取数据

[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k mysql.user.number
6

3.1.3、在web界面创建监控项

在这里插入图片描述
在这里插入图片描述

3.2、监控MySQL连接数

UserParameter=mysql.conn.number,mysql -uroot -e "show processlist" | sed '1d' | wc -l

3.3、定义有参数的键值

UserParameter=memory.size[*], awk '/^$1:/{print $$2}' /proc/meminfo

说明:

  • $1, $2, $3

    依次代表键值中的第1个参数、第2个参数

  • $$2

    转义

[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k memory.size[MemTotal]
995924
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k memory.size[Buffers]
2108
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k memory.size[MemFree]
409852

在这里插入图片描述
在这里插入图片描述

3.4、监控MySQL复制线程状态

[root@node01 ~]# cat /opt/check_mysql_slave.sh 
#!/bin/bash
#

state=$(mysql -uroot -e "show slave status\G" | awk "/$1:/{print \$2}")

if [ $state == "Yes" ]; then
    echo 1
else
    echo 0
fi
UserParameter=mysql.slave[*],bash /opt/check_mysql_slave.sh $1
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k mysql.slave[Slave_IO_Running]
1
[root@zabbix_server ~]# zabbix_get -s 192.168.140.11 -k mysql.slave[Slave_SQL_Running]
1

在这里插入图片描述
MySQL监控指标参考:

1、服务状态 3306
2、数据目录剩余容量、二进制目录容量
3、用户数、连接数
4、IO线程、SQL线程、复制延迟
5、事务数量
6、慢查询数量
7、运行时长
8、Innodb buffer缓冲
9、Innodb Cache

[root@node01 ~]# mysql -uroot -e "status"
--------------
mysql  Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:		1957
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server:			MariaDB
Server version:		5.5.68-MariaDB MariaDB Server
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/var/lib/mysql/mysql.sock
Uptime:			39 min 31 sec

Threads: 1  Questions: 14319  Slow queries: 0  Opens: 22  Flush tables: 2  Open tables: 48  Queries per second avg: 6.039
[root@node01 ~]# mysqladmin extended-status

Com_delete:数据库执行delete的次数
Com_insert:数据库执行insert的次数
Com_select:数据库执行select的次数
Com_update:数据库执行update的次数

Com_commit: 提交的事务的次数
Com_rollback

Threads_created 创建的线程数
Threads_running 正在处理请求的线程数

Subquery_cache_hit //子查询的缓存命中数
Subquery_cache_miss //子查询的缓存丢失数

Qcache_hits //所有查询的缓存命中

Cpu_time //数据库消耗的CPU资源

Bytes_received //网卡接收的数据量
Bytes_sent //网卡发送的数据量

Connections //处理的连接数

nginx、redis监控指标

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到Python自动化运维学习路线时,以下是一些关键的主题和技能,你可以按照这个路线来学习: 1. Python基础知识:首先,你需要掌握Python的基本语法、数据类型、流程控制和函数等基础知识。这将为你后续的学习打下坚实的基础。 2. Linux基础知识:自动化运维通常在Linux环境下进行,因此你需要了解Linux的基本命令、文件系统、权限管理等知识。 3. 网络基础知识:了解网络协议、IP地址、子网掩码、路由等基本概念,以便于理解和操作网络设备。 4. 自动化工具:学习使用一些常见的自动化工具,如Ansible、SaltStack、Puppet等。这些工具可以帮助你自动化配置和管理大量的服务器。 5. Web开发:学习使用Python的Web框架,如Django或Flask,以便于构建自己的Web应用程序或API。 6. 数据库:了解数据库的基本概念和SQL语言,学习使用Python操作数据库,如MySQL或MongoDB。 7. 监控和日志管理:学习使用监控工具,如Zabbix或Nagios,以及日志管理工具,如ELK Stack(Elasticsearch、Logstash和Kibana)。 8. 容器化技术:了解Docker和Kubernetes等容器化技术,学习如何使用它们来部署和管理应用程序。 9. 自动化测试:学习使用Python编写自动化测试脚本,如使用Selenium进行Web应用程序的自动化测试。 10. 安全和故障恢复:了解网络安全的基本原理和常见的攻击方式,学习如何进行安全审计和故障恢复。 这只是一个大致的学习路线,你可以根据自己的兴趣和需求进行调整和扩展。记得不断实践和练习,通过实际项目来巩固所学知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值