Zabbix3.4监控项key

这些检查与Zabbix代理进行通信实现数据的采集。

一共有被动和主动 两种agent模式. 在配置监控项时,你可以选择所需的类型:

  • Zabbix agent – 被动模式,Zabbix Server向Agent索要数据
  • Zabbix agent (active) – 主动模式,Agent主动上报数据给Zabbix Server

支持的监控项key

下表提供了可用的Zabbix代理监控项的详细信息。

请参考:

必填和可选参数

没有尖括号的参数是强制性的。标有尖括号<>的参数是可选的。

Key
描述 返回值 参数 注释
agent.hostname
Agent主机名. String 从配置文件返回Agent主机名的实际值。
agent.ping
Agent可用性检查 Nothing – 不可用

1 – 可用

使用nodata()触发器函数检查主机不可用性。
agent.version
Zabbix Agent的版本 字符串 例如返回值:
1.8.2
kernel.maxfiles
系统支持的打开文件的最大数量 整数
kernel.maxproc
系统支持的最大进程数 整数
log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]
日志文件监控。 Log file – 日志文件完整路径和名称
regexp – 描述所需模式的正则表达式
encoding – 编码 标识符
maxlines – Agent将发送到Zabbix服务器或代理的每秒最大行数。此参数覆盖zabbix_agentd.conf中的“MaxLinesPerSecond”值
mode – 可能的值:
all (默认值), skip – 跳过处理历史的数据(仅影响新创建的监控项)。
output – 可选项,输出格式模板。 \0转义序列替换为匹配的文本,而\N(其中N = 1 … 9)转义序列被替换为第N个匹配组(如果N超过捕获组的数量,则为空字符串)。
maxdelay – 最大延迟(秒)。 类型:float。 值:0-(默认)不忽略日志文件行; > 0.0-忽略旧行,以便在“maxdelay”秒内获取最近分析的行。使用前请阅读 maxdelay注释!
监控项必须定义为主动检查.
如果文件丢失或权限不允许访问,则监控项不受支持。

如果output 为空 – 返回包含匹配文本的整行。请注意,除“Result为TRUE”之外的所有全局正则表达式类型始终返回整个匹配行,并忽略输出参数。

在Agent端使用输出参数提取内容。

示例:
⇒ log[/var/log/syslog]
⇒ log[/var/log/syslog,error]
⇒ log[/home/zabbix/logs/logfile,,,100]

mode 参数从Zabbix 2.0之后被支持。
output 从Zabbix 2.2之后被支持
maxdelay参数从Zabbix 3.2以后被支持。

更多信息请参考日志文件监控.

log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>]
日志文件监控中匹配行的数量。 整数 file – 日志文件完整的路径和名称
regexp – 正则表达式
encoding – 编码 标识符
maxproclines – Agent将分析每秒最大行数。默认值为 4*’MaxLinesPerSecond’在zabbix_agent配置文件.
mode – 可选的值:
all (默认), skip – 跳过处理老数据(仅影响新创建的监控项)。
maxdelay – 最大延迟秒数。类型: float. 值: 0 – (默认) 从不忽略每行日志; > 0.0 – 忽略旧行,以便在“maxdelay”秒内获取最近分析的行。在使用前请阅读maxdelay参数 的注解!
该监控项必须配置为主动检查.
如果文件丢失或权限不允许访问,则监控项不受支持。

查看更多信息在日志文件监控.

从Zabbix 3.2.0开始支持

logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]
支持监控轮询的日志文件。 Log file_regexp – 文件名以及正则表达式定义的文件名的绝对路径。
regexp – 描述匹配内容的正则表达式。
encoding – 编码 标识符
maxlines – Agent发送到Zabbix服务器或者Proxy服务器的每秒最大生成行数。此参数将重写配置文件zabbix_agent配置文件的参数’MaxLinesPerSecond’的值
mode – 可选的值:
all (默认), skip – 跳过处理旧数据(仅影响新创建的监控项)。
output – 一个可选的输出格式模板。 \0 转义序列替换为匹配文本,而\N(其中N = 1 … 9)转义序列被替换为第N个匹配组(如果N超过捕获组的数量,则为空字符串)。
maxdelay – 最大延迟(秒)。 类型:float。 值:0-(默认)不忽略日志文件行; > 0.0-忽略旧行,以便在“maxdelay”秒内获取最近分析的行。使用前请阅读maxdelay参数注释!
监控项必须定义为主动检查.
日志轮询是基于文件的最后修改时间。

如果output 为空 – 返回包含匹配文本的整行. 请注意,除“Result为TRUE”之外的所有全局正则表达式类型始终返回整个匹配行,并忽略输出参数。

在Agent端使用输出参数提取内容。

示例:
⇒ logrt[“/home/zabbix/logs/^logfile[0-9]{1,3}$”,,,100] → 将返回一个文件类似”logfile1″ (不会匹配”.logfile1″)
⇒ logrt[“/home/user/^logfile_.*_[0-9]{1,3}$”,”pattern_to_match”,”UTF-8″,100] → 将从文件收集信息例如 “logfile_abc_1” 或者 “logfile__001”.

mode 参数从Zabbix 2.0以后开始支持。
output参数从Zabbix 2.2开始支持。
maxdelay参数从Zabbix 3.2开始支持。

更多信息请参考日志文件监控.

logrt.count[file_regexp,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>]
支持对循环日志文件监控中匹配的行数。 整型 file_regexp – 文件名以及正则表达式定义的文件名的绝对路径。
regexp – 描述匹配内容的正则表达式。
encoding – 编码 标识符
maxproclines – Agent将分析每秒最大新生成行数。 默认值为 4*’MaxLinesPerSecond’ 定义在 zabbix_agent配置文件.
mode – 可能的值:
all (默认), skip – 跳过处理旧数据(仅影响新创建的监控项)。
maxdelay – 最大延迟(秒)。 类型:float。 值:0-(默认)不忽略日志文件行; > 0.0-忽略旧行,以便在“maxdelay”秒内获取最近分析的行。使用前请阅读maxdelay参数注释!
监控项必须定义为主动检查.
日志轮询是基于文件的最后修改时间。

更多信息请参考 日志文件监控

从Zabbix 3.2.0后开始支持。

net.dns[<ip>,name,<type>,<timeout>,<count>,<protocol>]
检查DNS服务是否开启。 0 – DNS宕了 (服务器没有响应或DNS解析失败)

1 – DNS正在运行

ip – DNS服务器的IP地址(默认DNS服务器为空,在Windows上被忽略)
name – 要查询的DNS名称
type – 要查询的记录类型 (默认为 SOA)
timeout (在windows上忽略) – 请求的超时秒数(默认为1秒)
count (在windows上忽略) – 请求的尝试次数 (默认为2)
protocol – 用于执行DNS查询的协议:udp (默认) 或者 tcp
示例:
⇒ net.dns[8.8.8.8,zabbix.com,MX,2,1]

type 可选的值为:
ANYANSCNAMEMBMGMRPTRMDMFMXSOANULLWKS (Windows系统除外), HINFOMINFOTXTSRV

不支持国际化域名,请改用IDNA编码名称。

Zabbix 3.0支持协议参数。
Zabbix Agent从版本1.8.6(Unix)和2.0.0(Windows)开始支持SRV记录类型。

Zabbix 2.0之前命名(仍然支持): net.tcp.dns

net.dns.record[<ip>,name,<type>,<timeout>,<count>,<protocol>]
执行一个DNS查询 字符串与所需类型的信息 ip – DNS服务器的IP地址(默认DNS服务器为空,在Windows上被忽略)
name – 要查询的DNS名称
type – 要查询的记录类型 (默认为 SOA)
timeout (在windows上忽略) – 请求的超时秒数(默认为1秒)
count (在windows上忽略) – 请求的尝试次数 (默认为2)
protocol – 用于执行DNS查询的协议:udp (默认) 或者 tcp
示例:
⇒ net.dns[8.8.8.8,zabbix.com,MX,2,1]

type 可选的值为:
ANYANSCNAMEMBMGMRPTRMDMFMXSOANULLWKS (Windows系统除外), HINFOMINFOTXTSRV

不支持国际化域名,请改用IDNA编码名称。

Zabbix 3.0支持协议参数。
Zabbix Agent从版本1.8.6(Unix)和2.0.0(Windows)开始支持SRV记录类型。

Zabbix 2.0之前命名(仍然支持): net.tcp.dns.query

net.if.collisions[if]
Number of out-of-window collisions. 整型 if – 网卡名称
net.if.discovery
网络接口列表 用于低级发现。 JSON 对象 Zabbix agent从2.0之后开始支持。

Zabbix agent在FreeBSD, OpenBSD 和 NetBSD系统从2.2开始支持。

某些Windows版本(例如Server 2008)可能需要安装最新的更新以支持网卡名称中的非ASCII字符。

net.if.in[if,<mode>]
网卡流入量统计。 整型 if – 网卡名 (Unix); 网卡完整描述或IPv4地址(Windows)
mode – 可用的值:
bytes – 字节数(默认)
packets – 包数量
errors – 错误数量
dropped – 丢包数量
在Windows上,该选项从64位计数器获取值(如果可用)。64位接口统计计数器在Windows Vista和Windows Server 2008中引入。如果64位计数器不可用,代理使用32位计数器。

从Zabbix Agent1.8.6版本起,支持Windows上的多字节接口名称。

示例:
⇒ net.if.in[eth0,errors]
⇒ net.if.in[eth0]

你可以使用net.if.discovery或net.if.list监控项在Windows上获取网卡说明。

你可以使用该键与Delta(每秒速度)存储值,以获得每秒字节的统计信息。

net.if.out[if,<mode>]
网卡流出量统计。 整型 if – 网卡名称 (Unix); 网卡完整描述或IPv4地址(Windows)
mode – 可用的值:
bytes – 字节数(默认)
packets – 包数量
errors – 错误数量
dropped – 丢包数量
在Windows上,该选项从64位计数器获取值(如果可用)。64位接口统计计数器在Windows Vista和Windows Server 2008中引入。如果64位计数器不可用,代理使用32位计数器。

从Zabbix Agent1.8.6版本起,支持Windows上的多字节接口名称。

示例:
⇒ net.if.out[eth0,errors]
⇒ net.if.out[eth0]

你可以使用net.if.discovery或net.if.list监控项在Windows上获取网卡说明。

你可以使用该键与Delta(每秒速度)存储值,以获得每秒字节的统计信息。

net.if.total[if,<mode>]
网卡的进出流量统计信息的总和。 整型 if – 网卡名称(Unix); 网卡完整描述或IPv4地址(Windows)
mode – 可用的值:
bytes – 字节数(默认)
packets – 包数量
errors – 错误数量
dropped – 丢包数量
在Windows上,该选项从64位计数器获取值(如果可用)。64位接口统计计数器在Windows Vista和Windows Server 2008中引入。如果64位计数器不可用,代理使用32位计数器。

示例:
⇒ net.if.total[eth0,errors]
⇒ net.if.total[eth0]

You may obtain network interface descriptions on Windows with net.if.discovery or net.if.list items.

你可以使用net.if.discovery或net.if.list监控项在Windows上获取网卡说明。

你可以使用该键与Delta(每秒速度)存储值,以获得每秒字节的统计信息。

请注意,只有当net.if.in和net.if.out都用于平台上丢弃的数据包时,丢弃的数据包才被支持。

net.tcp.listen[port]
检查此TCP端口是否处于监听状态。 0 – 未监听

1 – 处于监听状态

port – TCP端口 示例:
⇒ net.tcp.listen[80]

在Zabbix代理版本1.8.4之后支持Linux。

从Zabbix 3.0.0之后,在Linux内核2.6.14及更高版本上从内核的NETLINK接口获取有关监听TCP套接字的信息。否则,将从/proc/net/tcp和/proc/net/tcp6文件中检索该信息。

net.tcp.port[<ip>,port]
检查是否可以将TCP连接到指定的端口。 0 – 不能连接

1 – 可以连接

ip – IP地址 (默认是 127.0.0.1)
port – 端口
示例:
⇒ net.tcp.port[,80] → 可用于测试在端口80上运行的Web服务器的可用性。

对于简单的TCP性能测试,使用 net.tcp.service.perf[tcp,<ip>,<port>]

请注意,这些检查可能会导致增加系统守护程序日志文件中的额外信息(通常会记录SMTP和SSH会话)。

旧的命名方式: check_port[*]

net.tcp.service[service,<ip>,<port>]
检查服务是否正在运行并接受TCP连接。 0 – 服务down了

1 – 服务正在运行

service – 如下任一服务:
sshldapsmtpftphttppopnntp, .imaptcphttpstelnet (查看详细信息)
ip – IP地址 (默认是 127.0.0.1)
port – 端口号 (默认为标准服务端口号)
示例:
⇒ net.tcp.service[ftp,,45] → 可用于检测FTP服务器上TCP端口45的可用性。

请注意,这些检测可能会导致增加系统守护程序日志文件的信息(通常会记录SMTP和SSH会话)。

目前不支持检测加密协议(如端口993上的IMAP或端口995上的POP)。 一个解决方案是使用net.tcp.port来检测这些。

目前不支持Windows Agent检测LDAP和HTTPS。

请注意,telnet检测查找登录提示符(’:’在结尾)。

请参考HTTPS服务检测的 已知问题

https 和 telnet 服务从Zabbix 2.0开始支持。

旧命名: check_service[*]

net.tcp.service.perf[service,<ip>,<port>]
检测TCP服务性能 0 – 服务停止。

seconds – 连接到服务花费的时间(秒)

service – 如下任一服务:
sshldapsmtpftphttppopnntpimaptcphttpstelnet (参考 详细描述)
ip – IP 地址(默认为 127.0.0.1)
port – 端口号 (默认为标准服务端口号)
示例:
⇒ net.tcp.service.perf[ssh] → 可以用来检测SSH服务器的初始响应速度。

目前不支持检测加密协议 (如IMAP 上的端口993或者POP上的端口995) 。一个解决方案是使用net.tcp.service.perf[tcp,<ip>,<port>]来检测。

目前不支持Windows代理检查LDAP和HTTPS。

请注意,telnet检测查找登录提示符(’:’在结尾)。

请参考检测HTTPS服务的已知问题

https 和 telnet 服务从Zabbix 2.0开始支持。

旧名称: check_service_perf[*]

net.udp.listen[port]
检测UDP端口是否处于监听状态。 0 – 未监听。

1 – 处在监听状态。

port – UDP端口 示例:
⇒ net.udp.listen[68]

在Linux平台从Zabbix agent version 1.8.4 开始支持。

net.udp.service[service,<ip>,<port>]
检查服务是否正在运行并能响应UDP请求。 0 – 服务停了。

1 – 服务正在运行

service – ntp (参考 详细信息)
ip – IP地址 (默认是127.0.0.1)
port – 端口号 (默认使用标准服务端口号)
示例:
⇒ net.udp.service[ntp,,45] → 可用于测试UDP端口45上NTP服务的可用性。

此选项从Zabbix 3.0.0起支持,但ntp服务可用于以前版本中的net.tcp.service []选项。

net.udp.service.perf[service,<ip>,<port>]
检测UDP服务的性能 0 – 服务停了

seconds – 等待服务响应的秒数

service – ntp (参考详细信息)
ip – IP地址 (默认为 127.0.0.1)
port – 端口 (默认使用标准服务端口号)
示例:
⇒ net.udp.service.perf[ntp] → 可用于测试NTP服务的响应时间。

此选项从Zabbix 3.0.0起支持,但ntp服务可用于以前版本中的net.tcp.service []选项。

proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>]
进程CPU利用率百分比。 浮点型 name – 进程名 (默认为 all processes)
user – 用户名 (默认为 all users)
type – CPU利用率类型:
total (默认), usersystem
cmdline – 可按命令行过滤(支持正则表达式)
mode – 数据收集模式: avg1 (默认), avg5avg15
zone – 目标区域: current (默认), all. 此参数仅在Solaris平台上受支持。从Zabbix 3.0.3开始,如果代理程序已在Solaris上编译且没有区域支持,而是在支持区域的较新Solaris上运行,并且<zone>参数为缺省值或当前值,则代理程序将返回NOTSUPPORTED(该代理程序不能将结果限制为仅当前区)。但是,在这种情况下,支持<zone>参数值all
示例:
⇒ proc.cpu.util[,root] → 在“root”用户下运行的所有进程的CPU利用率。
⇒ proc.cpu.util[zabbix_server,zabbix] → 在zabbix用户下运行的所有zabbix_server进程的CPU利用率。

返回值基于单CPU核的利用率。例如,使用两个内核的进程的CPU利用率为200%。

进程CPU利用率数据由收集器收集,该收集器最多支持1024个唯一(按名称,用户和命令行)查询。 过去24小时内未被访问的查询将从收集器中删除。

自Zabbix 3.0.0起支持此Key,并可在多个平台上使用 (请查看 平台支持的监控项).

proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]
用户进程使用的内存。 整型 name – 进程名 (默认是全部进程)
user – 用户名 (默认是 全部用户)
mode – 可能的值:
avgmaxminsum (默认值)
cmdline – 按命令行过滤(它是一个正则表达式)
memtype – 进程使用的内存类型
示例:
⇒ proc.mem[,root] → “root”用户运行的所有进程使用的内存
⇒ proc.mem[zabbix_server,zabbix] → zabbix用户运行的所有zabbix_server进程使用的内存
⇒ proc.mem[,oracle,max,oracleZABBIX] → oracle用户下,包含有oracleZABBIX命令行运行的所有内存最多的内存

注意: 当多个进程使用共享内存时,进程使用的内存总和可能导致大到不切实际的值。

参考 说明 关于选择进程name 和 cmdline 参数(指定为Linux)。

memtype 参数从Zabbix 3.0.0开始在多个 平台 支持。

proc.num[<name>,<user>,<state>,<cmdline>]
进程数量。 整型 name – 进程名称 (默认是 all processes)
user – 用户名 (默认是 all users)
state – 可选的值: all (default), runsleepzomb
cmdline – 按命令行过滤(它是一个正则表达式)
示例:
⇒ proc.num[,mysql] → 在mysql用户下运行的进程数
⇒ proc.num[apache2,www-data] → 在www-data用户下运行的apache2进程数
⇒ proc.num[,oracle,sleep,oracleZABBIX] → 在oracleZABBIX命令行下的oracle用户运行的睡眠状态进程数。

参考 说明 关于选择进程 name 和 cmdline 参数(适用于Linux).

在Windows上,只支持nameuser参数。

sensor[device,sensor,<mode>]
硬件传感器读数。 浮点型 device – 设备名称
sensor – 传感器名
mode – 可能的值:
avgmaxmin (如果省略此参数,则会对设备和传感器进行逐字处理).
在Linux 2.4上读取 /proc/sys/dev/sensors

示例:
⇒ sensor[w83781d-i2c-0-2d,temp1]

在Zabbix 1.8.4之前,使用传感器[temp1]格式。

在Linux 2.6以后的版本上读取 /sys/class/hwmon

请参阅Linux上sensor项目的更详细说明。

在OpenBSD上读取hw.sensors MIB文件

示例:
⇒ sensor[cpu0,temp0] → CPU的温度
⇒ sensor[“cpu[0-2]$”,temp,avg] → 前三个CPU温度的平均值

从Zabbix 1.8.4开始支持OpenBSD。

system.boottime
系统启动时间 整数 (Unix时间戳)
system.cpu.discovery
检测到的CPU/CPU内核列表。用于低级发现。 JSON对象 所有平台从2.4.0开始支持
system.cpu.intr
设备中断数 整数
system.cpu.load[<cpu>,<mode>]
CPU负载. 浮点数 cpu – 可能的值:
all (default), percpu (总负载除以在线CPU数)
mode – 可能的值:
avg1 (一分钟平均值, 默认值), avg5avg15
示例:
⇒ system.cpu.load[,avg5]

percpu 从Zabbix 2.0.0开始支持

旧名称: system.cpu.loadX

system.cpu.num[<type>]
CPU的数量 整数 type – 可能的值:
online (默认), max
示例:
⇒ system.cpu.num
system.cpu.switches
上下文交换的数量。 整数 旧名称: system[switches]
system.cpu.util[<cpu>,<type>,<mode>]
CPU利用率。 浮点型 cpu – <CPU数量> 或者 all (默认值)
type – 可能的值:
idleniceuser (默认值), system (Windows系统默认值), iowaitinterruptsoftirqstealguest (在Linux kernels 2.6.24 以及以上支持), guest_nice (在Linux kernels 2.6.33 以及以上支持)
mode – 可能的值:
avg1 (1分钟平均值, 默认值), avg5avg15
示例:
⇒ system.cpu.util[0,user,avg5]

旧名称: system.cpu.idleX, system.cpu.niceX, system.cpu.systemX, system.cpu.userX

system.hostname[<type>]
系统主机名。 字符串型 type (仅Windows不得在其它系统上使用) – 可能的值: netbios (默认) 或者 host 该值由Windows上的GetComputerName()(对于netbios)或gethostname()(用于主机)函数以及其它系统上的“hostname”命令获取。

返回值示例:
Linux系统:
⇒ system.hostname → linux-w7x1
⇒ system.hostname → www.zabbix.com
Windows系统:
⇒ system.hostname → WIN-SERV2008-I6
⇒ system.hostname[host] → Win-Serv2008-I6LonG

参数type Zabbix 1.8.6开始支持。

请参考 更详细的描述.

system.hw.chassis[<info>]
机架信息。 字符串 info – 完整的 (默认)、型号、序列、类型或供应商之一 示例: system.hw.chassis[full]
Hewlett-Packard HP Pro 3010 Small Form Factor PC CZXXXXXXXX Desktop]

此key取决于SMBIOS表的可用性。
将尝试从sysfs读取DMI表,如果sysfs访问失败,尝试直接从内存中读取。

需要根权限,因为通过从sysfs或内存读取获取该值。

Zabbix agent从2.0开始支持。

system.hw.cpu[<cpu>,<info>]
CPU信息 字符串或者整型 cpu – <CPU数量> 或者 全部 (默认)
info – 可能的值:
full (默认), curfreqmaxfreqmodel 或者vendor
示例:
⇒ system.hw.cpu[0,vendor] → AuthenticAMD

从 /proc/cpuinfo 和 /sys/devices/system/cpu/[cpunum]/cpufreq/cpuinfo_max_freq 获取信息。

如果指定了CPU编号和curfreqmaxfreq,则返回数值(Hz)。

Zabbix agent从版本2.0开始支持

system.hw.devices[<type>]
列出PCI或者USB设备 文本型 type – pci (默认) 或者 usb 示例:
⇒ system.hw.devices[pci] → 00:00.0 Host bridge: Advanced Micro Devices [AMD] RS780 Host Bridge
[..]

返回lspci或lsusb实用程序的输出(没有任何参数)

Zabbix agent 从版本2.0开始支持

system.hw.macaddr[<interface>,<format>]
列出MAC地址 字符串型 interface – all (默认) 或者为一个正则表达式
format – full (默认) 或者 short
列出与给定接口正则表达式名称匹配的网卡的MAC地址(所有网卡的所有列表)。

示例:
⇒ system.hw.macaddr[“eth0$”,full] → [eth0] 00:11:22:33:44:55

如果format被指定为short,则不会列出接口名称和相同的MAC地址。
\\Zabbix agent从版本2.0开始支持。

system.localtime[<type>]
系统时间 整数 – 类型为 utc

字符串 – 类型为 local

type – 可能的值:
utc – (默认值) 从纪元以来的时间(1970年1月1日00:00:00 UTC),以秒为单位。\ local – ‘yyyy-mm-dd,hh:mm:ss.nnn,+ hh:mm’格式的时间
此监控项参数从Zabbix agent 版本2.0开始支持。

示例:
⇒ system.localtime[local] → 使用该key创建一个监控项,然后使用它在“时钟”screen element中显示主机时间。

system.run[command,<mode>]
在主机上运行指定的命令。 命令执行的文本结果

1 – 模式为nowait(不管命令结果如何)

command – 要执行的命令
mode – 可能的值:
wait – 等待执行结束(默认),
nowait – 不等待
最多可以返回512KB的数据,包括截断的尾随空格。
要被正确的处理,命令的输出必须是文本。

示例:
⇒ system.run[ls -l /] → 根目录的详细文件列表。

注意: 要启用此功能,Zabbix agent配置文件 必须包含EnableRemoteCommands=1 选项。
注意: 监控项的返回值是标准输出以及由命令产生的标准错误输出。 如果没有使用nowait标志,则会检查执行结果。
注意: 从Zabbix 2.4.0开始,空结果是允许的。

同时参考: 执行指令.

system.stat[resource,<type>]
系统信息。 整型或者浮点型 ent – 该分区有权接收的处理器单元数(float)
kthr,<type> – 关于内核线程状态的信息:
r – 平均可运行内核线程数(float)
b – 虚拟内存管理器等待队列中的平均内核线程数(float)
memory,<type> – 有关虚拟和真实内存使用情况的信息:
avm – 活动虚拟页面(整数)
fre – 自由列表的大小(整数)
page,<type> – 关于页面错误和分页活动的信息:
fi – 每秒文件页面输入(float)
fo – 每秒文件页面输出(float)
pi – 从调页空间(float)分页的页面
po – 页面分页到调页空间(float)
fr – 页面被释放(页面替换)(浮点)
sr – 通过页面替换算法扫描的页面 (float)
faults,<type> – trap和中断率:
in – 设备中断 (float)
sy – 系统调用 (float)
cs – 内核线程上下文切换 (float)
cpu,<type> – 处理器时间使用百分比的细分:
us – 用户时间 (float)
sy – 系统时间 (float)
id – 空闲时间 (float)
wa – 系统具有未完成的磁盘/NFS I/O请求(float)的空闲请求时间(float)
pc – 消耗的物理处理器数量(float)
ec – 被授权的容量消耗的百分比(float)
lbusy – 表示在用户和系统级执行时发生的逻辑处理器利用率的百分比(float)
app – 表示共享池中的可用物理处理器(float)
disk,<type> – 磁盘信息:
bps – 表示以每秒字节为单位传输(读取或写入)驱动器的数据量 (integer)
tps – 表示发送到物理磁盘/磁带的每秒传输次数(float)
此监控项从Zabbix 1.8.1. 开始支持
system.sw.arch
软件架构信息。 字符串型 示例:
⇒ system.sw.arch → i686

信息从uname()函数中获取。

Zabbix agent 从版本2.0开始支持

system.sw.os[<info>]
操作系统信息 字符串 info – 可能的值:
full (默认), short 或者 name
示例:
⇒ system.sw.os[short]→ Ubuntu 2.6.35-28.50-generic 2.6.35.11

信息获取(注意,并非所有发行版中都存在所有文件和选项):
/proc/version (full)
/proc/version_signature (short)
/etc/os-release中支持它的系统上的PRETTY_NAME参数,或/etc/issue.net(name)

Zabbix agent从版本2.0开始支持。

system.sw.packages[<package>,<manager>,<format>]
列出已安装的软件包。 文本 package – all (默认) 或者为正则表达式
manager – all (默认) 或者为包管理器
format – full (默认) 或者 short
列表(按字母顺序)安装的包名称与给定的包regexp匹配的包(全部列出它们全部)。

示例:
⇒ system.sw.packages[mini,dpkg,short] → python-minimal, python2.6-minimal, ubuntu-minimal

支持包管理器(执行命令):
dpkg (dpkg –get-selections)
pkgtool (ls /var/log/packages)
rpm (rpm -qa)
pacman (pacman -Q)

如果format被指定为full,则软件包由包管理器分组(每个管理器在单独的行上以其方括号开头)。
如果format 被指定为short, 包管理器不分组,并列在一行里。

Zabbix agent从版本2.0开始支持

system.swap.in[<device>,<type>]
交换(从设备到内存)统计。 整型 device – 用于交换的设备 (默认是all)
type – 可能的值:
count (swapins的数量), sectors (换入的区域), pages (换入的页). 有关默认的详细信息请参考 支持的平台
示例:
⇒ system.swap.in[,pages]

这个信息的来源是:
/proc/swaps, /proc/partitions, /proc/stat (Linux 2.4)
/proc/swaps, /proc/diskstats, /proc/vmstat (Linux 2.6)

system.swap.out[<device>,<type>]
交换(从内存到设备)统计。 整型 device – 用于交换的设备 (默认是all)
type – 可能的值:
count (swapouts的数量), sectors (换出的区域), pages (换出的页). 有关默认的详细信息请参考支持的平台
示例:
⇒ system.swap.out[,pages]

信息来源是:
/proc/swaps, /proc/partitions, /proc/stat (Linux 2.4)
/proc/swaps, /proc/diskstats, /proc/vmstat (Linux 2.6)

system.swap.size[<device>,<type>]
交换空间大小(以字节为单位)或百分比(total)。 Integer – 字节

Float – 百分比

device – 用于交换的设备 (默认是 all)
type – 可能的值:
free (可用的交换空间, 默认值), pfree (空闲交换空间,百分比), pused (使用交换空间,百分比), total (总交换空间), used (使用交换空间)
如果没有指定设备,Zabbix代理只会考虑交换设备(文件),物理内存将被忽略。 例如,在Solaris系统上,swap -s命令包含一部分物理内存和交换设备(与swap -l不同)。

请注意,此key可能会报告虚拟化(VMware ESXi,VirtualBox)Windows平台上的百分比不正确。在这种情况下,使用perf_counter [\700(_Total)\702]键来获取正确的交换使用数据。

旧名称: system.swap.freesystem.swap.total

system.uname
系统相关信息 字符串 返回值的示例(Unix):
FreeBSD localhost 4.2-RELEASE FreeBSD 4.2-RELEASE #0: Mon Nov i386

返回值示例(Windows):
Windows ZABBIX-WIN 6.0.6001 Microsoft® Windows Server® 2008 Standard Service Pack 1 x86

从Zabbix 2.2.0开始在Unix上,该监控项的值是通过uname()系统调用获得的。以前它是通过调用“uname -a”获得的。 此监控项的值可能与“uname -a”的输出不同,并且不包含基于其它来源输出的“uname -a”的信息。

从Zabbix 3.0开始的Windows系统上,该监控项的值是从Win32_OperatingSystem和Win32_Processor WMI类获取信息。以前它是从不稳定的Windows API和未记录的注册表项获得的。操作系统名称(包括版本)可能会被翻译成用户的显示语言。 在某些版本的Windows上,它包含商标符号和额外的空格。

请注意,在Windows上,该项目返回操作系统架构,而在Unix上则返回CPU架构。

system.uptime
系统正常运行时间(以秒为单位) 整数 监控项配置中, 使用 s 或者 uptime 单位来获取可读取的值。
system.users.num
已登录用户数 整数 who 命令用于代理端获取该值。
vfs.dev.read[<device>,<type>,<mode>]
磁盘读取统计信息。 整数 – 类型为 sectorsoperationsbytes

Float – 类型为 spsopsbps

device – 磁盘设备 (默认为 all)
type – 可能的值: sectorsoperationsbytesspsopsbps
必须指定此参数,因为各种操作系统的默认值不同。
spsopsbps 表示: sectors, operations, bytes per second, respectively.
mode – 可能的值: avg1 (1分钟平均值, 默认), avg5avg15.
此参数仅支持的类型为: sps, ops, bps.
不同操作系统的“类型”参数的默认值:
AIX – operations
FreeBSD – bps
Linux – sps
OpenBSD – operations
Solaris – bytes

示例:
⇒ vfs.dev.read[,operations]

在支持的平台上的spsops 和 bps 曾被限制为 8 个设备(7个独立的和1个 all). 从Zabbix 2.0.1 开始,这个限制提高到1024个设备(1023个独立的和1个all).

如果默认为全部用于第一个参数,那么该key将返回摘要统计信息,包括所有块设备,如sda,sbd及其分区(sda1,sda2,sdb3 …)和基于这些块设备/分区的多个设备(MD raid)和基于这些设备/分区的逻辑卷(LVM)。在这种情况下,返回值只能作为相对值(动态时间)而不是绝对值。

LVM的支持从Zabbix 1.8.6开始。

直到Zabbix 1.8.6才能使用相关的设备名称(例如,sda)。 从那时起,可选的 /dev/前缀(例如/dev/sda)必须被使用。

旧名称: io[*]

vfs.dev.write[<device>,<type>,<mode>]
磁盘写入统计信息。 整数 – 类型sectorsoperationsbytes

浮点型 – 类型为 spsopsbps

device – 磁盘设备 (默认为all)
type – 可能的值: sectorsoperationsbytesspsopsbps
因为各种操作系统的默认值有所不同,所以这个参数必须被指定。
spsopsbps 代表: sectors, operations, bytes per second, respectively.
mode – 可能的值: avg1 (1分钟平均值, 默认), avg5avg15.
此参数仅支持这些类型: sps, ops, bps.
不同操作系统的“类型”参数的默认值:
AIX – operations
FreeBSD – bps
Linux – sps
OpenBSD – operations
Solaris – bytes

示例:
⇒ vfs.dev.write[,operations]

spsops and bps在支持的平台上的spsops 和 bps 曾被限制为 8 个设备(7个独立的和1个 all). 从Zabbix 2.0.1 开始,这个限制提高到1024个设备(1023个独立的和1个all)。

如果默认为全部用于第一个参数,那么该key将返回摘要统计信息,包括所有块设备,如sda,sbd及其分区(sda1,sda2,sdb3 …)和基于这些块设备/分区的多个设备(MD raid)和基于这些设备/分区的逻辑卷(LVM)。在这种情况下,返回值只能作为相对值(动态时间)而不是绝对值。

LVM的支持从Zabbix 1.8.6开始。

直到Zabbix 1.8.6才能使用相关的设备名称(例如,sda)。 从那时起,可选的 /dev/前缀(例如/dev/sda)必须被使用。

旧名字: io[*]

vfs.dir.size[dir,<regex_incl>,<regex_excl>,<mode>,<max_depth>]
目录大小(以字节为单位)。 整数 dir – 目录的绝对路径
regex_incl – 正则表达式描述包含的文件名模式(如果为空则包括所有文件;空字符串是默认值)
regex_excl – 正则表达式描述用于排除的文件名模式(如果为空不排除任何文件;空字符串是默认值)
mode – 可能的值:
apparent (默认) – 获得明确的文件大小,而不是磁盘利用率(作为 du -sb dir), disk – 获取磁盘使用情况 (作为 du -s -B1 dir). 和du命令不同,vfs.dir.size 监控项在计算目录大小时会将隐藏的文件记录帐户 (作为 du -sb .[^.]* * 在 dir内).
max_depth – 要遍历的子目录的最大深度。 -1 (默认) – 无限, 0 – 不会遍历到子目录。
仅计算具有zabbix用户读取权限的目录。

示例:
⇒ vfs.dir.size[/tmp,log] – 计算/tmp中包含“log”的所有文件的大小
⇒ vfs.dir.size[/tmp,log,^.+\.old$] – 计算/tmp中包含“log”的所有文件的大小,不包括包含’.old’的文件

文件大小限制取决于大文件支持

vfs.file.cksum[file]
文件checksum校验,由UNIX cksum算法计算实现。 整型 file – 文件全路径 示例:
⇒ vfs.file.cksum[/etc/passwd]

返回值示例:
1938292000

旧名字: cksum

文件大小限制取决于大文件支持

vfs.file.contents[file,<encoding>]
检索文件的内容。 文本 file – 文件全路径
encoding – 编码页 标识符
如果文件为空或仅包含LF/CR字符,则返回空字符串。

Example:
⇒ vfs.file.contents[/etc/passwd]

此选项对文件限制是不超过64KB的文件。

Zabbix agent从版本2.0开始支持。

vfs.file.exists[file]
检测文件是否存在。 0 – 不存在

1 – 常规文件或到常规存在文件的link(符号或硬)

file – 文件的全路径 示例:
⇒ vfs.file.exists[/tmp/application.pid]

返回值取决于S_ISREG POSIX宏返回的值。

文件大小限制取决于 大文件支持

vfs.file.md5sum[file]
文件的MD5 checksum。 字符串(文件的MD5哈希) file – 文件的全路径 示例:
⇒ vfs.file.md5sum[/usr/local/etc/zabbix_agentd.conf]

返回值示例:
b5052decb577e0fffd622d6ddc017e82

此项目的文件大小限制(64 MB)在1.8.6版中已删除。

文件大小限制取决于 大文件支持

vfs.file.regexp[file,regexp,<encoding>,<start line>,<end line>,<output>]
查找文件中的字符串。 包含匹配字符串的行,或由可选输出参数指定的行。 file – 文件完整路径
regexp – GNU正则表达式
encoding – 编码页 标识符
start line – 满足查询到的第一行的数量(默认为文件的第1行)。
end line – 要查询的最后一行的数量(默认为文件的最后一行)。
output – 一个可选的输出格式模板。 \0转义序列替换为匹配的文本,而\N(其中N = 1 … 9)转义序列被替换为第N个匹配组(如果N超过捕获组的数量,则为空字符串)。
只返回第一个匹配行。\\如果没有行与表达式匹配,则返回空字符串。

使用输出参数的提取过程发生在代理端。

start lineend line 和output 参数从版本2.2开始支持。

示例:
⇒ vfs.file.regexp[/etc/passwd,zabbix]
⇒ vfs.file.regexp[/path/to/some/file,”([0-9]+)$”,,3,5,\1]
⇒ vfs.file.regexp[/etc/passwd,^zabbix:.:([0-9]+),,,,\1] → 获取用户Zabbix的ID

vfs.file.regmatch[file,regexp,<encoding>,<start line>,<end line>]
查询文件中的字符串。 0 – 不匹配

1 – 匹配

file – 文件全路径
regexp – GNU正则表达式
encoding – 编码页 标识符
start line – 满足查询到的第一行的数量(默认为文件的第1行)。
end line – 要查询的最后一行的数量(默认为文件的最后一行)。
start lineend line 和output 参数从版本2.2开始支持。

示例:
⇒ vfs.file.regmatch[/var/log/app.log,error]

vfs.file.size[file]
文件大小(按字节)。 整数 file – 文件全路径 文件必须具有Zabbix用户读的权限。

示例:
⇒ vfs.file.size[/var/log/syslog]

文件大小限制取决于 大文件支持

vfs.file.time[file,<mode>]
文件时间信息。 整数(Unix时间戳) file – 文件全路径
mode – 可能的值:
modify (默认) – 更新时间, access – 最后一次访问时间, change – 最后一次修改时间
示例:
⇒ vfs.file.time[/etc/passwd,modify]

文件大小限制取决于 大文件支持

vfs.fs.discovery
挂载的文件系统列表。用于低级发现。 JSON对象 Zabbix agent从版本2.0开始支持。

Zabbix agent从3.0开始支持{#FSDRIVETYPE} 宏

vfs.fs.inode[fs,<mode>]
inode的数量或百分比。 整型 – 针对数量

浮点值 – 针对百分比

fs – 文件系统
mode – 可能的值:
total (默认), freeusedpfree (剩余, 百分比), pused (已用的, 百分比)
示例:
⇒ vfs.fs.inode[/,pfree]

旧名字: vfs.fs.inode.free[*]vfs.fs.inode.pfree[*]vfs.fs.inode.total[*]

vfs.fs.size[fs,<mode>]
磁盘空间,以字节为单位,用百分比表示。 整数 – 针对字节

浮点- 针对百分比

fs – 文件系统
mode – 可能的值:
total (默认), freeusedpfree (剩余, 百分比), pused (已用, 百分比)
在安装卷的情况下,返回本地文件系统的磁盘空间。

示例:
⇒ vfs.fs.size[/tmp,free]

考虑到文件系统的保留空间,并且在使用自由模式时不包括。

旧名称: vfs.fs.free[*]vfs.fs.total[*]vfs.fs.used[*]vfs.fs.pfree[*]vfs.fs.pused[*]

vm.memory.size[<mode>]
内存大小,以字节为单位,以百分比表示。 整数 – 用于字节

浮点 – 用于百分比

mode – 可能的值:
total (默认), activeanonbufferscachedexecfilefreeinactivepinnedsharedwiredusedpused(已用, 百分比), availablepavailable (可用, 百分比)
此监控项接受3类参数:

1) total – 总内存量;
2) platform-特定内存类型: activeanonbufferscachedexecfilefreeinactivepinnedsharedwired;
3) user-用户级别估计使用和可用的内存量: usedpusedavailablepavailable.

请参阅vm.memory.size的了解更详细的参数描述.

旧名称: vm.memory.buffersvm.memory.cachedvm.memory.freevm.memory.sharedvm.memory.total

web.page.get[host,<path>,<port>]
获取网页内容。 网页源码 host – 主机名
path – HTML文档路径 (默认是/)
port – 端口号 (默认是80)
失败时返回一个空字符串。

示例:
⇒ web.page.get[www.zabbix.com,index.php,80]

web.page.perf[host,<path>,<port>]
加载完整网页的时间(以秒为单位)。 浮点 host – 主机名
path – HTML文档的路径 (默认是/)
port – 端口号(默认是80)
失败时返回一个空字符串。

示例:
⇒ web.page.perf[www.zabbix.com,index.php,80]

web.page.regexp[host,<path>,<port>,<regexp>,<length>,<output>]
在网页上查找字符串。 匹配的字符串,或由可选的“输出”参数指定 host – 主机名
path – HTML文档路径(默认是/)
port – 端口号(默认是80)
regexp – GNU正则表达式
length – 返回的最大字符数
output – 一个可选的输出格式模板。 \0转义序列替换为匹配的文本,而\N(其中N = 1 … 9)转义序列被替换为第N个匹配组(如果N超过捕获组的数量,则为空字符串)。
如果找不到匹配或失败,则返回一个空字符串。

使用output参数的内容在代理端上进行提取。

参数output从版本2.2开始支持

示例:
⇒ web.page.regexp[www.zabbix.com,index.php,80,OK,2]

一个特定于Linux的注意事项。 Zabbix Agent必须具有权限读取文件系统/proc。 来自www.grsecurity.org的内核修补程序限制非特权用户的访问权限。

未知

未知路途泛着恐惧
已知的就不再可怕
天空正蓝阳光正暖
无风
思绪却习惯性飞翔

爬满星光的夜
繁星
不知是谁的眼睛
企盼
映出哪样的倒影
或者
期待下一个黎明

花开时节刻满狂乱
光阴在走
亦步亦趋
无论哪一种旅途
终点都是如梦回首

漂泊不定的河
随波
淹没之前光景
又被
涌来的掩盖
于是
再也不记得本来样子和来时的路
不可抵挡
再涌向
下一个未知

于是
不知道出口
成就一生模样

泯灭

流动的风裹着沙尘的堡垒吹拂
深埋的情绪狂乱后
留下晦暗的星空和黑夜
每个故事都有记忆没有名字

燃烧的蜡和融化的雪
躯壳里徒剩冷月

无帆的船和无桨的船
本质上没有区别

漂流在海和未知的岸
沿路上都是残缺

盛开的花和枯萎的花
差的只是中间的时节

一片沙漠和一副山水
不同的是内在的枯竭

轻柔的风携着希望的源泉摇曳
无声的心绪触礁后
留下灰白的印迹未泯灭
每段光阴都有故事从不停歇

现实

抬起的手遮挡了阳光也遮住了视线
应该放下来吧

无声的躁动和累积的悲伤
并不是掌心里的命轮
以微笑不茫于世不惑于心
应该是淡泊吧

堆叠的伤感和虚幻的痛楚
并不是光阴里的故事
以勇气不憎于世不怠于心
应该是洒脱吧

何必掩饰何必解释
逆流顺流在开始结束牵强的收获
应该坦然相对吧

何必隐藏何必假装
阳光星光是白天黑夜彼此的向往
应该背起行囊吧

迈出的脚踩实了道路也勾勒出坚强
应该走下去吧

冥冥之中早有安排
现实如此不然怎样

Lynis

Lynis Community

Ensure that cURL, NSS, openssl, and CA certificates are up-to-date.

yum update ca-certificates curl nss openssl
Create /etc/yum.repos.d/cisofy-lynis.repo

[lynis]
name=CISOfy Software – Lynis package
baseurl=https://packages.cisofy.com/community/lynis/rpm/
enabled=1
gpgkey=https://packages.cisofy.com/keys/cisofy-software-rpms-public.key
gpgcheck=1
Next step is installing Lynis with yum.

yum makecache fast
yum install lynis

Common parameters

Lynis is started with at least one command, usually followed by one or more options.

Example Commands

Command Description
audit system Perform a system audit
show commands Show available Lynis commands
show help Provide a help screen
show profiles Display discovered profiles
show settings List all active settings from profiles
show version Display current Lynis version
The show command requires an up-to-date version of Lynis.

Options

Option Abbreviated Description
–auditor “Given name Surname” Assign an auditor name to the audit (report)
–cronjob Run Lynis as cronjob (includes -c -Q)
–debug Show debug information, useful for troubleshooting and development
–help -h Shows valid parameters
–man-page View man page
–no-colors Do not use any colors
–pentest Perform a penetration test scan (non-privileged)
–quick -Q Don’t wait for user input, except on errors
–quiet -q Only show warnings (includes –quick, but doesn’t wait)
–reverse-colors Use a different color scheme for lighter backgrounds
–verbose Show more screen output

[root@zabbix ~]# lynis audit system

[ Lynis 2.4.4 ]

################################################################################
  Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
  welcome to redistribute it under the terms of the GNU General Public License.
  See the LICENSE file for details about using this software.

  2007-2017, CISOfy - https://cisofy.com/lynis/
  Enterprise support available (compliance, plugins, interface and tools)
################################################################################


[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Checking profiles...                                      [ DONE ]

  ---------------------------------------------------
  Program version:           2.4.4
  Operating system:          Linux
  Operating system name:     CentOS
  Operating system version:  CentOS release 6.5 (Final)
  Kernel version:            2.6.32
  Hardware platform:         x86_64
  Hostname:                  zabbix
  ---------------------------------------------------
  Profiles:                  /etc/lynis/default.prf
  Log file:                  /var/log/lynis.log
  Report file:               /var/log/lynis-report.dat
  Report version:            1.0
  Plugin directory:          /usr/share/lynis/plugins
  ---------------------------------------------------
  Auditor:                   [Not Specified]
  Test category:             all
  Test group:                all
  ---------------------------------------------------
  - Program update status...                                  [ UPDATE AVAILABLE ]

      ===============================================================================
        Lynis update available
      ===============================================================================

        Current version : 244   Latest version : 248

        Please update to the latest version.
        New releases include additional features, bug fixes, tests and baselines.

        Download the latest version:
        Packages (DEB/RPM) -  https://packages.cisofy.com
        Website            -  https://cisofy.com/downloads/
        GitHub             -  https://github.com/CISOfy/lynis

      ===============================================================================


[+] System Tools
------------------------------------
  - Scanning available tools...
  - Checking system binaries...

[+] Plugins (phase 1)
------------------------------------
 Note: plugins have more extensive tests and may take several minutes to complete
  
  - Plugins enabled                                           [ NONE ]

[+] Boot and services
------------------------------------
  - Service Manager                                           [ SysV Init ]
  - Checking UEFI boot                                        [ DISABLED ]
  - Checking presence GRUB                                    [ OK ]
    - Checking for password protection                        [ WARNING ]
  - Check services at startup (chkconfig)                     [ DONE ]
        Result: found 37 services
  - Check startup files (permissions)                         [ OK ]

[+] Kernel
------------------------------------
  - Checking default run level                                [ 3 ]
  - Checking CPU support (NX/PAE)
    CPU support: PAE and/or NoeXecute supported               [ FOUND ]
  - Checking kernel version and release                       [ DONE ]
  - Checking kernel type                                      [ DONE ]
  - Checking loaded kernel modules                            [ DONE ]
      Found 46 active modules
  - Checking Linux kernel configuration file                  [ FOUND ]
  - Checking default I/O kernel scheduler                     [ FOUND ]
  - Checking core dumps configuration                         [ DISABLED ]
    - Checking setuid core dumps configuration                [ DEFAULT ]
  - Check if reboot is needed                                 [ NO ]

[+] Memory and Processes
------------------------------------
  - Checking /proc/meminfo                                    [ FOUND ]
  - Searching for dead/zombie processes                       [ OK ]
  - Searching for IO waiting processes                        [ OK ]

[+] Users, Groups and Authentication
------------------------------------
  - Administrator accounts                                    [ OK ]
  - Unique UIDs                                               [ OK ]
  - Consistency of group files (grpck)                        [ OK ]
  - Unique group IDs                                          [ OK ]
  - Unique group names                                        [ OK ]
  - Password file consistency                                 [ OK ]
  - Query system users (non daemons)                          [ DONE ]
  - NIS+ authentication support                               [ NOT ENABLED ]
  - NIS authentication support                                [ NOT ENABLED ]
  - sudoers file                                              [ FOUND ]
    - Check sudoers file permissions                          [ OK ]
  - PAM password strength tools                               [ OK ]
  - PAM configuration file (pam.conf)                         [ NOT FOUND ]
  - PAM configuration files (pam.d)                           [ FOUND ]
  - PAM modules                                               [ FOUND ]
  - Checking user password aging (minimum)                    [ DISABLED ]
  - User password aging (maximum)                             [ CONFIGURED ]
  - Checking expired passwords                                [ FOUND ]
  - Checking Linux single user mode authentication            [ WARNING ]
  - Determining default umask
    - umask (/etc/profile and /etc/profile.d)                 [ SUGGESTION ]
    - umask (/etc/login.defs)                                 [ SUGGESTION ]
    - umask (/etc/init.d/functions)                           [ SUGGESTION ]
  - LDAP authentication support                               [ NOT ENABLED ]
  - Logging failed login attempts                             [ DISABLED ]

[+] Shells
------------------------------------
  - Checking shells from /etc/shells
    Result: found 6 shells (valid shells: 6).
    - Session timeout settings/tools                          [ FOUND ]
  - Checking default umask values
    - Checking default umask in /etc/bashrc                   [ WEAK ]
    - Checking default umask in /etc/csh.cshrc                [ WEAK ]
    - Checking default umask in /etc/profile                  [ WEAK ]

[+] File systems
------------------------------------
  - Checking mount points
    - Checking /home mount point                              [ SUGGESTION ]
    - Checking /tmp mount point                               [ SUGGESTION ]
    - Checking /var mount point                               [ SUGGESTION ]
  - Query swap partitions (fstab)                             [ OK ]
  - Testing swap partitions                                   [ OK ]
  - Checking for old files in /tmp                            [ FOUND ]
  - Checking /tmp sticky bit                                  [ OK ]
  - ACL support root file system                              [ ENABLED ]
  - Mount options of /                                        [ OK ]
  - Mount options of /dev/shm                                 [ NON DEFAULT ]
  - Checking Locate database                                  [ FOUND ]
  - Disable kernel support of some filesystems
    - Discovered kernel modules: cramfs jffs2 squashfs udf 

[+] Storage
------------------------------------
  - Checking usb-storage driver (modprobe config)             [ NOT DISABLED ]
  - Checking USB devices authorization                        [ ENABLED ]
  - Checking firewire ohci driver (modprobe config)           [ NOT DISABLED ]

[+] NFS
------------------------------------
  - Query rpc registered programs                             [ DONE ]
  - Query NFS versions                                        [ DONE ]
  - Query NFS protocols                                       [ DONE ]
  - Check running NFS daemon                                  [ NOT FOUND ]

[+] Name services
------------------------------------
  - Checking search domains                                   [ FOUND ]
  - Searching DNS domain name                                 [ UNKNOWN ]
  - Checking /etc/hosts
    - Checking /etc/hosts (duplicates)                        [ OK ]
    - Checking /etc/hosts (hostname)                          [ OK ]
    - Checking /etc/hosts (localhost)                         [ OK ]
    - Checking /etc/hosts (localhost to IP)                   [ OK ]

[+] Ports and packages
------------------------------------
  - Searching package managers
    - Searching RPM package manager                           [ FOUND ]
      - Querying RPM package manager
    - Searching dpkg package manager                          [ FOUND ]
      - Querying package manager
    - Query unpurged packages                                 [ NONE ]
  - YUM package management consistency                        [ OK ]
  - Checking package database duplicates                      [ OK ]
  - Checking package database for problems                    [ OK ]
  - Checking missing security packages                        [ OK ]
  - Checking GPG checks (yum.conf)                            [ OK ]
  - Checking package audit tool                               [ INSTALLED ]
    Found: yum-security

[+] Networking
------------------------------------
  - Checking IPv6 configuration                               [ ENABLED ]
      Configuration method                                    [ AUTO ]
      IPv6 only                                               [ NO ]
  - Checking configured nameservers
    - Testing nameservers
        Nameserver: 114.114.114.114                           [ OK ]
        Nameserver: 114.114.115.115                           [ OK ]
    - Minimal of 2 responsive nameservers                     [ OK ]
  - Checking default gateway                                  [ DONE ]
  - Getting listening ports (TCP/UDP)                         [ DONE ]
      * Found 17 ports
  - Checking promiscuous interfaces                           [ OK ]
  - Checking waiting connections                              [ WARNING ]
  - Checking status DHCP client                               [ RUNNING ]
  - Checking for ARP monitoring software                      [ NOT FOUND ]

[+] Printers and Spools
------------------------------------
  - Checking cups daemon                                      [ NOT FOUND ]
  - Checking lp daemon                                        [ NOT RUNNING ]

[+] Software: e-mail and messaging
------------------------------------

[+] Software: firewalls
------------------------------------
  - Checking iptables kernel module                           [ FOUND ]
    - Checking iptables policies of chains                    [ FOUND ]
      - Checking chain INPUT (table: nfilter) policy          [ ACCEPT ]
    - Checking for empty ruleset                              [ WARNING ]
    - Checking for unused rules                               [ OK ]
  - Checking host based firewall                              [ ACTIVE ]

[+] Software: webserver
------------------------------------
  - Checking Apache (binary /usr/sbin/httpd)                  [ FOUND ]
      Info: Configuration file found (/etc/httpd/conf/httpd.conf)
      Info: Found 1 virtual hosts
    * Loadable modules                                        [ FOUND ]
        - Found 64 loadable modules
          mod_evasive: anti-DoS/brute force                   [ NOT FOUND ]
          mod_qos: anti-Slowloris                             [ NOT FOUND ]
          ModSecurity: web application firewall               [ NOT FOUND ]
  - Checking nginx                                            [ NOT FOUND ]

[+] SSH Support
------------------------------------
  - Checking running SSH daemon                               [ FOUND ]
    - Searching SSH configuration                             [ FOUND ]
    - SSH option: AllowTcpForwarding                          [ SUGGESTION ]
    - SSH option: ClientAliveCountMax                         [ SUGGESTION ]
    - SSH option: ClientAliveInterval                         [ OK ]
    - SSH option: Compression                                 [ SUGGESTION ]
    - SSH option: FingerprintHash                             [ NOT FOUND ]
    - SSH option: GatewayPorts                                [ OK ]
    - SSH option: IgnoreRhosts                                [ OK ]
    - SSH option: LoginGraceTime                              [ OK ]
    - SSH option: LogLevel                                    [ SUGGESTION ]
    - SSH option: MaxAuthTries                                [ SUGGESTION ]
    - SSH option: MaxSessions                                 [ SUGGESTION ]
    - SSH option: PermitRootLogin                             [ SUGGESTION ]
    - SSH option: PermitUserEnvironment                       [ OK ]
    - SSH option: PermitTunnel                                [ OK ]
    - SSH option: Port                                        [ OK ]
    - SSH option: PrintLastLog                                [ OK ]
    - SSH option: Protocol                                    [ OK ]
    - SSH option: StrictModes                                 [ OK ]
    - SSH option: TCPKeepAlive                                [ SUGGESTION ]
    - SSH option: UseDNS                                      [ OK ]
    - SSH option: UsePrivilegeSeparation                      [ SUGGESTION ]
    - SSH option: VerifyReverseMapping                        [ NOT FOUND ]
    - SSH option: X11Forwarding                               [ SUGGESTION ]
    - SSH option: AllowAgentForwarding                        [ NOT FOUND ]
    - SSH option: AllowUsers                                  [ NOT FOUND ]
    - SSH option: AllowGroups                                 [ NOT FOUND ]

[+] SNMP Support
------------------------------------
  - Checking running SNMP daemon                              [ FOUND ]
    - Checking SNMP configuration                             [ FOUND ]
  - Checking SNMP community strings                           [ OK ]

[+] Databases
------------------------------------
  - MySQL process status                                      [ FOUND ]
    - Checking empty MySQL root password                      [ WARNING ]

[+] LDAP Services
------------------------------------
  - Checking OpenLDAP instance                                [ NOT FOUND ]

[+] PHP
------------------------------------
  - Checking PHP                                              [ FOUND ]
    - Checking PHP disabled functions                         [ FOUND ]
    - Checking expose_php option                              [ ON ]
    - Checking enable_dl option                               [ OFF ]
    - Checking allow_url_fopen option                         [ ON ]
    - Checking allow_url_include option                       [ OFF ]

[+] Squid Support
------------------------------------
  - Checking running Squid daemon                             [ NOT FOUND ]

[+] Logging and files
------------------------------------
  - Checking for a running log daemon                         [ OK ]
    - Checking Syslog-NG status                               [ NOT FOUND ]
    - Checking systemd journal status                         [ NOT FOUND ]
    - Checking Metalog status                                 [ NOT FOUND ]
    - Checking RSyslog status                                 [ FOUND ]
    - Checking RFC 3195 daemon status                         [ NOT FOUND ]
    - Checking minilogd instances                             [ NOT FOUND ]
  - Checking logrotate presence                               [ OK ]
  - Checking remote logging                                   [ NOT ENABLED ]
  - Checking log directories (static list)                    [ DONE ]
  - Checking open log files                                   [ DONE ]
  - Checking deleted files in use                             [ FILES FOUND ]

[+] Insecure services
------------------------------------
  - Checking inetd status                                     [ NOT ACTIVE ]

[+] Banners and identification
------------------------------------
  - /etc/issue                                                [ FOUND ]
    - /etc/issue contents                                     [ WEAK ]
  - /etc/issue.net                                            [ FOUND ]
    - /etc/issue.net contents                                 [ WEAK ]

[+] Scheduled tasks
------------------------------------
  - Checking crontab/cronjob                                  [ DONE ]
  - Checking atd status                                       [ RUNNING ]
    - Checking at users                                       [ DONE ]
    - Checking at jobs                                        [ NONE ]

[+] Accounting
------------------------------------
  - Checking accounting information                           [ OK ]
  - Checking sysstat accounting data                          [ ENABLED ]
  - Checking auditd                                           [ NOT FOUND ]

[+] Time and Synchronization
------------------------------------

[+] Cryptography
------------------------------------
  - Checking for expired SSL certificates                     [ FOUND ]

[+] Virtualization
------------------------------------

[+] Containers
------------------------------------

[+] Security frameworks
------------------------------------
  - Checking presence AppArmor                                [ NOT FOUND ]
  - Checking presence SELinux                                 [ FOUND ]
    - Checking SELinux status                                 [ DISABLED ]
  - Checking presence grsecurity                              [ NOT FOUND ]
  - Checking for implemented MAC framework                    [ NONE ]

[+] Software: file integrity
------------------------------------
  - Checking file integrity tools
  - Checking presence integrity tool                          [ NOT FOUND ]

[+] Software: System tooling
------------------------------------
  - Checking automation tooling
    Found: SaltStack minion (salt-minion)                     [ FOUND ]
    Found: SaltStack master (salt-master)                     [ FOUND ]
  - Automation tooling                                        [ FOUND ]
  - Checking for IDS/IPS tooling                              [ NONE ]

[+] Software: Malware
------------------------------------

[+] File Permissions
------------------------------------
  - Starting file permissions check
    /etc/lilo.conf                                            [ NOT FOUND ]
    /root/.ssh                                                [ OK ]

[+] Home directories
------------------------------------
  - Checking shell history files                              [ OK ]

[+] Kernel Hardening
------------------------------------
  - Comparing sysctl key pairs with scan profile
    - kernel.core_uses_pid (exp: 1)                           [ OK ]
    - kernel.ctrl-alt-del (exp: 0)                            [ OK ]
    - kernel.exec-shield (exp: 1)                             [ OK ]
    - kernel.kptr_restrict (exp: 2)                           [ DIFFERENT ]
    - kernel.randomize_va_space (exp: 2)                      [ OK ]
    - kernel.sysrq (exp: 0)                                   [ OK ]
    - net.ipv4.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv4.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv4.conf.all.bootp_relay (exp: 0)                  [ OK ]
    - net.ipv4.conf.all.forwarding (exp: 0)                   [ OK ]
    - net.ipv4.conf.all.log_martians (exp: 1)                 [ DIFFERENT ]
    - net.ipv4.conf.all.mc_forwarding (exp: 0)                [ OK ]
    - net.ipv4.conf.all.proxy_arp (exp: 0)                    [ OK ]
    - net.ipv4.conf.all.rp_filter (exp: 1)                    [ OK ]
    - net.ipv4.conf.all.send_redirects (exp: 0)               [ DIFFERENT ]
    - net.ipv4.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv4.conf.default.accept_source_route (exp: 0)      [ OK ]
    - net.ipv4.conf.default.log_martians (exp: 1)             [ DIFFERENT ]
    - net.ipv4.icmp_echo_ignore_broadcasts (exp: 1)           [ OK ]
    - net.ipv4.icmp_ignore_bogus_error_responses (exp: 1)     [ OK ]
    - net.ipv4.tcp_syncookies (exp: 1)                        [ OK ]
    - net.ipv4.tcp_timestamps (exp: 0)                        [ OK ]
    - net.ipv6.conf.all.accept_redirects (exp: 0)             [ DIFFERENT ]
    - net.ipv6.conf.all.accept_source_route (exp: 0)          [ OK ]
    - net.ipv6.conf.default.accept_redirects (exp: 0)         [ DIFFERENT ]
    - net.ipv6.conf.default.accept_source_route (exp: 0)      [ OK ]

[+] Hardening
------------------------------------
    - Installed compiler(s)                                   [ FOUND ]
    - Installed malware scanner                               [ NOT FOUND ]
    - Installed malware scanner                               [ NOT FOUND ]

[+] Custom Tests
------------------------------------
  - Running custom tests...                                   [ NONE ]

[+] Plugins (phase 2)
------------------------------------

================================================================================

  -[ Lynis 2.4.4 Results ]-

  Warnings (4):
  ----------------------------
  ! No password set for single mode [AUTH-9308] 
      https://cisofy.com/controls/AUTH-9308/

  ! iptables module(s) loaded, but no rules active [FIRE-4512] 
      https://cisofy.com/controls/FIRE-4512/

  ! No MySQL root password set [DBS-1816] 
      https://cisofy.com/controls/DBS-1816/

  ! PHP option expose_php is possibly turned on, which can reveal useful information for attackers. [PHP-2372] 
      https://cisofy.com/controls/PHP-2372/

  Suggestions (42):
  ----------------------------
  * Version of Lynis outdated, consider upgrading to the latest version [LYNIS] 
      https://cisofy.com/controls/LYNIS/

  * Set a password on GRUB bootloader to prevent altering boot configuration (e.g. boot in single user mode without password) [BOOT-5122] 
      https://cisofy.com/controls/BOOT-5122/

  * Configure minimum password age in /etc/login.defs [AUTH-9286] 
      https://cisofy.com/controls/AUTH-9286/

  * Delete accounts which are no longer used [AUTH-9288] 
      https://cisofy.com/controls/AUTH-9288/

  * Set password for single user mode to minimize physical access attack surface [AUTH-9308] 
      https://cisofy.com/controls/AUTH-9308/

  * Default umask in /etc/profile or /etc/profile.d/custom.sh could be more strict (e.g. 027) [AUTH-9328] 
      https://cisofy.com/controls/AUTH-9328/

  * Default umask in /etc/login.defs could be more strict like 027 [AUTH-9328] 
      https://cisofy.com/controls/AUTH-9328/

  * To decrease the impact of a full /home file system, place /home on a separated partition [FILE-6310] 
      https://cisofy.com/controls/FILE-6310/

  * To decrease the impact of a full /tmp file system, place /tmp on a separated partition [FILE-6310] 
      https://cisofy.com/controls/FILE-6310/

  * To decrease the impact of a full /var file system, place /var on a separated partition [FILE-6310] 
      https://cisofy.com/controls/FILE-6310/

  * Check 4 files in /tmp which are older than 90 days [FILE-6354] 
      https://cisofy.com/controls/FILE-6354/

  * Disable drivers like USB storage when not used, to prevent unauthorized storage or data theft [STRG-1840] 
      https://cisofy.com/controls/STRG-1840/

  * Disable drivers like firewire storage when not used, to prevent unauthorized storage or data theft [STRG-1846] 
      https://cisofy.com/controls/STRG-1846/

  * Check DNS configuration for the dns domain name [NAME-4028] 
      https://cisofy.com/controls/NAME-4028/

  * Install debsums utility for the verification of packages with known good database. [PKGS-7370] 
      https://cisofy.com/controls/PKGS-7370/

  * Determine why system has many connections in WAIT state (23159) [NETW-3028] 
      https://cisofy.com/controls/NETW-3028/

  * Consider running ARP monitoring software (arpwatch,arpon) [NETW-3032] 
      https://cisofy.com/controls/NETW-3032/

  * Install Apache mod_evasive to guard webserver against DoS/brute force attempts [HTTP-6640] 
      https://cisofy.com/controls/HTTP-6640/

  * Install Apache mod_qos to guard webserver against Slowloris attacks [HTTP-6641] 
      https://cisofy.com/controls/HTTP-6641/

  * Install Apache modsecurity to guard webserver against web application attacks [HTTP-6643] 
      https://cisofy.com/controls/HTTP-6643/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : AllowTcpForwarding (YES --> NO)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : ClientAliveCountMax (3 --> 2)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : Compression (DELAYED --> NO)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : LogLevel (INFO --> VERBOSE)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : MaxAuthTries (3 --> 2)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : MaxSessions (10 --> 2)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : PermitRootLogin (YES --> NO)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : TCPKeepAlive (YES --> NO)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : UsePrivilegeSeparation (YES --> SANDBOX)
      https://cisofy.com/controls/SSH-7408/

  * Consider hardening SSH configuration [SSH-7408] 
    - Details  : X11Forwarding (YES --> NO)
      https://cisofy.com/controls/SSH-7408/

  * Change the expose_php line to: expose_php = Off [PHP-2372] 
      https://cisofy.com/controls/PHP-2372/

  * Change the allow_url_fopen line to: allow_url_fopen = Off, to disable downloads via PHP [PHP-2376] 
      https://cisofy.com/controls/PHP-2376/

  * Enable logging to an external logging host for archiving purposes and additional protection [LOGG-2154] 
      https://cisofy.com/controls/LOGG-2154/

  * Check what deleted files are still in use and why. [LOGG-2190] 
      https://cisofy.com/controls/LOGG-2190/

  * Add a legal banner to /etc/issue, to warn unauthorized users [BANN-7126] 
      https://cisofy.com/controls/BANN-7126/

  * Add legal banner to /etc/issue.net, to warn unauthorized users [BANN-7130] 
      https://cisofy.com/controls/BANN-7130/

  * Enable auditd to collect audit information [ACCT-9628] 
      https://cisofy.com/controls/ACCT-9628/

  * Check available certificates for expiration [CRYP-7902] 
      https://cisofy.com/controls/CRYP-7902/

  * Install a file integrity tool to monitor changes to critical and sensitive files [FINT-4350] 
      https://cisofy.com/controls/FINT-4350/

  * One or more sysctl values differ from the scan profile and could be tweaked [KRNL-6000] 
      https://cisofy.com/controls/KRNL-6000/

  * Harden compilers like restricting access to root user only [HRDN-7222] 
      https://cisofy.com/controls/HRDN-7222/

  * Harden the system by installing at least one malware scanner, to perform periodic file system scans [HRDN-7230] 
    - Solution : Install a tool like rkhunter, chkrootkit, OSSEC
      https://cisofy.com/controls/HRDN-7230/

  Follow-up:
  ----------------------------
  - Show details of a test (lynis show details TEST-ID)
  - Check the logfile for all details (less /var/log/lynis.log)
  - Read security controls texts (https://cisofy.com)
  - Use --upload to upload data to central system (Lynis Enterprise users)

================================================================================

  Lynis security scan details:

  Hardening index : 63 [############        ]
  Tests performed : 217
  Plugins enabled : 0

  Components:
  - Firewall               [V]
  - Malware scanner        [X]

  Lynis Modules:
  - Compliance Status      [?]
  - Security Audit         [V]
  - Vulnerability Scan     [V]

  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat

================================================================================
  Notice: Lynis update available
  Current version : 244    Latest version : 248
================================================================================

  Lynis 2.4.4

  Auditing, system hardening, and compliance for UNIX-based systems
  (Linux, macOS, BSD, and others)

  2007-2017, CISOfy - https://cisofy.com/lynis/
  Enterprise support available (compliance, plugins, interface and tools)

================================================================================

  [TIP]: Enhance Lynis audits by adding your settings to custom.prf (see /etc/lynis/default.prf for all settings)

[root@zabbix ~]# 

无心

时间是无情的镰刀
刹那割开梦的引线
追逐的路程似乎很短
所有的日子都被彷徨掩盖
初衷明明是云淡风轻的
却终究怠慢了它的温柔
矛盾和纠结反复上演
轻易葬掉希冀又黯淡的眸光
你若恨它
是说它并不属于自己
它的光也给了所有世人
或者该感谢它
截获那一缕属于自己的片段养分
黯然别离
清醒面对无情的火焰燃烧
轻轻掩埋掉年华和梦的画面
理性和感性交替灌溉
侵染成不舍和迷茫纠缠
悄无声息逃匿
自此沦落天涯
颓败、晦暗、挣扎
终是握不住一指流沙
冷面、无趣、木纳
春夏秋冬每一个当下

回答

我路过春天
聆听生的气息唤醒大地的脉搏
万物复苏
种子发芽

我路过昨天
遭遇梦的羁绊陷入黑色的深渊
染泥带水
一身邋遢

再来的春天毕竟是别个春天
万物总想活出希冀的样子
行至的明天仍是同样的昨天
故事总在光阴流逝里消亡

生命的旅途中
最怕未来给出那不愿的结局
不是畏惧
只是不想听它回话

猝不及防
日子活得一成不变
物是人非
感知的世界再也没有应答

无言

无念无想
算不算挥霍如梭流年
无悲无喜
是不是怠慢璀璨人间

有多少聚散
可以汇成珍贵故事
有多少风雨
可以咏成华丽诗篇

品烟尘涣散
享孤冷云天
犹怕清闲白昼
更畏黑色蔓延

平静的表象里暗涌流动
麻木的习惯这命运垂怜
无心嘲弄花开花谢的凄美
无意感伤春风秋雨的缠绵
你来我往的恩惠
亦远亦近的情弦

多少坚固顽强的信仰
终都败给猜想的空闲
多少飞蛾扑火的勇气
终都输给交错的时间

无忧无虑
是不是最初日子的决定
无声无息
算不算最后多情的无言

聚散 也许在人
风雨 总是看天

光阴

悄然滑落的
是光阴或其它什么
向阳花开背后的那一抹阴影
是无意拒绝的世界的暖意
虚无里空旷着毫无印记
焦虑中企盼着任什么流失
并没有失去
因那片荒芜里从没有什么生长
风来了
吹不起任何东西的声响
雨来了
淋不起任何生命的希望

闭上双眼仔细聆听
或许有些美妙优雅的旋律于不经意间绽放
望向眼前的空旷
念着向阳花开的时节
总有些什么已被遗落再也找不到

茫然回首
寂然颓丧
追寻避免追寻
希望偏离希望
黑夜里汲取不到小小太阳的明亮温暖
终还是可以依赖月色的怀抱慰藉飘荡
多么冠冕堂皇理直气壮的理由和借口
镜子里映出谁内心的波澜和不可原谅
不作为才是罪魁祸首
重来一次还不是一样
从没有用力紧握
指缝中溜走多么正常

GoAccess

Why GoAccess?

GoAccess was designed to be a fast, terminal-based log analyzer. Its core idea is to quickly analyze and view web server statistics in real time without needing to use your browser (great if you want to do a quick analysis of your access log via SSH, or if you simply love working in the terminal).

While the terminal output is the default output, it has the capability to generate a complete real-time HTML report, as well as a JSON , and CSV report.

You can see it more of a monitor command tool than anything else.

Installation

GoAccess can be compiled and used on *nix systems.

Download, extract and compile GoAccess with:
$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz
$ tar -xzvf goaccess-1.2.tar.gz
$ cd goaccess-1.2/
$ ./configure –enable-utf8 –enable-geoip=legacy
$ make
# make install

Build from GitHub (Development)
$ git clone https://github.com/allinurl/goaccess.git
$ cd goaccess
$ autoreconf -fiv
$ ./configure –enable-utf8 –enable-geoip=legacy
$ make
# make install

Docker

Prior to run GoAccess’ Docker container, place and set your GoAccess configuration file goaccess.conf inside your $HOME/data directory, which will be used by Docker to configure goaccess.

A minimal GoAccess configuration file for a Docker container with a real-time HTML report would need at least the following options to be set log-format , log-file , output , real-time-html and ws-url .

Note: Docker will bind to 0.0.0.0:7890, which means that GoAccess WebSocket server is using port 7890 and reachable from 127.0.0.1 in addition to your host IP. Ensure ws-url= points to the Docker host public IP address, otherwise it will attempt to establish a connection to localhost.

Once you have your configuration file all set, then you may run:
docker run –restart=always -d -p 7890:7890 \
-v “$HOME/data:/srv/data” \
-v “/path/to/logs:/srv/logs” \
-v “/path/to/report:/srv/report” \
allinurl/goaccess

If everything goes fine, the generated report should live under /path/to/report .

Another thing to note is that if you ever need to run it on a different port, e.g.,
docker run –restart=always -d -p 8080:7890 …

Then you can simply set the external port in ws-url . e.g., ws-url ws://localhost:8080 and keep GoAccess’ internal port in your config file set to port 7890 .

Distributions

It is easiest to install GoAccess on Linux using the preferred package manager of your Linux distribution. Please note that not all distributions will have the lastest version of GoAccess available

Debian/Ubuntu
# apt-get install goaccess

NOTE: It is likely this will install an outdated version of GoAccess. To make sure that you’re running the latest stable version of GoAccess see alternative option below.

Official GoAccess Debian & Ubuntu repository
$ echo “deb http://deb.goaccess.io/ $(lsb_release -cs) main” | sudo tee -a /etc/apt/sources.list.d/goaccess.list
$ wget -O – http://deb.goaccess.io/gnugpg.key | sudo apt-key add –
$ sudo apt-get update
$ sudo apt-get install goaccess

Note:
•For on-disk support (Trusty+ or Wheezy+), run: sudo apt-get install goaccess-tcb
• .deb packages in the official repo are available through https as well. You may need to install apt-transport-https .

Fedora
# yum install goaccess

Arch Linux
# pacman -S goaccess

Gentoo
# emerge net-analyzer/goaccess

OS X / Homebrew
# brew install goaccess

FreeBSD
# cd /usr/ports/sysutils/goaccess/ && make install clean
# pkg install sysutils/goaccess

OpenBSD
# cd /usr/ports/www/goaccess && make install clean
# pkg_add goaccess

OpenIndiana
# pkg install goaccess

pkgsrc (NetBSD, Solaris, SmartOS, …)
# pkgin install goaccess

Windows

GoAccess can be used in Windows through Cygwin. See Cygwin’s packages.

Storage

There are three storage options that can be used with GoAccess. Choosing one will depend on your environment and needs.

Default Hash Tables

In-memory storage provides better performance at the cost of limiting the dataset size to the amount of available physical memory. By default GoAccess uses in-memory hash tables. If your dataset can fit in memory, then this will perform fine. It has very good memory usage and pretty good performance.

Tokyo Cabinet On-Disk B+ Tree

Use this storage method for large datasets where it is not possible to fit everything in memory. The B+ tree database is slower than any of the hash databases since data has to be committed to disk. However, using an SSD greatly increases the performance. You may also use this storage method if you need data persistence to quickly load statistics at a later date.

Tokyo Cabinet On-Memory Hash Database

An alternative to the default hash tables. It uses generic typing and thus it’s performance in terms of memory and speed is average.

Command Line / Config Options

See options that can be supplied to the command or specified in the configuration file. If specified in the configuration file, long options need to be used without prepending — .

Examples

DIFFERENT OUTPUTS

To output to a terminal and generate an interactive report:
# goaccess access.log

To generate an HTML report:
# goaccess access.log -a > report.html

To generate a JSON report:
# goaccess access.log -a -d -o json > report.json

To generate a CSV file:
# goaccess access.log –no-csv-summary -o csv > report.csv

GoAccess also allows great flexibility for real-time filtering and parsing. For instance, to quickly diagnose issues by monitoring logs since goaccess was started:
# tail -f access.log | goaccess –

And even better, to filter while maintaining opened a pipe to preserve real-time analysis, we can make use of tail -f and a matching pattern tool such as grep , awk , sed , etc:
# tail -f access.log | grep -i –line-buffered ‘firefox’ | goaccess –log-format=COMBINED –

or to parse from the beginning of the file while maintaining the pipe opened and applying a filter
# tail -f -n +0 access.log | grep -i –line-buffered ‘firefox’ | goaccess -o report.html –real-time-html –

MULTIPLE LOG FILES

There are several ways to parse multiple logs with GoAccess. The simplest is to pass multiple log files to the command line:
# goaccess access.log access.log.1

It’s even possible to parse files from a pipe while reading regular files:
# cat access.log.2 | goaccess access.log access.log.1 –

Note that the single dash is appended to the command line to let GoAccess know that it should read from the pipe.

Now if we want to add more flexibility to GoAccess, we can do a series of pipes. For instance, if we would like to process all compressed log files access.log.*.gz in addition to the current log file, we can do:
# zcat access.log.*.gz | goaccess access.log –

Note: On Mac OS X, use gunzip -c instead of zcat .

REAL TIME HTML OUTPUT

GoAccess has the ability the output real-time data in the HTML report. You can even email the HTML file since it is composed of a single file with no external file dependencies, how neat is that!

The process of generating a real-time HTML report is very similar to the process of creating a static report. Only –real-time-html is needed to make it real-time.
# goaccess access.log -o /usr/share/nginx/html/your_site/report.html –real-time-html

By default, GoAccess will use the host name of the generated report. Optionally, you can specify the URL to which the client’s browser will connect to. See http://goaccess.io/faq for a more detailed example.
# goaccess access.log -o report.html –real-time-html –ws-url=goaccess.io

By default, GoAccess listens on port 7890, to use a different port other than 7890, you can specify it as (make sure the port is opened):
# goaccess access.log -o report.html –real-time-html –port=9870

And to bind the WebSocket server to a different address other than 0.0.0.0, you can specify it as:
# goaccess access.log -o report.html –real-time-html –addr=127.0.0.1

Note: To output real time data over a TLS/SSL connection, you need to use –ssl-cert= and –ssl-key= .

WORKING WITH DATES

Another useful pipe would be filtering dates out of the web log

The following will get all HTTP requests starting on 05/Dec/2010 until the end of the file.
# sed -n ‘/05\/Dec\/2010/,$ p’ access.log | goaccess -a –

or using relative dates such as yesterdays or tomorrows day:
# sed -n ‘/’$(date ‘+%d\/%b\/%Y’ -d ‘1 week ago’)’/,$ p’ access.log | goaccess -a –

If we want to parse only a certain time-frame from DATE a to DATE b, we can do:
# sed -n ‘/5\/Nov\/2010/,/5\/Dec\/2010/ p’ access.log | goaccess -a –

VIRTUAL HOSTS

Assuming your log contains the virtual host field. For instance:
vhost.io:80 8.8.4.4 – – [02/Mar/2016:08:14:04 -0600] “GET /shop HTTP/1.1” 200 615 “-” “Googlebot-Image/1.0”

And you would like to append the virtual host to the request in order to see which virtual host the top urls belong to
awk ‘$8=$1$8’ access.log | goaccess -a –

To exclude a list of virtual hosts you can do the following:
# grep -v “`cat exclude_vhost_list_file`” vhost_access.log | goaccess –

FILES & STATUS CODES

To parse specific pages, e.g., page views, html , htm , php , etc. within a request:
# awk ‘$7~/\.html|\.htm|\.php/’ access.log | goaccess –

Note, $7 is the request field for the common and combined log format, (without Virtual Host), if your log includes Virtual Host, then you probably want to use $8 instead. It’s best to check which field you are shooting for, e.g.:
# tail -10 access.log | awk ‘{print $8}’

Or to parse a specific status code, e.g., 500 (Internal Server Error):
# awk ‘$9~/500/’ access.log | goaccess –

SERVER

Also, it is worth pointing out that if we want to run GoAccess at lower priority, we can run it as:
# nice -n 19 goaccess -f access.log -a

and if you don’t want to install it on your server, you can still run it from your local machine:
# ssh root@server ‘cat /var/log/apache2/access.log’ | goaccess -a –

INCREMENTAL LOG PROCESSING

GoAccess has the ability to process logs incrementally through the on-disk B+Tree database. It works in the following way:
1.A data set must be persisted first with –keep-db-files , then the same data set can be loaded with –load-from-disk .
2.If new data is passed (piped or through a log file), it will append it to the original data set.
3.To preserve the data at all times, –keep-db-files must be used.
4.If –load-from-disk is used without –keep-db-files , database files will be deleted upon closing the program.

Examples
// last month access log
# goaccess access.log.1 –keep-db-files

then, load it with
// append this month access log, and preserve new data
# goaccess access.log –load-from-disk –keep-db-files

To read persisted data only (without parsing new data)
# goaccess –load-from-disk –keep-db-files

Contributing

Any help on GoAccess is welcome. The most helpful way is to try it out and give feedback. Feel free to use the Github issue tracker and pull requests to discuss and submit code changes.

Enjoy!
https://github.com/allinurl/goaccess