Nagios Setup | Nagios nrpe插件实现Linux监测

实验环境拓扑:
Nagios maps

Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中,NRPE用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控;NSCA用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到);NSClient++是用来监控Windows主机时安装在Windows主机上的组件;而NDOUtils则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理。这四个ADDON(附件)中,NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端。

Nagios Setup | 服务器监测之Nagios编译安装

Nagios监控系统

Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
Nagios提供了许多插件,利用这些插件可以方便的监控服务状态。

[OpenCode]WebBench source reading | WebBench源码分析

What is WebBench?

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。

1. 使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo make clean
sudo make & make install

five@master:~/github/OpenCCode/WebBench$ ./webbench
webbench [option]... URL
-f|--force Don't wait for reply from server.
-r|--reload Send reload request - Pragma: no-cache.
-t|--time <sec> Run benchmark for <sec> seconds. Default 30.
-p|--proxy <server:port> Use proxy server for request.
-c|--clients <n> Run <n> HTTP clients at once. Default one.
-9|--http09 Use HTTP/0.9 style requests.
-1|--http10 Use HTTP/1.0 protocol.
-2|--http11 Use HTTP/1.1 protocol.
--get Use GET request method.
--head Use HEAD request method.
--options Use OPTIONS request method.
--trace Use TRACE request method.
-?|-h|--help This information.
-V|--version Display program version.

多路冗余、堆叠方案下网络连接故障分析

目前机房两台NGFW400-UF万兆防火墙的部署方案实施后,发现存在偶发性链路不稳定的情况。
这两天根据不同设备间抓包分析,定位问题点,经与厂商工程师反复沟通确认后,确认了故障原因。

一、物理拓扑图

  • 堆叠设备采用多虚一技术(思科VSS、华为CSS等)实现统一管理配置、简化网络结构
  • 各网段网关均设置为核心交换机
  • 为避免环路,采用多个物理口链路聚合的形式解决
  • 链路聚合厂商支持程度存在差异: 交换机支持跨设备链路聚合,防火墙仅支持一台设备不同端口的聚合
  • 防火墙设备HA采用连接保护模式,心跳线仅用于策略和连接同步,不传输网络数据
  • 交换机虚拟化技术中两台设备间的链路存在数据传输

Python ssh switches control | 交换机SSH管理脚本

目前管理的交换机数量庞大,一些常用功能的配置往往需要多次、逐一登录交换机手动操作。
为提高统一管理、配置的效率,采用Python写了这个小工具,实现了:

  • Python SSH操作,依赖于paramiko库
  • 开启、关闭交换机分页显示功能
  • 开启、关闭交换机特权模式
  • 读取交换机列表文件、命令列表文件,批量执行
  • 多线程并行的多台交换机同时配置
  • 多线程进程数量自定义设置

[LeetCode] 322. Coin Change | 变换硬币

题目来源:LeetCode: 322. Coin Change

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)
Example 2:
coins = [2], amount = 3
return -1.
Note:
You may assume that you have an infinite number of each kind of coin.

题目:变换不同数量不同金额的硬币,如何使得最终总金额等于特定值所需要的金币数量最少。

[Python]广度优先的多线程Python网页抓取脚本

一、脚本作用

使用Python脚本批量化抓取特定网页内容中的相应资源,应包含功能:

  • 读取命令参数:argparse
  • 读取配置文件:ConfigParser
  • HTTP请求、URL处理及HTML解析:urllib2, urllib, HTMLParser
  • 广度优先并行请求:设计多线程模型
  • 保存本地资源:仅保存符合规则的资源
  • 日志记录:logging

Redis安装及使用

Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker.
根据Redis官网对Redis的定义,Redis是一种键值系统,可以用来缓存或存储数据。
Redis是“Remote Dictionary Server”(远程字典服务)的缩写,提供了字符串(string),列表(list),哈希(hash),集合(set)和有序集合(sorted set)等5种数据结构,这些数据结构使它成为一种便于使用的键值系统。