标签 监控 下的文章

 title=

通过 iftop、 nethogs 和 vnstat 详细了解你的网络连接状态。

你可以通过这三个 Linux 命令了解当前网络的大量信息。iftop 通过进程号跟踪网络连接,nethogs 快速告知你哪些进程在占用你的带宽,而 vnstat 以一个良好的轻量级守护进程在后台运行,并实时记录你的网络使用情况。

iftop

令人称赞的 iftop 可以监听您指定的网络接口,并以 top 的样式呈现。

这是一个不错的小工具,可以用于找出网络拥塞,测速和维持网络流量总量。看到自己到底在用多少带宽往往是非常惊人的,尤其是对于我们这些仍然记得电话线路、调制解调器,“高速”到令人惊叫的 kb 和实时波特率的老人们。我们在很久之前就不再使用波特率,转而钟情于比特率。波特率用于衡量信号变化,尽管有时候与比特率相同,但大多数情况下并非如此。

如果你只有一个网络接口,直接运行 iftop 即可。不过 iftop 需要 root 权限:

$ sudo iftop

如果你有多个网络接口,那就指定你要监控的接口:

$ sudo iftop -i wlan0

就像 top 命令一样,你可以在命令运行时更改显示选项:

  • h 切换帮助界面。
  • n 是否解析域名。
  • s 切换源地址的显示,d 则切换目的地址的显示。
  • S 是否显示端口号。
  • N 是否解析端口;若关闭解析则显示端口号。
  • t 切换文本显示界面。默认的显示方式需要 ncurses。我个人认为图 1 的显示方式在组织性和可读性都更加良好。
  • p 暂停显示更新。
  • q 退出程序。

 title=

图 1:组织性和可读性良好的文本显示。

当你切换显示设置的时候,iftop 并不会中断监测流量。当然你也可以单独监测一台主机。而这需要该主机的 IP 地址和子网掩码。现在,我很好奇 Pandora(LCTT 译注:一家美国的电台公司)能给我贫瘠的带宽带来多大的负载。因此我首先使用 dig 命令找到他们的 IP 地址:

$ dig A pandora.com
[...]
;; ANSWER SECTION:
pandora.com.            267     IN      A       208.85.40.20
pandora.com.            267     IN      A       208.85.40.50

那子网掩码呢?ipcalc 会告诉我们:

$ ipcalc -b 208.85.40.20
Address:   208.85.40.20   
Netmask:   255.255.255.0 = 24
Wildcard:  0.0.0.255  
=>
Network:   208.85.40.0/24 

现在,将 IP 地址和子网掩码提供给 iftop:

$ sudo iftop -F 208.85.40.20/24 -i wlan0

很棒的不是么?而我也很惊奇地发现,Pandora 在我的网络上,每小时大约使用 500kb。并且就像大多数流媒体服务一样,Pandora 的流量在迅速增长,并依靠缓存稳定下来。

你可以使用 -G 选项对 IPv6 地址执行相同的操作。查阅友好的 man 可以帮助你了解 iftop 的其他功能,包括使用个人配置文件自定义你的默认选项,以及使用自定义过滤(请参阅 PCAP-FILTER 来获取过滤指南)。

nethogs

当你想要快速了解是谁在吸取你的带宽的时候,nethogs 是个快速而简单的方法。你需要以 root 身份运行并指定要监听的接口。它会给你显示大量的应用程序及其进程号,所以如果你想的话,你可以借此杀死任一进程。

$ sudo nethogs wlan0

nethogs version 0.8.1

PID USER   PROGRAM              DEV    SENT   RECEIVED       
7690 carla /usr/lib/firefox     wlan0 12.494 556.580 KB/sec
5648 carla .../chromium-browser wlan0  0.052   0.038 KB/sec
TOTAL                                 12.546 556.618 KB/sec 

nethogs 并没有多少选项:在 kb/s、kb、b、mb之间循环,按接收和发送的数据包排序,调整刷新延迟。具体请看man nethogs,或者是运行 nethogs -h。

vnstat

vnstat是最容易使用的网络数据收集工具。它十分轻量并且不需要 root 权限。它以守护进程在后台运行,因此可以实时地记录你的网络数据。单个 vnstat 命令就可以显示所累计的数据。

$ vnstat -i wlan0
Database updated: Tue Oct 17 08:36:38 2017

   wlan0 since 10/17/2017

          rx:  45.27 MiB      tx:  3.77 MiB      total:  49.04 MiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Oct '17     45.27 MiB |    3.77 MiB |   49.04 MiB |    0.28 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        85 MiB |       5 MiB |      90 MiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
         today     45.27 MiB |    3.77 MiB |   49.04 MiB |   12.96 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated       125 MiB |       8 MiB |     133 MiB |

默认情况下它会显示所有的网络接口。使用 -i 选项来选择某个接口。也可以像这样合并多个接口的数据:

$ vnstat -i wlan0+eth0+eth1

你可以通过这几种方式过滤数据显示:

  • -h 按小时显示统计信息。
  • -d 按天显示统计信息.
  • -w 和 -m 分别按周和月份来显示统计信息。
  • 使用 -l 选项查看实时更新。

以下这条命令将会删除 wlan1 的数据库并不再监视它:

$ vnstat -i wlan1 --delete

而下面这条命令将会为你的一个网络接口创建一个别名。这个例子使用了 Ubuntu 16.04 的一个有线接口名称:

$ vnstat -u -i enp0s25 --nick eth0

默认情况下,vnstat 会监视 eth0。你可以在 /etc/vnstat.conf 对它进行修改,或者在你的家目录下创建你自己的个人配置文件。请参阅 man vnstat 以获取完整的指南。

你也可以安装 vnstati 来创建简单的彩图(图 2):

$ vnstati -s -i wlx7cdd90a0a1c2 -o vnstat.png

 title=

图 2:你可以使用vnstati来创建简单的彩图。

请参阅 man vnstati 以获取完整的选项。

欲了解 Linux 的更多信息,可以通过学习 Linux 基金会和 edX 的免费课程,“Linux 入门”。


via: https://www.linux.com/learn/intro-to-linux/2017/10/3-simple-excellent-linux-network-monitors

作者:CARLA SCHRODER 译者:KeyLD 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

一个获得关于慢查询、意外错误和其它重要日志通知的简单 Go 秘诀。

我的 Slack 机器人提示我一个运行了很长时间 SQL 查询。我应该尽快解决它。

我们不能管理我们无法去测量的东西。每个后台应用程序都需要我们去监视它在数据库上的性能。如果一个特定的查询随着数据量增长变慢,你必须在它变得太慢之前去优化它。

由于 Slack 已经成为我们工作的中心,它也在改变我们监视系统的方式。 虽然我们已经有非常不错的监视工具,如果在系统中任何东西有正在恶化的趋势,让 Slack 机器人告诉我们,也是非常棒的主意。比如,一个太长时间才完成的 SQL 查询,或者,在一个特定的 Go 包中发生一个致命的错误。

在这篇博客文章中,我们将告诉你,通过使用已经支持这些特性的一个简单的日志系统 和 一个已存在的数据库库(database library) 怎么去设置来达到这个目的。

使用记录器

logger 是一个为 Go 库和应用程序使用设计的小型库。在这个例子中我们使用了它的三个重要的特性:

  • 它为测量性能提供了一个简单的定时器。
  • 支持复杂的输出过滤器,因此,你可以从指定的包中选择日志。例如,你可以告诉记录器仅从数据库包中输出,并且仅输出超过 500 ms 的定时器日志。
  • 它有一个 Slack 钩子,因此,你可以过滤并将日志输入到 Slack。

让我们看一下在这个例子中,怎么去使用定时器,稍后我们也将去使用过滤器:

package main

import (
    "github.com/azer/logger"
    "time"
)

var (
  users = logger.New("users")
  database = logger.New("database")
)

func main () {
  users.Info("Hi!")

  timer := database.Timer()
  time.Sleep(time.Millisecond * 250) // sleep 250ms
  timer.End("Connected to database")

  users.Error("Failed to create a new user.", logger.Attrs{
    "e-mail": "[email protected]",
  })

  database.Info("Just a random log.")

  fmt.Println("Bye.")
}

运行这个程序没有输出:

$ go run example-01.go
Bye

记录器是缺省静默的,因此,它可以在库的内部使用。我们简单地通过一个环境变量去查看日志:

例如:

$ LOG=database@timer go run example-01.go
01:08:54.997 database(250.095587ms): Connected to database.
Bye

上面的示例我们使用了 database@timer 过滤器去查看 database 包中输出的定时器日志。你也可以试一下其它的过滤器,比如:

  • LOG=*: 所有日志
  • LOG=users@error,database: 所有来自 users 的错误日志,所有来自 database 的所有日志
  • LOG=*@timer,database@info: 来自所有包的定时器日志和错误日志,以及来自 database 的所有日志
  • LOG=*,users@mute: 除了 users 之外的所有日志

发送日志到 Slack

控制台日志是用于开发环境的,但是我们需要产品提供一个友好的界面。感谢 slack-hook, 我们可以很容易地在上面的示例中,使用 Slack 去整合它:

import (
  "github.com/azer/logger"
  "github.com/azer/logger-slack-hook"
)

func init () {
  logger.Hook(&slackhook.Writer{
    WebHookURL: "https://hooks.slack.com/services/...",
    Channel: "slow-queries",
    Username: "Query Person",
    Filter: func (log *logger.Log) bool {
      return log.Package == "database" && log.Level == "TIMER" && log.Elapsed >= 200
    }
  })
}

我们来解释一下,在上面的示例中我们做了什么:

  • 行 #5: 设置入站 webhook url。这个 URL 链接在这里。
  • 行 #6: 选择流日志的入口通道。
  • 行 #7: 显示的发送者的用户名。
  • 行 #11: 使用流过滤器,仅输出时间超过 200 ms 的定时器日志。

希望这个示例能给你提供一个大概的思路。如果你有更多的问题,去看这个 记录器的文档。

一个真实的示例: CRUD

crud 是一个用于 Go 的数据库的 ORM 式的类库,它有一个隐藏特性是内部日志系统使用 logger 。这可以让我们很容易地去监视正在运行的 SQL 查询。

查询

这有一个通过给定的 e-mail 去返回用户名的简单查询:

func GetUserNameByEmail (email string) (string, error) {
  var name string
  if err := DB.Read(&name, "SELECT name FROM user WHERE email=?", email); err != nil {
    return "", err
  }

  return name, nil
}

好吧,这个太短了, 感觉好像缺少了什么,让我们增加全部的上下文:

import (
  "github.com/azer/crud"
  _ "github.com/go-sql-driver/mysql"
  "os"
)

var db *crud.DB

func main () {
  var err error

  DB, err = crud.Connect("mysql", os.Getenv("DATABASE_URL"))
  if err != nil {
    panic(err)
  }

  username, err := GetUserNameByEmail("[email protected]")
  if err != nil {
    panic(err)
  }

  fmt.Println("Your username is: ", username)
}

因此,我们有一个通过环境变量 DATABASE_URL 连接到 MySQL 数据库的 crud 实例。如果我们运行这个程序,将看到有一行输出:

$ DATABASE_URL=root:123456@/testdb go run example.go
Your username is: azer

正如我前面提到的,日志是 缺省静默的。让我们看一下 crud 的内部日志:

$ LOG=crud go run example.go
22:56:29.691 crud(0): SQL Query Executed: SELECT username FROM user WHERE email='[email protected]'
Your username is: azer

这很简单,并且足够我们去查看在我们的开发环境中查询是怎么执行的。

CRUD 和 Slack 整合

记录器是为配置管理应用程序级的“内部日志系统”而设计的。这意味着,你可以通过在你的应用程序级配置记录器,让 crud 的日志流入 Slack :

import (
  "github.com/azer/logger"
  "github.com/azer/logger-slack-hook"
)

func init () {
  logger.Hook(&slackhook.Writer{
    WebHookURL: "https://hooks.slack.com/services/...",
    Channel: "slow-queries",
    Username: "Query Person",
    Filter: func (log *logger.Log) bool {
      return log.Package == "mysql" && log.Level == "TIMER" && log.Elapsed >= 250
    }
  })
}

在上面的代码中:

  • 我们导入了 logger 和 logger-slack-hook 库。
  • 我们配置记录器日志流入 Slack。这个配置覆盖了代码库中 记录器 所有的用法, 包括第三方依赖。
  • 我们使用了流过滤器,仅输出 MySQL 包中超过 250 ms 的定时器日志。

这种使用方法可以被扩展,而不仅是慢查询报告。我个人使用它去跟踪指定包中的重要错误, 也用于统计一些类似新用户登入或生成支付的日志。

在这篇文章中提到的包

告诉我们 如果你有任何的问题或建议。


via: http://azer.bike/journal/monitoring-slow-sql-queries-via-slack/

作者:Azer Koçulu 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

监控服务器 - 什么是 Zabbix

Zabbix 是企业级开源分布式监控服务器解决方案。该软件能监控网络的不同参数以及服务器的完整性,还允许为任何事件配置基于电子邮件的警报。Zabbix 根据存储在数据库(例如 MySQL)中的数据提供报告和数据可视化功能。软件收集的每个测量指标都可以通过基于 Web 的界面访问。

Zabbix 根据 GNU 通用公共许可证版本 2(GPLv2)的条款发布,完全免费。

在本教程中,我们将在运行 MySQL、Apache 和 PHP 的 Ubuntu 16.04 server 上安装 Zabbix。

安装 Zabbix 服务器

首先,我们需要安装 Zabbix 所需的几个 PHP 模块:

# apt-get install php7.0-bcmath php7.0-xml php7.0-mbstring

Ubuntu 仓库中提供的 Zabbix 软件包已经过时了。使用官方 Zabbix 仓库安装最新的稳定版本。

通过执行以下命令来安装仓库软件包:

$ wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
# dpkg -i zabbix-release_3.2-1+xenial_all.deb

然后更新 apt 包源:

# apt-get update

现在可以安装带有 MySQL 支持和 PHP 前端的 Zabbix 服务器。执行命令:

# apt-get install zabbix-server-mysql zabbix-frontend-php

安装 Zabbix 代理:

# apt-get install zabbix-agent

Zabbix 现已安装。下一步是配置数据库来存储数据。

为 Zabbix 配置 MySQL

我们需要创建一个新的 MySQL 数据库,Zabbix 将用来存储收集的数据。

启动 MySQL shell:

$ mysql -uroot -p

接下来:

mysql> CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'usr_strong_pwd';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> EXIT;
Bye

接下来,导入初始表和数据。

# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

输入在 MySQL shell 中创建的 zabbix 用户的密码。

接下来,我们需要编辑 Zabbix 服务器配置文件,它是 /etc/zabbix/zabbis_server.conf:

# $EDITOR /etc/zabbix/zabbix_server.conf

搜索文件的 DBPassword 部分:

### Option: DBPassword                           
#       Database password. Ignored for SQLite.   
#       Comment this line if no password is used.
#                                                
# Mandatory: no                                  
# Default:                                       
# DBPassword=

取消注释 DBPassword= 这行,并添加在 MySQL 中创建的密码:

DBPassword=usr_strong_pwd

接下来,查找 DBHost= 这行并取消注释。

保存并退出。

配置 PHP

我们需要配置 PHP 来使用 Zabbix。在安装过程中,安装程序在 /etc/zabbix 中创建了一个名为 apache.conf 的配置文件。打开此文件:

# $EDITOR /etc/zabbix/apache.conf

此时,只需要取消注释 date.timezone 并设置正确的时区:


<IfModule mod_php7.c>
    php_value max_execution_time 300
    php_value memory_limit 128M
    php_value post_max_size 16M
    php_value upload_max_filesize 2M
    php_value max_input_time 300
    php_value always_populate_raw_post_data -1
    php_value date.timezone Europe/Rome
</IfModule>

保存并退出。

此时,重启 Apache 并启动 Zabbix Server 服务,使其能够在开机时启动:

# systemctl restart apache2
# systemctl start zabbix-server
# systemctl enable zabbix-server

用 systemctl 检查 Zabbix 状态:

# systemctl status zabbix-server

这个命令应该输出:

â zabbix-server.service - Zabbix Server
 Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor pr
 Active: active (running) ...

此时,Zabbix 的服务器端已经正确安装和配置了。

配置 Zabbix Web 前端

如介绍中所述,Zabbix 有一个基于 Web 的前端,我们将用于可视化收集的数据。但是,必须配置此接口。

使用 Web 浏览器,进入 URL http://localhost/zabbix。

Zabbix monitoring server Frontend Setup

点击 Next step

snapshot2

确保所有的值都是 Ok,然后再次单击 Next step 。

Zabbix MySQL configuration

输入 MySQL zabbix 的用户密码,然后点击 Next step。

Zabbix server details

单击 Next step ,安装程序将显示具有所有配置参数的页面。再次检查以确保一切正确。

Zabbix pre-installation details

Zabbix installation finished

点击 Next step 进入最后一页。

点击完成以完成前端安装。默认用户名为 Admin,密码是 zabbix。

Zabbix 服务器入门

Zabbix login interface

使用上述凭证登录后,我们将看到 Zabbix 面板:

zabbix dashboard

前往 Administration -> Users,了解已启用帐户的概况:

Zabbix users

通过点击 Create user 创建一个新帐户。

Zabbix User Creation

点击 Groups 中的 Add,然后选择一个组:

snapshot11

保存新用户凭证,它将显示在 Administration -> Users 面板中。

请注意,在 Zabbix 中,主机的访问权限分配给用户组,而不是单个用户。

总结

我们结束了 Zabbix Server 安装的教程。现在,监控基础设施已准备好完成其工作并收集有关需要在 Zabbix 配置中添加的服务器的数据。


via: https://www.unixmen.com/monitoring-server-install-zabbix-ubuntu-16-04/

作者:Giuseppe Molica 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

ps\_mem 是一个可以帮助我们精确获取 Linux 中各个程序核心内存使用情况的简单 python 脚本。虽然在 Linux 上有很多可用于查看内存使用情况的工具,比如 free、vmstat、smem、top 等,但这个工具和其它的区别在于其精确显示核心内存使用情况。

它会分别计算一个程序私有内存总量和共享内存总量,并以更准确的方式给出了总的内存使用量。很明显的,它将帮助大家知道系统中哪个程序正在占用更多的内存。

你可以通过包管理器、pip 、或直接运行 ps_mem.py 脚本等多种方式来安装 ps_mem 工具。需要注意的是:需要有 root 权限。

另外,推荐阅读以下内存工具:

通过包管理器安装 ps\_mem

基于 RHEL 的系统默认仓库就包含 ps\_mem 工具,所以我们可以简单地通过包管理器进行安装。

对于 RHEL/CentOS ,使用 yum 包管理器 安装 ps_mem 包:

$ sudo yum install ps_mem

对于Fedora ,使用 dnf 包管理器 安装 ps\_mem 包:

$ sudo dnf install ps_mem

对于 Arch Linux ,使用 pacman 包管理器 安装 ps\_mem 包:

$ sudo pacman -S ps_mem

通过 pip 安装 ps\_mem

pip 是在 Linux 上推荐使用的一种安装 Python 包的工具。可以使用 pip 命令而不是包管理器去获取最新的版本。使用 pip 包前,请确保你的系统上已安装过 pip 包。否则,先使用发行版本的包管理器安装 python-pip 包。

对于基于 Debian 的系统:

$ sudo apt-get install python-pip

对于基于 RHEL/CentOS 的系统:

$ sudo yum install python-pip

对于 Fedora

$ sudo dnf install python-pip

对于 openSUSE

$ sudo zypper install python-pip

对于基于 Arch Linux 的系统:

$ sudo pacman -S python-pip

最后,在 Linux 上运行 pip 工具安装 ps_mem :

$ sudo pip install ps_mem

直接运行 ps\_mem.py 脚本

我们也可以从开发者 github 页面下载文件,并直接运行 ps_mem.py 脚本。

$ git clone https://github.com/pixelb/ps_mem.git && cd ps_mem
$ sudo python ps_mem.py

ps\_mem 使用方法

不带任何参数直接运行 ps_mem 以精确获取每个程序的的核心内存使用情况。

$ sudo ps_mem
 Private  +   Shared  =  RAM used   Program

  1.6 MiB + 438.5 KiB =   2.1 MiB   packagekitd
  1.7 MiB + 498.0 KiB =   2.1 MiB   indicator-application-service
912.0 KiB +   1.3 MiB =   2.2 MiB   window-stack-bridge
  2.0 MiB + 350.5 KiB =   2.3 MiB   gnome-keyring-daemon
  1.8 MiB + 575.0 KiB =   2.3 MiB   whoopsie
  2.4 MiB + 304.5 KiB =   2.7 MiB   systemd-journald
  2.7 MiB + 157.5 KiB =   2.8 MiB   ibus-engine-simple
  2.7 MiB + 182.0 KiB =   2.9 MiB   ibus-dconf
  2.7 MiB + 332.5 KiB =   3.0 MiB   NetworkManager
  3.1 MiB + 169.5 KiB =   3.2 MiB   polkitd
  1.9 MiB +   1.7 MiB =   3.6 MiB   systemd (2)
  3.4 MiB + 172.5 KiB =   3.6 MiB   deja-dup-monitor
  2.9 MiB + 685.0 KiB =   3.6 MiB   zeitgeist-datahub
  2.9 MiB + 848.0 KiB =   3.7 MiB   python2.7
. . . . . .
222.1 MiB +   9.4 MiB = 231.5 MiB   compiz
286.2 MiB +  11.8 MiB = 298.0 MiB   firefox
---------------------------------
                          1.3 GiB
=================================

输出中打印出全路径:

$ sudo ps_mem -s
 Private  +   Shared  =  RAM used   Program

  3.2 MiB + 951.0 KiB =   4.1 MiB   /usr/lib/evolution/evolution-addressbook-factory
  3.7 MiB + 826.5 KiB =   4.5 MiB   /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
  3.7 MiB + 853.0 KiB =   4.6 MiB   /usr/lib/unity-settings-daemon/unity-fallback-mount-helper
. . .  . . .
131.9 MiB + 168.0 KiB = 132.1 MiB   /usr/sbin/mysqld
222.1 MiB +   9.4 MiB = 231.5 MiB   /usr/bin/compiz
286.2 MiB +  11.8 MiB = 298.1 MiB   /usr/lib/firefox/firefox
---------------------------------
                          1.3 GiB
=================================

只显示特定的 PID 列表的内存使用情况:

$ sudo ps_mem -p 2886,4386
 Private  +   Shared  =  RAM used   Program

 13.5 MiB +   2.9 MiB =  16.4 MiB   gnome-terminal-server
286.2 MiB +  11.8 MiB = 298.0 MiB   firefox
---------------------------------
                        314.4 MiB
=================================

每 N 秒打印进程内存。以下命令每 2 秒报告一次内存使用情况:

$ sudo ps_mem w 2

只显示内存总量:

$ sudo ps_mem -t
1329884160

via: http://www.2daygeek.com/ps_mem-report-core-memory-usage-accurately-in-linux/

作者:2DAYGEEK 译者:xllc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

ttyload 是一个轻量级的实用程序,它为 Linux 和其他类 Unix 系统上提供随着时间变化的彩色平均负载。它实现了在终端中(“tty”)图形化跟踪系统的平均负载。

它已知可以在诸如 Linux、IRIX、Solaris、FreeBSD、MacOS X (Darwin) 和 Isilon OneFS 等系统上运行。它被设计为可以容易地移植到其他平台,但这也带来了一些艰苦的工作。

它的一些值得注意功能是:它使用标准的硬编码 ANSI 转义序列进行屏幕显示和着色。如果你想要在一个没有什么负载压力的系统中查看工作的情况,它甚至还自带了一个相对独立(默认不会安装,甚至不会构建)的负载炸弹。

建议阅读:GoTTY:把你的 Linux 终端放到浏览器里面

在本篇中,我们会向你展示如何在 Linux 安装及使用 ttyload,以在终端中用彩色图形查看系统的平均负载。

如何在 Linux 中安装 ttyload

在基于 Debian/Ubuntu 的发行版中,你可以输入下面的 apt 命令来从默认的系统仓库中安装 ttyload。

$ sudo apt-get install ttyload

在其他发行版中,你可以如下从 ttyload 的源码安装。

$ git clone https://github.com/lindes/ttyload.git
$ cd ttyload
$ make
$ ./ttyload
$ sudo make install

安装完成后,你可以输入下面的命令启动。

$ ttyload

ttyload - Graphical View of Linux Load Average

ttyload - 图形浏览 Linux 的平均负载

注意:要关闭程序,只需按下 Ctrl+C 键。

你也可以定义两次刷新之间间隔的秒数。默认是 4 秒,最小是 1 秒。

$ ttyload -i 5
$ ttyload -i 1

要以单色模式运行,即它会关闭 ANSI 转义,如下使用 -m:

$ ttyload -m

ttyload - Monochrome Mode

ttyload – 单色模式

要获取 ttyload 的使用信息以及帮助,输入:

$ ttyload -h 

下面是一些尚不支持的重要功能:

  • 支持任意大小调整。
  • 使用相同的基本引擎制作 X 前端,“3xload”。
  • 面向日志的模式。

要获得更多信息,访问 ttyload 的主页:http://www.daveltd.com/src/util/ttyload/

就是这样了!在本文中,我们向你展示了如何在 Linux 中安装及使用 ttyload。通过下面的评论栏给我们回馈。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 的爱好者,即将推出的 Linux SysAdmin 网络开发人员,目前也是 TecMint 的内容创作者,他喜欢和电脑一起工作,并且坚信共享知识。


via: https://www.tecmint.com/ttyload-shows-color-coded-graph-of-linux-load-average/

作者:Aaron Kili 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linfo 是一个自由开源的跨平台的服务器统计 UI 或库,它可以显示大量的系统信息。Linfo 是可扩展的,通过 composer,很容易使用 PHP5 库以程序化方式获取来自 PHP 应用的丰富的系统统计数据。它有 Web UI 及其Ncurses CLI 视图,在 Linux、Windows、BSD、Darwin/Mac OSX、Solaris 和 Minix 系统上均可用。

Linfo 显示的系统信息包括 CPU 类型/速度、服务器的体系结构、挂载点用量、硬盘/光纤/Flash 驱动器、硬件设备、网络设备和统计信息、运行时间/启动日期、主机名、内存使用量(RAM 和 swap)、温度/电压/风扇速度和 RAID 阵列等。

环境要求:

  • PHP 5.3
  • pcre 扩展
  • Linux – /proc 和 /sys 已挂载且可对 PHP 可读,已经在 2.6.x/3.x 内核中测试过

如何在 Linux 中安装 Linfo 服务器统计 UI及库

首先,在 Apache 或 Nginx 的 Web 根目录下创建 Linfo 的目录,然后,使用下面展示的 rsync 命令 克隆仓库文件并将其移动到目录 /var/www/html/linfo 下:

$ sudo mkdir -p /var/www/html/linfo 
$ git clone git://github.com/jrgp/linfo.git 
$ sudo rsync -av linfo/ /var/www/html/linfo/

接下来,将 sample.config.inc.php 重命名为 config.inc.php。这是 Linfo 的配置文件,你可以在里面定义你想要的值:

$ sudo mv sample.config.inc.php config.inc.php 

现在,在 Web 浏览器中打开链接 http://SERVER_IP/linfo 来查看这个 Web UI,正如下面的截图所展示的。

从截图中可以看到, Linfo 显示了系统内核信息、硬件组成、RAM 统计、网络设备、驱动器以及文件系统挂载点。

Linux Server Health Information

Linux 服务器运行信息

你可以将下面一行内容加入配置文件 config.inc.php 中,以便进行故障排查时看到错误信息。

$settings['show_errors'] = true;

以 Ncurses 模式运行 Linfo

Linfo 有一个基于 ncurses 的简单界面,它依赖于 php 的 ncurses 扩展。

# yum install php-pecl-ncurses                    [在 CentOS/RHEL 上]
# dnf install php-pecl-ncurses                    [在 Fedora 上]
$ sudo apt-get install php5-dev libncurses5-dev   [在 Debian/Ubuntu 上] 

现在,像下面这样编译这个 php 扩展:

$ wget http://pecl.php.net/get/ncurses-1.0.2.tgz
$ tar xzvf ncurses-1.0.2.tgz
$ cd ncurses-1.0.2
$ phpize # generate configure script
$ ./configure
$ make
$ sudo make install

接下来,如果编译成功并安装好了该 php 扩展,运行下面的命令:

$ sudo echo extension=ncurses.so > /etc/php5/cli/conf.d/ncurses.ini

验证 ncurse:

$ php -m | grep ncurses

现在,运行 Info:

$ cd /var/www/html/linfo/
$ ./linfo-curses

Linux Server Information

Linux 服务器信息

Info 中尚欠缺下面这些功能:

  1. 支持更多 Unix 操作系统(比如 Hurd、IRIX、AIX 和 HP UX 等)
  2. 支持不太出名的操作系统 Haiku/BeOS
  3. 额外功能/扩展
  4. 在 ncurses 模式中支持 htop 类 特性

如果想了解更多信息,请访问 Linfo 的 GitHub 仓库: https://github.com/jrgp/linfo

这就是本文的全部内容了。从现在起,你可以使用 Linfo 在 Web 浏览器中查看 Linux 系统的信息。尝试一下,并在评论中和我们分享你的想法。另外,你是否还知道与之类似的有用工具/库?如果有,请给我们提供一些相关信息。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux 系统管理员和网络开发人员,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识


via: https://www.tecmint.com/linfo-shows-linux-server-health-status-in-real-time/

作者:Aaron Kili 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出