基于ELK 7.50搭建elastalert 监控报警和权限控制

ELK+监控报警全步骤

需求: 公司要求对出在windows服务器上的日志进行日志分析并根据关键字进行报警,并配置kibana权限控制。下面为详细步骤

环境: centos 7.6 elk版本7.50 (因为7.50版本自带xpack功能,可以满足kibana角色权限控制)

1. windows字符集改成utf8

#创建目录(有就不用创建)

C:\WINDOWS\SHELLNEW

#创建一个文本文档(txt) 复制到该目录:

#命名为:UTF8.txt

#文件 -> 另存为…

#选择编码格式为:UTF-8

WIN + R  ->regedit

#按以下路径找到ShellNew项:

HKEY_CLASSES_ROOT\.txt\ShellNew

#新建 -> 字符串

#命名为:FileName

#双击 FileName这项,输入:UTF8.txt

#按以下路径找到Notepad项:HKEY_CURRENT_USER\Software\Microsoft\Notepad

#更改以下两项值为:1(如果不存在,自行创建:右键 -> 新建 -> DWORD)

fSavePageSettings 

fSaveWindowPositions

2. 下载安装包并安装

1.1 filebeat
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-windows-x86_64.zip

#下载安装包,并解压至c:\filebeat

#进入c:\filebeat 修改配置文件filebeat.yml

############################################
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - c:\work\*
#  include_lines: ['Errors']
  tags: "ca"
- type: log
  enabled: true
  paths:
    - d:\work\*
 # json.keys_under_root: true   #如果日志文件本来就是json格式,需要下面2行参数
 # json.overwrite_keys: true
  tags: "json"

output.redis:
  hosts: ["192.168.2.23:6379"]
  key: "all"

setup.template.name: "nginx"
setup.template.pattern: "nginx_*"
setup.template.enabled: false
setup.template.overwrite: true
############################################

#启动powershell--> 以管理员身份运行

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1 #这是以windows服务形式启动

cd c:\filebeat

.\filebeat.exe -e -c filebeat.yml #这是以cmd形式启动,可以改成bat文件进行运行

#这边因为filebeat拉取数据直接给的redis,所以不需要配置elasticsearch的账号密码
1.2. redis
#安装redis

yum install -y redis

#修改配置文件

vim /etc/redis.conf

daemonize yes
bind 192.168.2.23
port 6379

#启动redis

systemctl start redis

netstat -ltnp |grep 6379

#测试登录
redis-cli -h 192.168.2.23
192.168.2.23:6379>
1.3 jdk
#下载jdk 8 为其他服务提供支持

wget https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.rpm

#安装jdk

rpm -ivh jdk-8u231-linux-x64.rpm
1.4. elasticsearch
# 安装es 7.5 需要安装openjdk 11(es 7.0以上对jdk版本要求升高了)

#下载安装包

wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz

#将安装包解压到/opt下

tar xf openjdk-11.0.1_linux-x64_bin.tar.gz -C /opt/

#修改配置文件

cd /usr/share/elasticsearch/bin

vi elasticsearch

添加以下下几行内容

#在后面句子后面添加
#   ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch
#配置自己的jdk11,但是并不影响整个系统的jdk环境变量,共存
export JAVA_HOME=/opt/jdk-11.0.1
export PATH=$JAVA_HOME/bin:$PATH

------------------

#在后面句子前面添加# manual parsing to find out, if process should be detached
#添加jdk判断
    if [ -x "$JAVA_HOME/bin/java" ]; then
            JAVA="/opt/jdk-11.0.1/bin/java"
    else
            JAVA=`which java`
    fi

# 修改JDK11支持的垃圾回收器

vim /etc/elasticsearch/jvm.options

#-XX:+UseConcMarkSweepGC  #注释这个
-XX:+UseG1GC                #添加这个

#修改启动配置

systemctl edit elasticsearch 

[Service]
LimitMEMLOCK=infinity
systemctl daemon-reload
systemctl restart elasticsearch

# 修改配置文件
grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml 

node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200

cluster.initial_master_nodes: ["node-1"]  #将注释取消,修改为这个
discovery.type: single-node   #或者是添加这个参数,意思是单节模式

#启动elasticsearch

systemctl start elasticsearch

########################
#如果启动失败,可以换成./elasticsearch 启动,但是这边是有坑的,不能使用root用户启动
#把elasticsearch用户改成普通可登陆用户(删除,重新创建)
#要把相关的文件chown 改成 elasticsearch
#把启动文件加入到bin/elasticsearch中

#[Service]里面添加下面三行
LimitMEMLOCK=infinity
systemctl daemon-reload
systemctl restart elasticsearch

#配置elasticsearch.yml 文件下面修改为
xpack.security.enabled: true
discovery.type: single-node
node.max_local_storage_nodes: 2

#启动 elasticsearch 

screen -S elasticsearch

cd /usr/share/elasticsearch/bin/

./elasticsearch

ctrl +a +d 

#验证是否启动

netstat -ltnp |grep 9200

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

#在web中验证是否启动成功,需要安装es-head

#修改ES配置文件支持跨域

http.cors.enabled: true 

http.cors.allow-origin: "*"

#方法1(通用)

# 使用docker安装 es-head

yum install docker -y

#下载es-head 

docker pull alivv/elasticsearch-head

#docker运行镜像

docker run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head

#方法2 (通用)

#安装各种依赖包

yum install nodejs npm openssl screen -y

#安装node和npm

node -v

npm  -v

npm install -g cnpm --registry=https://registry.npm.taobao.org

cd /opt/

#拉取git代码

git clone git://github.com/mobz/elasticsearch-head.git

#安装cnpm

cd elasticsearch-head/

cnpm install

#启动es-head

screen -S es-head

cnpm run start

Ctrl+A+D

#方法3 (仅适用于Google浏览器)

#右上角 --》 更多工具--》扩展程序 

#下载下来ElasticSearch Head0.1.4

#将下载下来的包改成es-head-0.1.4_0.crx 

1.5 开启xpack功能
#因为我们要实现kibana权限控制功能,那么第一步是要给es设置安全密码

vim /etc/elasticsearch/elasticsearch.yml

#开启自带的xpack的验证功能,在6.8版本以后,已经是自带xpack功能了,不需要花钱了
xpack.security.enabled: true

#配置单节点模式
discovery.type: single-node   #开启这个要关闭cluster那个选项

#执行程序

cd /usr/share/elasticsearch/bin 

./elasticsearch-setup-passwords interactive #输入y 输入密码,最少6位

#记住各自系统服务的账号和密码

#记住elasticsearch的账号和密码,因为在logstash、elastalert、kibana中都需要配置elasticsearch账号和密码

Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

#重启es

#登录es,发现已经需要输入账号密码了
1.6. logstash
#下载logstash安装包

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.rpm

#安装logstash

rpm -ivh logstash-7.5.0.rpm

#修改配置文件

vim /etc/logstash/conf.d/redis.conf

input {
  redis {
    host => "192.168.2.23"
    port => "6379"
    db => "0"
    key => "all"
    data_type => "list"
  }
}

#filter {
#  mutate {
#    convert => ["upstream_time", "float"]
#    convert => ["request_time", "float"]
#  }
#if "ca" in [message]{
#   grok {
#    match => { "message" => "%{TIMESTAMP_ISO8601:DATE_time}\s*%{USER:server_name}\S+\s*%{INT:level}\,(?<SNO>(.*))\,(?<excute_time>(.*))\;\s\S+%{GREEDYDATA:message_value}"
#   }
#        }
#    }
#}

filter {
  if "ca" in [tags]{
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:DATE_time}\s*%{USER:server_name}\S+\s*%{INT:level}\,(?<SNO>(.*))\,(?<excute_time>(.*))\;\s\S+%{GREEDYDATA:message_value}" }
  }
}
  if "json" in [tags]{
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:DATE_time}\s*\S+\<(?<MODULE>(.*))\>\s\S+\:\<(?<lv_num>(.*))\,(?<lv_SNO>(.*))\>\s\S+%{GREEDYDATA:message_value}" }
  }
}
}
output {
   stdout {}
   if "ca" in [tags] {
      elasticsearch {
        hosts => "http://192.168.2.23:9200"
        manage_template => false
        index => "ca-%{+yyyy.MM}"
        user => "elastic"
        password => "123456"
      }
    }
   if "json" in [tags] {
      elasticsearch {
        hosts => "http://192.168.2.23:9200"
        manage_template => false
        index => "km-%{+yyyy.MM}"
        user => "elastic"
        password => "123456"
      }
    }
#if "rrors" in [message] {     #mail插件,可以用来报警发邮件
#email {
#        port           =>    "25"
#        address        =>    "smtp.qq.com"
#        username       =>    "[email protected]"
#        password       =>    "xxxxxxxxxxxxxxxxxxxxxx"
#        authentication =>    "plain"
#        use_tls        =>    false
#        from           =>    "[email protected]"
#        subject        =>    "日志中有error信息"
#        to             =>    "[email protected]"
#        via            =>    "smtp"
#        body           =>    "错误日志: \n  %{message} "
#    }
#}

}

#安装screen后台运行程序

yum install screen -y 

#创建一个logstash的后台程序

screen -S logstash  

/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/redis.conf

#退出screen后台程序

ctrl + a + d

#查看screen后台程序

screen -ls

#进入指定的后台

screen -r scrren.id

1.6.1 将kibana的收集时间替换为系统日志时间
那如何解决上诉问题呢?请看下面??????

filter {
###替换@timestamp时间为日志真实时间######

#方法1
    grok {
        match => {  "message" => "(?<timestamp>%{TIMESTAMP_ISO8601})"  }
    }
    date {
        match => [ "timestamp", "ISO8601" ]
    }
    mutate {
         remove_field => [ "timestamp" ]
    }
}

#方法2 (自己写的实际的列子)

  if "json" in [tags]{
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:times}\s*\S+\<(?<MODULE>(.*))\>\s\S+\:\<(?<lv_num>(.*))\,(?<lv_SNO>(.*))\>\s\S+%{GREEDYDATA:message_value}" }
  }
  date {
        match => ["times", "ISO8601"]
        locale => "en"                      #下面这两行是定义时区,比中国时区多了八个小时
        timezone => "+00:00"                #一般不用这两种
        remove_field => "times"
    }
}
}
1.7. kibana
#下载rpm包

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.0-x86_64.rpm

#安装kibana

rpm -ivh kibana-7.5.0-x86_64.rpm

#编辑配置文件

[[email protected] ~]# grep "^[a-Z]" /etc/kibana/kibana.yml
server.port: 5601
server.host: "192.168.2.23"
elasticsearch.hosts: ["http://172.16.1.45:9200"]
kibana.index: ".kibana"
elasticsearch.username: "kibana"
elasticsearch.password: "123456"

#启动kibana

systemctl daemon-reload  #有的时候,会提示找不到服务,就重新reload一下

systemctl start kibana
1.8. 安装elastalert报警
#安装elastalert 首先环境需要替换成python3.6

#安装python3.6

 yum install python36 -y
 yum install python36-pip -y

#测试,显示python3.6已经安装成功,但是默认还是python2
python --version
 python3 --version

 #将默认python 修改为python3

 cd /usr/bin

 ls python*
python   python2.7         python2-config  python3.6         python3.6m         python3.6m-x86_64-config  python.bak

#重新创建软链接指向python3.6

rm -f python && ln -s python3.6 python

#修改完成后,测试版本

# python --version
Python 3.6.8

# python2 --version
Python 2.7.5

#但是这个时候,因为将python默认改成了3.6,所以系统里面依赖python2的都需要修改配置文件

#将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可。
vi /usr/bin/yum

#将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可。
vi /usr/libexec/urlgrabber-ext-down

#如果某些服务报错,需要修改python环境

#安装依赖包
yum install gcc libffi-devel python-devel openssl-devel4 -y

#安装pip

yum install python2-pip -y

yum install python3-pip-9.0.3-5.el7.noarch

pip install elastalert

#从github上拉取代码

git clone https://github.com/Yelp/elastalert.git

#安装模块

 pip install "setuptools>=11.3"

#安装各种包

cd elastalert

python setup.py install 

echo $? #验证一下是否正确

#如果es是7.0版本以上,如果提示报错,那边把以前的卸载掉,重新安装

pip uninstall elasticsearch

pip3 install 'elasticsearch>=7.0.0'

#这个时候已经多出来elastalert 几个命令了

#创建报警索引index_status

#编辑配置文件
cp config.yaml.example config.yaml

#配置文件如下:

# grep -Ev "^$|^#" config.yaml  

rules_folder: example_rules
run_every:
  minutes: 1
buffer_time:
  minutes: 15
es_host: 192.168.2.23
es_port: 9200
es_username: "elastic"
es_password: "123456"
writeback_index: elastalert_status
writeback_alias: elastalert_alerts
alert_time_limit:
  days: 2

#创建报错索引

elastalert-create-index

提示成功
1.9. 配置elastic报警规则
配置example_rules下面的rules

#这是一个样本

# grep -Ev "^$|^#" example_rules/test_rule.yaml
name: 你有一封来自elastalert的日志报警
type: frequency
index: ca*
num_events: 5
timeframe:
  minutes: 4
filter:
- term:
    level: "3"
alert:
- command
- email
new_style_string_format: true
command: ["/opt/test.sh", "elk nginx warning - freq 500 exceed, domain: {match[domain]}"]
alert_text: "报警来自 http://192.168.2.23:9100"
smtp_host: smtp.qq.com
smtp_port: 25
smtp_auth_file: /usr/local/elastalert/example_rules/smtp_auth_file.yaml
email_reply_to: [email protected]
from_addr: [email protected]
email:
- "[email protected]"

#再启动一个km的报警规则

#[[email protected]_server elastalert]# grep -Ev "^$|^#" example_rules/km_test.yaml
es_host: 192.168.2.23
es_port: 9200
name: 你有一封来自elastalert的km日志报警
type: frequency
index: km*
num_events: 5
timeframe:
  minutes: 4
filter:
- term:
    lv_num: "3"
alert:
- command
- email
new_style_string_format: true
command: ["/opt/test.sh", "elk nginx warning - freq 500 exceed, domain: {match[domain]}"]
alert_text: "报警来自 http://192.168.2.23:9100"
smtp_host: smtp.qq.com
smtp_port: 25
smtp_auth_file: /usr/local/elastalert/example_rules/smtp_auth_file.yaml   #创建此文件,并根据需求授权
email_reply_to: [email protected]
from_addr: [email protected]
email:
- "[email protected]"

#测试创建的规则语法

elastalert-test-rule example_rules/test_rule.yaml  #如果语法正确会看到hit [num] 字样

#启动规则,正式拉取报警信息

screen -S elastalert1

python -m elastalert.elastalert --verbose --rule example_rules/test_rule.yaml 

ctrl +a +d

#再拉取一个guiz
screen -S elastalert2

python -m elastalert.elastalert --verbose --rule example_rules/km_test.yaml

ctrl +a +d

#测试,在服务器日志上插入报警信息,查看是否可以双报警

1.10. 配置短信报警(配置command模块)
vim python3.py
from  datetime import datetime
import hashlib
import base64
import requests
import json
class YunTongXin():
    # 生产环境的base_url
    base_url = 'https://app.cloopen.com:8883'
    timestamp = None
    def __init__(self,accountSid,authToken,appId,templateId,notice=''):
        self.accountSid = accountSid  # 开发者主账户 ACCOUNT SID
        self.authToken = authToken # 账户授权令牌
        self.appId = appId # 应用id
        self.templateId = templateId # 模版id
        self.notice = notice # 提示信息

    # 构造请求url
    def gen_request_url(self,sig):
        self.url = self.base_url + '/2013-12-26/Accounts/{}/SMS/TemplateSMS?sig={}'.format(self.accountSid,sig)
        return self.url

    # 构造请求头
    def gen_request_header(self,timestamp):
        authorization = self.gen_authorization(timestamp)
        return {
            "Accept":"application/json",
            "Content-Type":"application/json;charset=utf-8",
            "Authorization":authorization
        }

    # 构建请求体
    def gen_request_body(self,phone,code):
        return {
            "to":phone,
            "appId":self.appId,
            "templateId":self.templateId,
            "datas":[code,"3"]
        }

    # 获取 Authorization
    def gen_authorization(self,timestamp):
        return self.base64_encode(self.accountSid+':'+timestamp)

    # base64加密
    def base64_encode(self,raw):
        return base64.b64encode(raw.encode('utf-8')).decode()

    # 生成签名文档
    def gen_sig(self,timestamp):
        return self.md5(self.accountSid+self.authToken+timestamp)

    # 生成时间戳
    def gen_timestamp(self):
        return  datetime.now().strftime('%Y%m%d%H%M%S')

    # md5加密
    def md5(self,raw):
        md5 = hashlib.md5()
        md5.update(raw.encode('utf-8'))
        return md5.hexdigest().upper()

    # 请求云通信接口
    def request_yuntongxin_api(self,url,header,body):
        response = requests.post(url,headers=header,data=body)
        return response.text

    # 运行
    def run(self,phone,code):
        # 获取时间戳
        timestamp = self.gen_timestamp()
        # 生成签名
        sig = self.gen_sig(timestamp)
        # 请求url
        url = self.gen_request_url(sig)
        # 请求头
        header = self.gen_request_header(timestamp)
        # 请求体
        body = self.gen_request_body(phone,code)
        #请求云通信接口
        data = self.request_yuntongxin_api(url,header,json.dumps(body))
        return data

if __name__ == '__main__':
    config = {
        "accountSid":"8a216da86eb206c4016exxxxxxx", # 主账户id,控制台首页获取
        "authToken":"e46b476182d94dc094e8xxxxxx", # 令牌
        "appId":"8a216da86eb206c4016ec46cxxxxxx", # 应用id
        "templateId":"1" # 模版id
    }
    phone = '199xxxxx'  # 手机号,如果是多个手机号用英文的,分割 比如说13200000000,13300000000
    code = '123' # 验证码
    yun = YunTongXin(**config)
    res = yun.run(phone,code)
    print(res)

  #将脚本内容放入command模块中,后置传参第一个位置

原文地址:https://www.cnblogs.com/dinghc/p/11994576.html

时间: 2024-10-08 18:35:37

基于ELK 7.50搭建elastalert 监控报警和权限控制的相关文章

web 服务器监控状态模块权限控制不严格,导致信息泄露

Apache  服务器状态监控模块开启默认是禁止外网访问,如果更改了权限,可能导致信息泄露 ExtendedStatus On <Location /server-status> SetHandler server-status Order deny,allow #   Deny from all Allow from .example.com </Location> 默认访问地址 http://site/server-status nginx  服务器状态监控模块开启需要配置lo

基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为"用户登录身份验证"."控制器方法权限控制"."界面元素权限控制"三种控制方式,可以为Web开发框架本身提供了很好用户访问控制和权限控制,使得用户界面呈现菜单.Web界面的按钮和内容.Action的提交控制,均能在总体权限功能分配和控制之下. 本篇文章主要细化这三个方面

项目一:第十二天 1、常见权限控制方式 2、基于shiro提供url拦截方式验证权限 3、在realm中授权 5、总结验证权限方式(四种) 6、用户注销7、基于treegrid实现菜单展示

1 课程计划 1. 常见权限控制方式 2. 基于shiro提供url拦截方式验证权限 3. 在realm中授权 4. 基于shiro提供注解方式验证权限 5. 总结验证权限方式(四种) 6. 用户注销 7. 基于treegrid实现菜单展示 2 常见的权限控制方式 2.1 url拦截实现权限控制 shiro基于过滤器实现的   2.2 注解方式实现权限控制 底层:代理技术     3 基于shiro的url拦截方式验权   <!-- 配置过滤器工厂 --> <bean id="

yum搭建nagios监控linux&&window及邮件报警

本文是小弟整合几位大神的文章,见笑@@ Linux利用sendmail和fetion发送报警通知 nagios监控windows主机 && linux主机 CentOS 5/6.X 使用 EPEL YUM源: 实验环境: 两台64位的centos-6.6 一台window-server-2003 安装网络yum源: centos5.x--32位 [[email protected] ~]# wget http://mirrors.yun-idc.com/epel/5/i386/epel-r

centos 搭建 nagios 监控系统.

linux下搭建nagios监控 一.什么是nagios 1.nagios 简介 Nagios是一个监视系统运行状态和网络信息的监视系统. Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等. Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态, 各种系统问题,以及日志等等. Nagios是十分受欢迎的.开源且免费的计算机及网络系统监控软件. Nagios是"Nagios Ain't Gonna Insi

巧用ELK快速实现网站流量监控可视化

前言 本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果. 业务规模 8个平台 100+台服务器 10+个集群分组 微服务600+ 用户N+ 面临问题 随着分布式微服务容器技术的发展,传统监控系统面临许多问题: 容器如何监控 微服务如何监控 集群性能如何进行分析计算 如何管理agent端大量配置脚本 这些都是传统监控所要面临的棘手问题,那么如何解决当前遇到的问题,GPE横空出世,后面会重点分析. 系统监控 目标群体:系统日志.服务

基于InfluxDB+Grafana打造大数据监控利器--转

这是一个大数据爆发的时代.面对信息的激流.多元化数据的涌现,我们在获取.存储.传输.理解.分析.应用.维护大数据时,无疑需要一种便捷的信息交流通道,以便快速.有效.准确地理解和驾驭这个过程.本文将通过时序数据库(InfluxDB)+Grafana的实践,来介绍如何将数据便捷地展现出来. 一.InfluxDB 开源的分布式时序.时间和指标数据库,使用Go语言编写,无需外部依赖.其中,时间序列数据库是数据格式里包含Timestamp字段的数据,比如某一时间用户上网流量.通话详单等.但是,有什么数据不

ELK日志平台搭建

ELK日志平台搭建 整体架构 整体架构主要分为5个模块,分别提供不同的功能: Filebeat:轻量级数据收集引擎.基于原先 Logstash-fowarder 的源码改造出来.是 ELK Stack 在 Agent 的第一选择.<br><br>Kafka:数据缓冲队列.作为消息队列解耦了处理过程,同时提高了可扩展性.具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃.<br><br>Logstash:数据

搭建zabbix监控系统详解

博文大纲:一.前言 二.zabbix监控架构三.搭建Zabbix监控服务器 一.前言 : 要想实时的了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的选择,而zabbix监控系统则在众多监控软件中脱颖而出. zabbix是一个基于web界面的企业级开源监控软件,Zabbix服务器需要LAMP环境或LNMP环境,提供分布式系统监控与网络监视功能.具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表.图表的绘制等功能.监测对象可以是Linux或Windo